controle voor insert

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

DDM

DDM

30/04/2006 13:28:00
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?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 hulp

PHP hulp

16/11/2024 15:21:17
 
Willem Jan Z

Willem Jan Z

30/04/2006 13:55:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?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 :)
 
DDM

DDM

30/04/2006 14:30:00
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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());
        }

?>
 
DDM

DDM

30/04/2006 16:28:00
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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());
        }

?>
 
Zim Zim

Zim Zim

30/04/2006 17:57:00
Quote Anchor link
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.
 
DDM

DDM

30/04/2006 22:13:00
Quote Anchor link
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 ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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());  

 }


?>
 
Zim Zim

Zim Zim

30/04/2006 23:07:00
Quote Anchor link
ik weet niet of dit helpt:
($cAantal == "0" && $cSapnr == "0"){

maar soms werkt dat bij mijn wel
 
DDM

DDM

02/05/2006 22:42:00
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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());  
        }
   ?>
 
Zim Zim

Zim Zim

02/05/2006 22:51:00
Quote Anchor link
Ik zit jou codes te bekijken, maar je doet
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $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.
 
DDM

DDM

02/05/2006 23:34:00
Quote Anchor link
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 :-)
 
Zim Zim

Zim Zim

02/05/2006 23:43:00
Quote Anchor link
ikke zou dat dit voorstellen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
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?
 
Frank -

Frank -

03/05/2006 16:50:00
Quote Anchor link
Quote:
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.
 
Joop

joop

03/05/2006 19:10:00
Quote Anchor link
in dit geval zou je ook een INSERT ... ON DUPLICATE KEY UPDATE query kunnen gebruiken
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
zo heb je aan 1 query genoeg
Gewijzigd op 01/01/1970 01:00:00 door joop
 
DDM

DDM

03/05/2006 22:40:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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());  
?>
 
Joop

joop

03/05/2006 23:56:00
Quote Anchor link
nog een spatie voor ON DUPLICATE KEY UPDATE
 
Frank -

Frank -

05/05/2006 16:11:00
Quote Anchor link
@Joop: Bedankt! Deze kende ik niet, weer wat geleerd.
 
DDM

DDM

05/05/2006 18:59:00
Quote Anchor link
volgens mij doe ik iets verkeerd want het wil toch niet lukken met die spatie hoor :-(
 
- SanThe -

- SanThe -

05/05/2006 19:45:00
Quote Anchor link
Duidelijk zijn helpt. Je antwoordt nogal vaag.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Joop

joop

05/05/2006 19:47:00
Quote Anchor link
misschien ligt het aan je mysql versie. vanaf 4.1.0 kan je ON DUPLICATE KEY UPDATE gebruiken
 
DDM

DDM

05/05/2006 20:39:00
Quote Anchor link
de server heeft versie 4.0.24 :-(
Hoe kan ik het dan wel anders oplossen ?
 
Frank -

Frank -

05/05/2006 20:46:00
Quote Anchor link
Gewoon een INSERT gebruiken en wanneer dit fout gaat (controleren met een if-constructie op de duplicaat-foutmelding), een UPDATE query de deur uitsturen.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.