Om AJAX te leren probeer ik een voorraad programmaatje te maken, waarbij dmv een AJAX-functie de lijst met artikelen gefilterd kan worden.
Per record van de database tabel heb ik een formulier gedefinieerd, waarbij met een submit-knop het aantal kan worden doorgegeven.
In het hoofdscherm werkt dit prima, maar als het AJAX-filter zoek.php gebruikt wordt werkt het niet meer.
Wat doe ik fout?

hoofd.php

<script type="text/javascript">
function showHint(actie,zoek)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","zoek.php?actie="+actie+"&zoek="+zoek,true);
xmlhttp.send();
}
</script>
<center>
<h1>Voorraad</h1>
<?php
$Knop = $_POST["Knop"];
$Actie = $_POST["Actie"];
$db = mysqli_connect('localhost','voorraad','voorraad','voorraad');
if ($Actie == 'Uit') {
   $artikel = $_POST["artikel"];
   $totaal = $_POST["totaal"];
   $aantal = $_POST["aantal"];
   if ($totaal >= $aantal and $aantal > 0) {
      $sql = "insert into voorraad
               (artikel,aantal)
              values
               ('$artikel',$aantal*(-1))";
      $result = mysqli_query($db, $sql);
   } else {
      echo "<script>alert(\"Aantal $aantal is niet goed.\");</script>";
   }
}
?>
<br>
<form action='$_SERVER[SCRIPT_NAME]' method='POST' STYLE='margin: 0px; padding: 0px;'>
<table border=1 cellspacing=0 cellpadding=5>
<tr>
<td>Zoek:<td><input type='text' size=20 id='zoek' name='zoek' onkeyup='showHint("uit",this.value)'>
</tr>
</table>
</form>
<span id='txtHint'>
<table border=1 cellspacing=0 cellpadding=5>
<tr><td>Artikel<td>Totaal<td>Aantal</tr>
<?php
$sql    = "select count(0) as aantalgevonden from voorraad";
$result = mysqli_query($db, $sql);
$myrow  = mysqli_fetch_assoc($result);
$aantalgevonden = $myrow["aantalgevonden"];
if ($aantalgevonden<>0) {
   $sql =  "select artikel,sum(aantal) as totaal
            from voorraad
            group by artikel
            having sum(aantal)>0
            order by artikel";
   $result = mysqli_query($db, $sql);
   while ($myrow = mysqli_fetch_assoc($result)) {
      $artikel       = $myrow["artikel"];
      $totaal        = $myrow["totaal"];

      echo "<form action='$_SERVER[SCRIPT_NAME]' method='POST' STYLE='margin: 0px; padding: 0px;'>
            <tr>
            <td>$artikel<input type='hidden' name='artikel' value='$artikel'>
            <td>$totaal<input type='hidden' name='totaal' value='$totaal'>
            <td><input type='text' name='aantal' id='aantal' size=5> <input type='submit' value='ok'>
                  <input type='hidden' name='Knop' value='Uit'>
                  <input type='hidden' name='Actie' value='Uit'>
            </tr>
            </form>
      ";
   }
}
?>
</table>
</span>


zoek.php

<?php
$actie = $_GET ["actie"];
$zoek = $_GET ["zoek"];
if ($zoek == " ") {
   $zoek = "";
}
if ($actie == 'uit') {
   echo "<table border=1 cellspacing=0 cellpadding=5>
         <tr><td>Artikel<td>Totaal<td>Aantal</tr>";
   $db = mysqli_connect('localhost','voorraad','voorraad','voorraad');
   $sql =  "select artikel,sum(aantal) as totaal
            from voorraad
            where artikel like '%".$zoek."%'
            group by artikel
            having sum(aantal)>0
            order by artikel";
   $result = mysqli_query($db, $sql);
   while ($myrow = mysqli_fetch_assoc($result)) {
      $artikel       = $myrow["artikel"];
      $totaal        = $myrow["totaal"];
      echo "<form name='uit' action='$_SERVER[SCRIPT_NAME]' method='POST' STYLE='margin: 0px; padding: 0px;'>
            <tr>
            <td>$artikel<input type='hidden' name='artikel' value='$artikel'>
            <td>$totaal<input type='hidden' name='totaal' value='$totaal'>
            <td><input type='text' name='aantal' id='aantal' size=5>  <input type='submit' name='knop' value='Ok'>
            </tr>
            </form>
            ";
   }
   echo "</table>";
}
?>

Reageren