update aantal
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if($_POST['txtAantal']) {
$Aantal=($_POST['txtAantal']);
$SessieId = (session_id());
$strSQL = "select Ordernummer from tblorder where SessieId = '". $SessieId."'";
$rs = mysql_query($strSQL, $db);
if (!$rs)
die("de SQL opdracht is fout<br>" . $strSQL);
$r = mysql_fetch_array($rs);
$intOrdernummer = $r["Ordernummer"] ;
$strSQL = "UPDATE tblorderregels set Aantal=$Aantal where Ordernummer = $intOrdernummer AND Artikelnummer= '".$_POST['delete']."' ";
$rs = mysql_query($strSQL, $db);
if (!$rs)
die("de SQL opdracht is fout<br>" . $strSQL);
}
?>
if($_POST['txtAantal']) {
$Aantal=($_POST['txtAantal']);
$SessieId = (session_id());
$strSQL = "select Ordernummer from tblorder where SessieId = '". $SessieId."'";
$rs = mysql_query($strSQL, $db);
if (!$rs)
die("de SQL opdracht is fout<br>" . $strSQL);
$r = mysql_fetch_array($rs);
$intOrdernummer = $r["Ordernummer"] ;
$strSQL = "UPDATE tblorderregels set Aantal=$Aantal where Ordernummer = $intOrdernummer AND Artikelnummer= '".$_POST['delete']."' ";
$rs = mysql_query($strSQL, $db);
if (!$rs)
die("de SQL opdracht is fout<br>" . $strSQL);
}
?>
Het bijbehorende formulier ziet er als volgt uit
Code (php)
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
40
41
42
43
44
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
40
41
42
43
44
<FORM method=post name="cart_quantity" action="<?php echo $_SERVER["PHP_SELF"] ?>">
<?php
$SessieId = (session_id());
$strSQL = "select * from tblartikelen, tblorderregels, tblorder
where tblorder.Ordernummer = tblorderregels.Ordernummer
and tblorderregels.Artikelnummer = tblartikelen.Artikelnummer
and tblorder.SessieId = '$SessieId'";
$rs = mysql_query($strSQL, $db);
if (!$rs)
die("agenda.php: de SQL opdracht is fout<br>" . $strSQL);
// Haal alle records 1 voor 1 op zolang er records zijn
while ($r = mysql_fetch_assoc($rs)) {
?>
<TR class=productListing-even>
<TD class=productListing-data vAlign=top
align=middle><br><br>
<INPUT type="checkbox" name="delete" value="<?php echo ($r["Artikelnummer"]) ?>"></TD>
<TD class=productListing-data><BR>
<TABLE border=0 cellSpacing=2 cellPadding=2>
<TBODY>
<TR>
<TD class=productListing-data align=middle><A
href="http://www.mijnoscommerce.nl/demo/shop1/product_info.php?products_id=35{1}1"><IMG
title="<?php echo($r["Artikelnaam"]); ?>" border=0
alt"<?php echo($r["Artikelnaam"]); ?>"
src="images/<?php echo($r["Afbeelding"]); ?>" width=100 height=80></A></TD>
<TD class=productListing-data vAlign=top><BR><A
href="http://www.mijnoscommerce.nl/demo/shop1/product_info.php?products_id=35{1}1"><B>
<?php echo($r["Artikelnaam"]); ?></B></A><SPAN
class=markProductOutOfStock></SPAN><BR><SMALL><I>-
Kleur Zwart</I></SMALL> </TD></TR></TBODY></TABLE></TD>
<TD class=productListing-data vAlign=top
align=middle><BR><BR><INPUT type="text" value="<?php echo($r["Aantal"]); ?>" size=4 name="txtAantal" onfocus="if
(this.value=='<?php echo($r["Aantal"]); ?>')
this.value='';">
?>
<?php
$SessieId = (session_id());
$strSQL = "select * from tblartikelen, tblorderregels, tblorder
where tblorder.Ordernummer = tblorderregels.Ordernummer
and tblorderregels.Artikelnummer = tblartikelen.Artikelnummer
and tblorder.SessieId = '$SessieId'";
$rs = mysql_query($strSQL, $db);
if (!$rs)
die("agenda.php: de SQL opdracht is fout<br>" . $strSQL);
// Haal alle records 1 voor 1 op zolang er records zijn
while ($r = mysql_fetch_assoc($rs)) {
?>
<TR class=productListing-even>
<TD class=productListing-data vAlign=top
align=middle><br><br>
<INPUT type="checkbox" name="delete" value="<?php echo ($r["Artikelnummer"]) ?>"></TD>
<TD class=productListing-data><BR>
<TABLE border=0 cellSpacing=2 cellPadding=2>
<TBODY>
<TR>
<TD class=productListing-data align=middle><A
href="http://www.mijnoscommerce.nl/demo/shop1/product_info.php?products_id=35{1}1"><IMG
title="<?php echo($r["Artikelnaam"]); ?>" border=0
alt"<?php echo($r["Artikelnaam"]); ?>"
src="images/<?php echo($r["Afbeelding"]); ?>" width=100 height=80></A></TD>
<TD class=productListing-data vAlign=top><BR><A
href="http://www.mijnoscommerce.nl/demo/shop1/product_info.php?products_id=35{1}1"><B>
<?php echo($r["Artikelnaam"]); ?></B></A><SPAN
class=markProductOutOfStock></SPAN><BR><SMALL><I>-
Kleur Zwart</I></SMALL> </TD></TR></TBODY></TABLE></TD>
<TD class=productListing-data vAlign=top
align=middle><BR><BR><INPUT type="text" value="<?php echo($r["Aantal"]); ?>" size=4 name="txtAantal" onfocus="if
(this.value=='<?php echo($r["Aantal"]); ?>')
this.value='';">
?>
<INPUT name="Update" border=0 alt="Update Winkelwagen" src="winkelwagen_files/button_update_cart.gif" type=image>
Ik ben hier al een paar dagen mee aan het worstelen, maar het lukt me niet om de update van de aantallen in de de database door te voeren. Hopelijk kan iemand me verder helpen.
Let niet op de html, deze heb ik van de cursusleider zo ontvangen, omdat 'de praktijk vaak ook bestaat uit phpcode schrijven in bestaande html.
Je code-tags waren bijna goed, op de slash (/) die je was vergeten na je [code]-tag.[/modedit]
Gewijzigd op 15/05/2013 22:32:17 door Roel -
Quote:
Ik ben hier al een paar dagen mee aan het worstelen, maar het lukt me niet om de update van de aantallen in de de database door te voeren. Hopelijk kan iemand me verder helpen.
Let niet op de html, deze heb ik van de cursusleider zo ontvangen, omdat 'de praktijk vaak ook bestaat uit phpcode schrijven in bestaande html.
Let niet op de html, deze heb ik van de cursusleider zo ontvangen, omdat 'de praktijk vaak ook bestaat uit phpcode schrijven in bestaande html.
Zonder te zeggen wat er mis gaat (wat voor foutmeldingen/tekst/output/etc krijg je?), wordt het voor anderen behoorlijk lastig je hier mee te helpen. Op tientallen plaatsen kan iets misgaan. Zonder enige indicatie is het erger dan zoeken naar een naald in een hooiberg.
Als je geen meldingen krijgt, zet dan even het volgende bovenin je php-code:
Alle errors die optreden worden dan weergeven als dat niet al ingesteld was.
Wil je je trouwens richten op wat nettere code, dan raad ik aan om niet E_ERROR, maar E_ALL te gebruiken, zodat ook slordige code vermeld wordt.
Mag ik je verder in ieder geval op het hart drukken om de variabelen die je in je SQL stopt eerst te escapen? Zoals je code er nu staat is deze verschrikkelijk SQL-injection gevoelig (google dit even als dit je onbekend is. Dit is belangrijke stof).
Allemaal waar, maar dit beantwoord niet mijn vraag.
Krist Ensing op 15/05/2013 21:15:29:
Allemaal waar, maar dit beantwoord niet mijn vraag.
Je geeft zelf geen antwoord op de vraag wat de foutmelding(en) is/zijn.
De vraag is dus: hoe anders kun je een aangebrachte wijziging in een veld aftasten dan met ISSET, wat niet werkt bij een reeds vanuit de database gevuld INPUT veld.
Ik zie helemaal geen isset() in jouw code.
Waar nu if($_POST['txtAantal']) staat, heb ik ook al if(ISSET($_POST['txtAantal'])) geprobeerd, dus daar bedoel ik. Het maakt uiteindelijk geen verschil. Ga nou niet zeggen, probeer dat toch maar eens nog een keer, want daar zit het probleem niet. Het is alleen dat if($_POST['txtAantal']) en if(ISSET($_POST['txtAantal'])) niet werkt bij velden die al vanuit de database zijn gevuld en via een formulier geupdate meoten worden. Daar wil ik een antwoord op.
Dat zou je kunnen oplossen door per artikel een formulier te maken (met een hidden input voor het id) of één formulier met een array op de aantal input:
Code (php)
1
2
3
4
2
3
4
<?php
echo '<input type="tekst" name="txtAantal[' . $row['artikelnr'] .
']" . value="' .$row['aantal'] . '">';
?>
echo '<input type="tekst" name="txtAantal[' . $row['artikelnr'] .
']" . value="' .$row['aantal'] . '">';
?>
En hoe gebruik ik deze in de update query?
Toevoeging op 16/05/2013 17:09:09:
Dan bedoel ik de oplossing met de array op de aantal input
Code (php)
1
2
3
4
2
3
4
<?php
echo '<input type="tekst" name="txtAantal[' . $row['artikelnr'] .
']" . value="' .$row['aantal'] . '">';
?>
echo '<input type="tekst" name="txtAantal[' . $row['artikelnr'] .
']" . value="' .$row['aantal'] . '">';
?>
Code (php)
1
2
3
4
2
3
4
<?php
echo '<input type="tekst" name="txtAantal[' . $row['artikelnr'] .
']" value="' .$row['aantal'] . '">';
?>
echo '<input type="tekst" name="txtAantal[' . $row['artikelnr'] .
']" value="' .$row['aantal'] . '">';
?>
Als je het zo doet wordt $_POST['txtAantal'] een array en die kan je op de gebruikelijke manier doorlopen, en voor ieder item in de array een update uitvoeren:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
foreach ($_POST['txtAantal'] as $prd => $aantal) {
$sql = "UPDATE tblorderregels SET aantal=" . (int) $aantal . "
WHERE order_id=" . $order_id . " AND product_id=" . (int) $prd
// en dan hier de query uitvoeren
}
?>
foreach ($_POST['txtAantal'] as $prd => $aantal) {
$sql = "UPDATE tblorderregels SET aantal=" . (int) $aantal . "
WHERE order_id=" . $order_id . " AND product_id=" . (int) $prd
// en dan hier de query uitvoeren
}
?>
Gewijzigd op 20/05/2013 17:38:26 door Ger van Steenderen
En uiteraard niet vergeten je variabelen te escapen!
Ik ben er één vergeten, maar waarom escapen op een integer? (int) blabla geeft gewoon 0