PHP Ajax werkt niet naar behoren in for loop

Pagina: 1
Acties:
  • 441 views

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik dit script met succes zoals gevonden op www.dhtmlgoodies.com. Echter zodra ik het in een loop zet dan krijg ik de waarde niet retour in het veld 'bewerking_tarief'.

Formulier
<?php for ($i=0; $i<=$aantal_regels_corr; $i++)
{ ?>
<tr>
<td><input type="text" name="bewerking[]" size="25" value="<?php if($bewerking[$i] != ''){ echo $bewerking[$i]; } ?>" onkeyup="ajax_showOptions(this,'get_bewerking',event)")" /></td>
<td><input type="text" name="bewerking_tarief[]" size="5" value="<?php if($bewerking_tarief[$i] != ''){ echo $bewerking_tarief[$i]; } ?>" /></td>
<td><input type="text" name="uren[]" size="5" value="<?php if($uren[$i] != ''){ echo $uren[$i]; } ?>" /></td>
<td><input type="text" name="totaal[]" size="10" value="<?php if($totaal[$i] != ''){ echo $totaal[$i]; } ?>" /></td>
<td><input type="hidden" name="i_id[]" value="<?php if($i_id[$i] != ''){ echo $i_id[$i]; } ?>" /></td>
</tr>
<?php } ?>

1e ajax file (gedeelte)
function ajax_option_setValue(e,inputObj)
{
if(!inputObj)inputObj=this;
var tmpValue = inputObj.innerHTML;
if(ajax_list_MSIE)tmpValue = inputObj.innerText;else tmpValue = inputObj.textContent;
if(!tmpValue)tmpValue = inputObj.innerHTML;
ajax_list_activeInput.value = tmpValue;
if(document.getElementById(ajax_list_activeInput.name + '_tarief'))document.getElementById(ajax_list_activeInput.name + '_tarief').value = inputObj.id;
ajax_options_hide();
}

2e ajax file
<?
require('config.php');

if(isset($_GET['get_bewerking']) && isset($_GET['letters'])){
$letters = $_GET['letters'];
$letters = preg_replace("/[^a-z0-9 ]/si","",$letters);
$res = mysql_query("select omschrijving,tarief from sp_calc_werkzaamheden where omschrijving like '%".$letters."%'") or die(mysql_error());
while($inf = mysql_fetch_array($res)){
echo $inf["tarief"]."###".$inf["omschrijving"]."|";
}
}
?>

Is hier een oplossing voor? Ik heb een soortgelijk probleem kunnen oplossen echter krijg ik die oplossing hier niet werkend.
http://w3schools.invision...wtopic=...20&#entry156120

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:54

Janoz

Moderator Devschuur®

!litemod

Probeer eerst eens te begrijpen hoe het script werkt. Op zich is het namelijk redelijk logisch dat het script niet werkt. Hoe moet je ajax script weten welk veld aangepast moet worden wanneer er meerdere velden zijn die hetzelfde heten?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Logisch, zo heb ik het in het andere script opgelost door een extra id te gebruiken, bij dit script werkt dat niet.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:54

Janoz

Moderator Devschuur®

!litemod

Waarom niet? Wat heb je geprobeerd? Waarom werkte dat niet? Wat kreeg je? Wat verwachte je? Op welke manieren verschilde dit met elkaar? Waar zou dat verschil kunnen verklaren?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Janoz schreef op maandag 15 februari 2010 @ 20:48:
Waarom niet? Wat heb je geprobeerd? Waarom werkte dat niet? Wat kreeg je? Wat verwachte je? Op welke manieren verschilde dit met elkaar? Waar zou dat verschil kunnen verklaren?
^^ Wat hij zegt, maar ook wat er in onze Quickstart staat. Verder: als je code post zou je dan code tags willen gebruiken a.u.b?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Excues voor de eerdere onduidelijkheid.

Het pulldown menu 'bewerking' geeft naast een naam ook een tarief. Dit is wil ik terug laten komen in een tekstveld 'bewerking_tarief'.
Dit gaat zonder problemen met javascript echter ik wil dat nu in een for loop. Hier loop ik op vast. Met onderstaande code krijg ik de error 'options' is leeg of geen object

PHP:
1
2
3
4
5
6
7
function bewerking_uren(selectElement, targetElementId) 
{ 
    // select is een element 
   var selectValue = selectELement.options[selectElement.selectedIndex].value; 
   // van het id maken we een element 
   document.getElementById(targetElementId).value = selectValue; 
}


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php for ($i=0; $i<=$aantal_regels_corr; $i++) 
    { ?> 
    <tr> 
        <td><select name="bewerking" onChange="bewerking_uren(this.bewerking_tarief<?php echo $i ?>)"> 
            <option></option> 
            <?php 
                 $sql_bewerking = "SELECT omschrijving, tarief from sp_calc_werkzaamheden ORDER BY omschrijving ASC"; 
                $res_bewerking = mysql_query($sql_bewerking,$con);  
                  while ($row_bewerking = mysql_fetch_assoc($res_bewerking)){ 
             ?> 
                 <option><?php echo  $row_bewerking["omschrijving"] ?></option> 
            <?php } ?></select> 
        </td> 
        <td><input type="text" name="bewerking_tarief" id="bewerking_tarief<?php echo $i ?>" size="5" value="" /></td> 

    </tr> 
    <?php } ?>

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:03

Creepy

Tactical Espionage Splatterer

Maak je nu een typefout bij het overnemen van je code hier op het forum of heb je de regel waar je de foutmelding krijgt gewoon nog niet bekeken?

selectELement is niet hetzelfde als selectElement. Door puur naar de regel te kijken waar je de foutmelding krijgt of met firebug even een breakpoint op die regel te zetten kan je direct zien dat dit niet klopt. Gewoon een kwestie van de foutmelding bekeken en je regel code even bekijken:aka standaard debug werk.

Nog los daarvan heb je de quickstart die RobIII linkt gewoonweg nog niet bekeken omdat daarin duidelijk staat dat we iets meer verwachten dan alleen maar het probleem aan te geven. Wat nu nog mist is wat je nu zelf al hebt geprobeerd en wat daar niet mee lukte. Tuurlijk kan je vrij makkelijk over een typefout zoals deze heenkijken maar als je echt zelf even aan het debuggen was geslagen dan ben ik er van overtuigd dat je dit vrij snel had gezien.

[ Voor 32% gewijzigd door Creepy op 17-02-2010 14:16 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk ook nog even naar: Debuggen: Hoe doe ik dat?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.