Na Foreach alle rijen updaten
Ik ben bezig met een digitale Winkelwagen te maken. Als men op een knop drukt, dan wordt het product toegevoegd aan de winkelwagen (lees: als rij opgeslagen in een tabel). Wat ik nu wil is een formulier aanmaken waarbij men het aantal kan invullen om de producten vervolgens te bestellen.
Hierbij haal ik eerst de gegevens uit de database middels een Foreach.
Probleem waar ik tegenaan loop is dat als ik een update query uitvoer dat dan alleen de laatste waarde wordt geupdate en niet alle rijen.
Kan iemand mij misschien verder helpen?
De rijen uit de winkelwagen haal ik op middels het volgende script (dit is een gedeelte van het script, dus het kan zijn dat er wat dingen missen, tot zover werkt het in ieder geval :-)):
Gedeelte van het script:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$database = "SELECT * FROM lima_cart AS a LEFT JOIN productbook AS cc ON cc.id = a.prod_id WHERE a.user_id='$id'";
$res = mysql_query($database);
$rows = mysql_fetch_array($res)
?>
$database = "SELECT * FROM lima_cart AS a LEFT JOIN productbook AS cc ON cc.id = a.prod_id WHERE a.user_id='$id'";
$res = mysql_query($database);
$rows = mysql_fetch_array($res)
?>
<form action='update.php' method = 'post' name = 'adminForm' id='adminForm'>
<table class='contenttoc'>
<tr>
<th>
Product
</th>
<th>
Aantal
</th>
</tr>
Code (php)
<tr>
<td colspan="2">
<center><input class="button" type="submit" name="submit" value="Bestel"></center>
</table>
</form>
Gewijzigd op 01/01/1970 01:00:00 door Gifo
Jij moet er dus voor zorgen dat ze allemaal een unieke waarde hebben en dat er een koppeling is met de gegevens die moeten worden bijgewerkt.
Offtopic:
- Waar is de foutafhandeling van de query? Queries hebben de neiging te mislukken...
- Waar is de while-lus met daarin mysql_fetch_array()?
- Waarom mysql_fetch_array() wanneer mysql_fetch_assoc() sneller is?
- Waarom een foreach wanneer je de lus al met de while (zie vorige opmerking) kunt doorlopen?
Bedankt voor je reactie.
Zoals gezegd, heb ik maar een klein gedeelte van het script geplaatst. De foutafhandeling zit in de het bestand update.php dat wordt uitgevoerd als er "ge-submit" wordt.
Ik dacht dat ik met de foreach alle items in de array kon doorlopen. Maakt het veel verschil of het met foreach of met while is?
Probleem zal inderdaad in de naam 'aantal' zitten.
Ik zou deze wel uniek kunnen maken, door bijvoorbeeld aantal 1, aantal 2 etc etc. Maar hoe maak ik dan de koppeling met de gegevens die bijgewerkt moeten worden? Ze hebben allemaal een uniek id nummer.
Alle restulaten komen dan ook in de array $_POST['aantal'] te staan die je weer kunt uitlezen met een foreach loop. Je kunt natuurlijk ook een while loop gebruiken, maar bij array's is een foreach het gebruikelijkst (en makkelijkst).
Quote:
Ik bespeur hier een oplossing...Ik zou deze wel uniek kunnen maken, door bijvoorbeeld aantal 1, aantal 2 etc etc. Maar hoe maak ik dan de koppeling met de gegevens die bijgewerkt moeten worden? Ze hebben allemaal een uniek id nummer.
Ik ook, maar ik krijg hem dus net even niet te pakken ;(
Misschien gaat het mis als ik de gegevens wil "opvangen" in de array $_POST['aantal'].
Ik gebruik nu:
$aantalarray = array ($_POST['aantal']);
Gewijzigd op 01/01/1970 01:00:00 door Gifo
$aantalarray = $_POST['aantal'];
Alleen is dit erg onzinnig aangezien je ook gewoon $_POST['aantal'] kunt gebruiken.
Ik krijg nu de jusite waardes uit de Array, maar hoe koppel ik deze dan aan de unieke id's?
Code (php)
1
2
3
4
2
3
4
<?php
$id = 1; // of wat uit de database komt
echo '<input type="text" name="aantal['.$id.']">';
?>
$id = 1; // of wat uit de database komt
echo '<input type="text" name="aantal['.$id.']">';
?>
HOERA!!!! Het is gelukt.
Mijn dank is enorm!