19. september 2005 - 18:34
Der er
23 kommentarer og 1 løsning
Opdatering af flere ens rækker i mysql
Hey. Har denne her order.php som viser indholdet af nogle ting en bruger kan lagt i sin kurv.. Men jeg ved ikke helt hvordan jeg gør så de kan ændte antallet eller slette i en eller flere af de tilføjet vare ved at trykke på opdater min kode som henter dataen ov viser det i en liste: order.php --kodestart-- <? if($s_navn && $s_password) { ?><head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; } --> </style> </head><form action="" method="post"> <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td> <td></td><td></td><td></td></tr> <? include("acon.php"); $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ()); if(mysql_num_rows($query) == "0"){ echo "Ingen vare I kurven"; } $count = 0; while($row = mysql_fetch_array($query)) { $count++; if($count%2) { echo "<tr bgcolor=\"#ADB09D\"><td width=\"\" align=\"left\"><a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td><td>Antal: <input name=\"vantal\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td><td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } else { echo "<tr><td width=\"\" align=\"left\"><a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td><td>Antal: <input name=\"vantal\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td><td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } } $sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)"; $query = mysql_query($sql) or die (mysql_error()); $row = mysql_fetch_assoc($query); echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>"; ?> <tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater"></td> <td> </td> <td></td><td></td></tr> </table> </form> <? } else { echo "Login er krævet"; } ?> ---kodeslut---
Annonceindlæg fra Barco
19. september 2005 - 19:07
#1
Du kunne jo trække info ud i en form, og så submitte disse data på ny! Hvis f.eks. f.eks. antal = 0, så slet data! Er antal != gammelt_antal, så opdatere vi info, osv. Kan du følge mig?
19. september 2005 - 19:10
#2
Kan godt følge dig. men kan ikke lige lure hvordan man koder det.
19. september 2005 - 19:16
#3
if POST = opdate opdate jpc_varekurv set vantal = POST vantal WHERE vid=POST vid AND bruger=$s_navn noget i den stil vil jeg gætte på men det må skulle køre en loop eller hvordan ?
19. september 2005 - 19:17
#4
Du er på rette vej synes jeg det ser ud til! Ret denne linie: <form action="" method="post"> til: <form action="debug.php" method="post"> (det er bare for at teste) Ret din kode if($count%2) til: if($count%2) { echo "<tr bgcolor=\"#ADB09D\">"; echo "<td width=\"\" align=\"left\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/>"; echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } else { echo "<tr><td width=\"\" align=\"left\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } og opret så filen debug.php med indholdet: <?php echo "<pre>"; print_r($_POST); echo "</pre>"; ?> og se om du evt selv kan lure output ellers smid det herind.
19. september 2005 - 19:19
#5
Dit indlæg fra: 19/09-2005 19:16:12 Du har fat i noget af det rigtige. Den hedder dog UPDATE (og ikke opdate) Loopet laver vi på arrayet: $_POST['vantal']
19. september 2005 - 19:34
#6
debug.php viser dette Array ( [vantal] => Array ( [35] => 100 [55] => 1 [120] => 1 [22] => 5 [95] => 55 ) [opdate] => Opdater )
19. september 2005 - 19:43
#7
Så kunne du lave en opdatering ala: if(isset($_POST['opdate'])) { foreach($_POST['vantal'] as $id => $antal) { include("connect.php"); //forbind til DB, hvis ikke det allerede er gjort. mysql_query("UPDATE jpc_varekurv set vantal = ".$antal." WHERE vid=".$id." AND bruger=".$s_navn." LIMIT 1") if(mysql_affected_rows()==0) { echo "Fejl: " . mysql_error() . "<br>"; } } }
19. september 2005 - 20:10
#8
jes lur mig om det ikke giver fejl når jeg lægger den ind. Kunne jeg få dig til at lægge den ind i denne kode: og lægge et svar.. eller under alle omstændigheder lægge et svar.. koden: <? if($s_navn && $s_password) { ?><head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; } --> </style> </head><form action="" method="post"> <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td> <td></td><td></td><td></td></tr> <? include("acon.php"); $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ()); if(mysql_num_rows($query) == "0"){ echo "Ingen vare I kurven"; } $count = 0; while($row = mysql_fetch_array($query)) { $count++; if($count%2) { echo "<tr bgcolor=\"#ADB09D\">"; echo "<td width=\"\" align=\"left\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/>"; echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } else { echo "<tr><td width=\"\" align=\"left\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } } $sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)"; $query = mysql_query($sql) or die (mysql_error()); $row = mysql_fetch_assoc($query); echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>"; ?> <tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater"></td> <td> </td> <td></td><td></td></tr> </table> </form> <? } else { echo "Login er krævet"; } ?>
19. september 2005 - 20:21
#9
<? session_start(); if($s_navn && $s_password) { if(isset($_POST['opdate'])) { foreach($_POST['vantal'] as $id => $antal) { include("connect.php"); //forbind til DB, hvis ikke det allerede er gjort. mysql_query("UPDATE jpc_varekurv set vantal = ".$antal." WHERE vid=".$id." AND bruger=".$s_navn." LIMIT 1") if(mysql_affected_rows()==0) { echo "Fejl: " . mysql_error() . "<br>"; } } header("localtion: " . $_SERVER['PHP_SELF']) } ?><head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; } --> </style> </head><form action="" method="post"> <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td> <td></td><td></td><td></td></tr> <? include("acon.php"); $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ()); if(mysql_num_rows($query) == "0") { echo "Ingen vare I kurven"; } else { $count = 0; while($row = mysql_fetch_array($query)) { $count++; if($count%2) { echo "<tr bgcolor=\"#ADB09D\">"; echo "<td width=\"\" align=\"left\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/>"; echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } else { echo "<tr><td width=\"\" align=\"left\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } } $sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)"; $query = mysql_query($sql) or die (mysql_error()); $row = mysql_fetch_assoc($query); echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>"; ?> <tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater"></td> <td> </td> <td></td><td></td></tr> <? } ?> </table> </form> <? } else { echo "Login er krævet"; } ?>
19. september 2005 - 20:21
#10
svar
19. september 2005 - 22:15
#11
Takker mange gange for din hjælp.
19. september 2005 - 22:15
#12
Jeg takker for point!
19. september 2005 - 22:16
#13
Og håber du lærte lidt! Nogle gange er det svært at forklare ting og kode det samtidig! (og det er også svært at gennemskue kode man ikke selv har lavet og sidder foran)
19. september 2005 - 22:21
#14
Det gjorde jeg... har længe tænkt det sikkert burde laves som loop men det har jeg aldrig rigtig fattet, men når man ser det som kode og kan se det virker er det nemmer ihvertfald for mig at se logiken i det..
19. september 2005 - 22:28
#15
*S* ja burde lige have tjekket men den siger godt nok sammen fejl som da jeg havde sat det sammen. fejl: Parse error: parse error, unexpected T_IF in /hsphere/local/home/ossipoff/ossipoff.net/demo/jpc/sider/shop/order.php on line 11
19. september 2005 - 22:33
#16
Der mangler en ; på linie 10! Efter: AND bruger=".$s_navn." LIMIT 1")
19. september 2005 - 22:38
#17
ja det har du da ret i. men nu laver den så fejl: Parse error: parse error, unexpected '}' in /hsphere/local/home/ossipoff/ossipoff.net/demo/jpc/sider/shop/order.php on line 17 Fjerner jeg den siger den fejl: Parse error: parse error, unexpected $ in /hsphere/local/home/ossipoff/ossipoff.net/demo/jpc/sider/shop/order.php on line 82
19. september 2005 - 22:39
#18
Der mangler også en ; på linie 16, efter: header("localtion: " . $_SERVER['PHP_SELF'])
19. september 2005 - 22:45
#19
Takker, det burde man jo have set selv.. er godt nok lidt træt meen.. Du skal i hvert fald have tak igen. nu spiller det..
19. september 2005 - 22:46
#20
Supert! Jeg er også træt, så håber du klare den selv til i morgen!
25. september 2005 - 19:48
#21
Hey. jeg vil lige høre om du kunne hjælpe igen. Den opdater ikke rigtig total prisen rigtig.. for at sige det bliver noget rigtig rod. vil godt lave en nyt spørgsmål med 100 points til opgaven hvis det er. koden ser sådan her ud nu: <? session_start(); if($s_navn && $s_password) { if(isset($_POST['opdate'])) { foreach($_POST['vantal'] as $id => $antal) { $stkpris = $_POST[sp]; $vareantal = $antal; $vtotal = $stkpris * $vareantal; include("acon.php"); //forbind til DB, hvis ikke det allerede er gjort. mysql_query("UPDATE jpc_varekurv set vantal = ".$antal.", varetotal = ".$vtotal." WHERE vid=".$id." AND bruger=".$s_navn." LIMIT 1"); if(mysql_affected_rows()==0) { } } header("localtion: " . $_SERVER['PHP_SELF']); } if(isset($_POST['send'])) { $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ()); if(mysql_num_rows($query) != 0) { $message = "Vare bestilt af kunde nr: $s_navn\n"; $subject = "Bestilling fra JPC WebShop"; $emailTo = "jpc@jpcpartners.dk"; $emailFrom = "salg@{$_SERVER['SERVER_NAME']}"; while($row = mysql_fetch_assoc($query)) { $message .= $row[vn] . " - Antal " . $row[vantal] ."\n"; } mail($emailTo, $subject, $message, "From: ".$emailFrom."\r\n" . "Reply-To: ".$emailFrom."\r\n" . "X-Mailer: PHP/" . phpversion()); $query = mysql_query("UPDATE `jpc_varekurv` SET bestilt=1 WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 )") or die (mysql_error ()); } echo"Din bestilling er sendt og modtaget af JPCpartners."; header("localtion: " . $_SERVER['PHP_SELF']); } ?><head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; } --> </style> </head> <form action="" method="post"> <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td> <td></td><td></td><td></td></tr> <? include("acon.php"); $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ()); if(mysql_num_rows($query) == "0") { echo "Ingen vare I kurven"; } else { $count = 0; while($row = mysql_fetch_array($query)) { $count++; if($count%2) { echo "<tr bgcolor=\"#ADB09D\">"; echo "<td width=\"\" align=\"left\"><input name=\"sp\" type=\"hidden\" id=\"vp4\" value=\"$row[vp]\" size=\"3\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/>"; echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } else { echo "<tr><td width=\"\" align=\"left\"><input name=\"sp\" type=\"hidden\" id=\"vp4\" value=\"$row[vp]\" size=\"3\">"; echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>"; echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>"; echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>"; } } $sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)"; $query = mysql_query($sql) or die (mysql_error()); $row = mysql_fetch_assoc($query); echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>"; ?> <tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater"> eller <input name="send" type="submit" id="send" value="Send bestilling"></td> <td> </td> <td></td><td></td></tr> <? } ?> </table> </form> <? } else { echo "Login er krævet"; } ?>
25. september 2005 - 19:49
#22
Hvad er der galt med totalprisen?
25. september 2005 - 20:01
#24
Prøv at kontakt mig på MSN: jakobdo (at) hotmail (dot) com
Vi tilbyder markedets bedste kurser inden for webudvikling