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()); 
		}
?>
<?php
if($aantal == 0 && $sapnr == 0) {
?>

En bij de elseif() ook deze opbouw. Een veel gemaakte, maar ook logische fout. Het lijkt inderdaad best logisch om 'als deze en deze 0 zijn' te doen, maar het moet echt uitgebreid 'als deze is 0 en deze is 0'. Even wennen, maar zodra je het weet is het een eitje :)
hallo

Ik heb het geprobeerd zoals je aangeeft maar hij doet nog steeds niets :-(
Het leek me inderdaad logisch zo, maar ja ben nog aan het leren natuurlijk :-)
Ik krijg geen gegevens meer in de database.
Ik heb het ook nog eens even anders gedaan

<?PHP
$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'];
$ploegnummer = $_SESSION["ploegnummer"];
}
 if ($aantal > 0 && $sapnr > 0){

  $update="UPDATE bestel_wagentje_elek SET aantal = '". $aantal ."' ";
  $update.="WHERE ploegnummer ='". $ploegnummer."' ";
  $update.="AND sapnr = '".$sapnr."'";
  $updated = mysql_query($update) or die ("FOUT: " . mysql_error());
}
   elseif($aantal == 0 && $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()); 
		}
?>
hallo

Ik heb het geprobeerd zoals je aangeeft maar hij doet nog steeds niets :-(
Het leek me inderdaad logisch zo, maar ja ben nog aan het leren natuurlijk :-)
Ik krijg geen gegevens meer in de database.
Ik heb het ook nog eens even anders gedaan

<?PHP
$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'];
$ploegnummer = $_SESSION["ploegnummer"];
}
 if ($aantal > 0 && $sapnr > 0){

  $update="UPDATE bestel_wagentje_elek SET aantal = '". $aantal ."' ";
  $update.="WHERE ploegnummer ='". $ploegnummer."' ";
  $update.="AND sapnr = '".$sapnr."'";
  $updated = mysql_query($update) or die ("FOUT: " . mysql_error());
}
   elseif($aantal == 0 && $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()); 
		}
?>
2x dezelfde post?

Probeer eens: if ($aantal >= 0 && $sapnr >= 0){

Want nu als $aantal 0 is gaat hij wel door.

En ik kweet niet wat voor gegevens $aantal of $sapnr. Als je wilt dat als er geen waarde in een van die 2 staat zou ik empty($aantal) gebruiken.
IK heb onderstaande en het werkt met de update maar niet met insert
Ik heb ook eens echo $cAantal; gedaan voor if en dan krijg je het laatste aantal dat in de database zit dus dat zal de reden zijn dat deze niet insert
Wat moet daar aan gebeuren om hem wel te laten inserten ?


<?php

$res1= mysql_query("SELECT sapnr, aantal FROM bestel_wagentje_elek WHERE ploegnummer ='". $_SESSION["ploegnummer"]."'");   
while($x2 = mysql_fetch_array($res1)) {   
$cAantal = $x2['aantal'];   
$cSapnr = $x2['sapnr'];   
$ploegnummer = $_SESSION["ploegnummer"];   
  }
  echo $cAantal;
if($cAantal > 0 && $cSapnr > 0){        
   $update="UPDATE bestel_wagentje_elek SET aantal = '". $aantal ."' ";   
  $update.="WHERE ploegnummer ='". $ploegnummer."' ";   
  $update.="AND sapnr = '".$sapnr."'";   
  $updated = mysql_query($update) or die ("FOUT: " . mysql_error());  
        }   
elseif 
($cAantal == 0 && $cSapnr == 0){ 
       $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')";    
        $result = mysql_query($query2) or die ("FOUT: " . mysql_error());   

 }

?>
ik weet niet of dit helpt:
($cAantal == "0" && $cSapnr == "0"){

maar soms werkt dat bij mijn wel
neen werkt ook niet

Ik heb het nu zo gedaan als onderstaand zodat hij een error geeft als sapnr al gegevens bevat maar hoe kan ik er dan voor zorgen dat als hij deze error krijgt hij een update doet ?
Ik heb het veld sapnr UNIQUE gemaakt.


<?PHP
$res1= mysql_query("SELECT sapnr , aantal FROM bestel_wagentje_elek WHERE ploegnummer ='". $_SESSION["ploegnummer"]."'");   
while($x2 = mysql_fetch_array($res1)) {   
$cAantal = $x2['aantal'];   
$cSapnr = $x2['sapnr'];   
$ploegnummer = $_SESSION["ploegnummer"];   
 
//  echo $cAantal. "<br>";
// echo $cSapnr . "<br>";
 }
$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')";    
        $result = mysql_query($query2) or die ("FOUT: " . mysql_error());  

if($cAantal > 0 && $cSapnr > 0){        
   $update="UPDATE bestel_wagentje_elek SET aantal = '". $aantal ."' ";   
  $update.="WHERE ploegnummer ='". $ploegnummer."' ";   
  $update.="AND sapnr = '".$sapnr."'";   
  $updated = mysql_query($update) or die ("FOUT: " . mysql_error());  
        }   ?>
Ik zit jou codes te bekijken, maar je doet <? $ploegnummer = $_SESSION["ploegnummer"]; ?> moet je niet eerst je sessie starten bovenaan je pagina voordat je iets met een sessie kan doen?

[ps wat krijg je als je echo $cAantal en $cSapnr doet? (ben ffies benieuwd. kan ik me beter bekijken wat hij presies doet.)]

nog ffies naar je vraag 'hoe kan ik er dan voor zorgen dat als hij deze error krijgt hij een update doet ?' Als je een update gedaan heeft maar het niet doet.. een update doen? of wil je als er geen waardes instaan (niks kan vinden met SELECT) een error (een insert doet ipv update?).

Sorry dat ik zo veel lul of vraag, maar ik probeer het ffies duidelijk voor mezlef te krijgen.
Dit is maar een stukje script , de sessie wordt wel degelijk bovenaan gestart.
Als ik echo $cAantal en $cSapnr krijg ik de laatste gegevens die in de database staan.
Ik wil de gegevens bijwerken met update als deze zich al in de database bevinden en anders gewoon inserten als deze nog niet in de database zitten
Ik hoop dat ik nu een beetje duidelijker ben :-)
ikke zou dat dit voorstellen:

<?PHP
$res1= mysql_query("SELECT sapnr , aantal FROM bestel_wagentje_elek WHERE ploegnummer ='". $_SESSION["ploegnummer"]."'");
if(mysql_num_rows($res1) > 0) {
while($x2 = mysql_fetch_array($res1)) {
$cAantal = $x2['aantal'];
$cSapnr = $x2['sapnr'];
$ploegnummer = $_SESSION["ploegnummer"];

$update="UPDATE bestel_wagentje_elek SET aantal = '". $aantal ."' ";
$update.="WHERE ploegnummer ='". $ploegnummer."' ";
$update.="AND sapnr = '".$sapnr."'";
$updated = mysql_query($update) or die ("FOUT: " . mysql_error());
}
} else {

$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')";
$result = mysql_query($query2) or die ("FOUT: " . mysql_error());
}
?>

met dus: <?
if(mysql_num_rows($res1) > 0) {
?>
dit erbij. Checked of de data er al instaat. Zo niet (niet groter als 0, dus ga naar else....-> update)

Snap je het of bedoel je het anders?

Reageren