Hallo

Ik wil graag eerst een controle doen of de ingevulde gegevens er al inzitten, zo niet deze toevoegen, indien al aanwezig updaten
Ik heb hetvolgende maar de insert werkt gewoon niet meer vanaf ik de code aan de //++++ tekens heb toegevoegd

<?PHP
$query = mysql_query("SELECT categorie_id_elek AS id, naam, sapnr, beschrijving, foto, basis_eenheid, bestel_eenheid, inhoud  FROM bestel_elek_producten WHERE categorie_id_elek = " . $_GET['categorie_id_elek']);
while($x = mysql_fetch_array($query)) {
echo ('<tr><th bgcolor="#CCCCCC">'.$x['sapnr'].'</th>
<th bgcolor="#CCCCCC">'.$x['naam'].'</th>
<th bgcolor="#CCCCCC" width="60" height="60">'.$x['foto'].'</th>
<th bgcolor="#CCCCCC">'.$x['basis_eenheid'].'</th>
<th bgcolor="#CCCCCC">'.$x['bestel_eenheid'].'</th>
<th bgcolor="#CCCCCC">'.$x['inhoud'].'</th>
<th bgcolor="#CCCCCC"><form action="'. $PHP_SELF.'" method="post">
<input type="text" name="aantal" value="1" size="1" maxlength="2">
<input type="hidden" name="sapnr" value="'.$x['sapnr'].'">
<input type="hidden" name="productnaam" value="'.$x['naam'].'">
<input type="hidden" name="basis_eenheid" value="'.$x['basis_eenheid'].'">
<input type="hidden" name="bestel_eenheid" value="'.$x['bestel_eenheid'].'">
<input type="hidden" name="ploegnummer" value="'. $_SESSION["ploegnummer"] .'">
<input type="hidden" name="inhoud" value="'.$x['inhoud'].'">
<input type="submit" name="form_van" value="Voeg Toe">
</form></th>');
}
//+++++++++++++++++++++++++++
$res1= mysql_query("SELECT ploegnummer, productnaam, sapnr, aantal, basis_eenheid, bestel_eenheid, inhoud FROM bestel_wagentje_elek WHERE ploegnummer ='". $_SESSION["ploegnummer"]."'");
while($x2 = mysql_fetch_array($res1)) {
$aantal = $x2['aantal'];
$sapnr = $x['sapnr'];
}
 if ($aantal and $sapnr > 0){

  $update="UPDATE bestel_wagentje_elek SET aantal = $aantal ";
  $update.="WHERE ploegnummer ='". $_SESSION["ploegnummer"]."' ";
  $update.="AND sapnr = $sapnr";
  $updated = mysql_query($update) or die ("FOUT: " . mysql_error());
}
   elseif($aantal and $sapnr == 0){     
	    $query2="INSERT INTO bestel_wagentje_elek (wagentje_id_elek, ploegnummer, productnaam, sapnr, aantal, basis_eenheid, bestel_eenheid, inhoud) ";
        $query2 .= "VALUES ('', '$ploegnummer', '$productnaam', '$sapnr', '$aantal', '$basis_eenheid', '$bestel_eenheid', '$inhoud')"; 
        $result = mysql_query($query2) or die ("FOUT: " . mysql_error()); 
		}
?>
Ik wil graag eerst een controle doen of de ingevulde gegevens er al inzitten, zo niet deze toevoegen, indien al aanwezig updaten

Wanneer de betrokken gegevens UNIQUE zijn, kun je boel altijd gewoon in de database zetten: INSERT. Het gaat vanzelf fout wanneer de gegevens al aanwezig zijn. Deze foutmelding kun je opvangen met mysql_errno(), zie ook http://dev.mysql.com/doc/refman/4.1/en/error-messages-server.html

In het geval van duplicaat, ga je de boel updaten.

In dit geval heb je slechts 2 queries nodig en een controle op de eventuele foutmelding die je krijgt. Het scheelt je 1 query en je database is beter beschermt tegen datacorruptie.
Ik heb het volgende geprobeerd maar dan krijg ik deze foutmelding
FOUT: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON DUPLICATE KEY UPDATE aantal =' at line 1

<?PHP
$query2="INSERT INTO bestel_wagentje_elek (ploegnummer, productnaam, sapnr, aantal, basis_eenheid, bestel_eenheid, inhoud) ";
$query2 .= "VALUES ('$ploegnummer', '$productnaam', '$sapnr', '$aantal', '$basis_eenheid', '$bestel_eenheid', '$inhoud')";
$query2 .= "ON DUPLICATE KEY UPDATE aantal = $aantal ";
$result = mysql_query($query2) or die ("FOUT: " . mysql_error());
?>
nog een spatie voor ON DUPLICATE KEY UPDATE
@Joop: Bedankt! Deze kende ik niet, weer wat geleerd.
volgens mij doe ik iets verkeerd want het wil toch niet lukken met die spatie hoor :-(
Duidelijk zijn helpt. Je antwoordt nogal vaag.
misschien ligt het aan je mysql versie. vanaf 4.1.0 kan je ON DUPLICATE KEY UPDATE gebruiken
de server heeft versie 4.0.24 :-(
Hoe kan ik het dan wel anders oplossen ?
Gewoon een INSERT gebruiken en wanneer dit fout gaat (controleren met een if-constructie op de duplicaat-foutmelding), een UPDATE query de deur uitsturen.

Reageren