Na Foreach alle rijen updaten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Gifo

Gifo

29/01/2007 08:51:00
Quote Anchor link
Hoi

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)
PHP script in nieuw venster Selecteer het PHP script
1
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)

?>


<form action='update.php' method = 'post' name = 'adminForm' id='adminForm'>
<table class='contenttoc'>
<tr>
<th>
Product
</th>
<th>
Aantal
</th>
</tr>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
  foreach ($rows as $r)
  {

    echo '<tr>';
    echo "  <td>". $r->imgtitle ."</td>";
    echo "  <td><input type='text' name='aantal' maxlength='4' size='4'></td>";
    echo "</tr>";
   }

?>

<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
 
PHP hulp

PHP hulp

16/04/2024 09:50:51
 
Frank -

Frank -

29/01/2007 12:07:00
Quote Anchor link
Duik eens in de html-broncode, dan zul je zien dat daar een fout in staat. Jij gebruikt tig-keer een text-box met de naam 'aantal'. Wanneer je deze allemaal invult en verstuurt naar de server, wordt de inhoud overschreven door de volgende waarde.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<td><input type='text' name='aantal' maxlength='4' size='4'></td>";

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?
 
Gifo

Gifo

29/01/2007 12:45:00
Quote Anchor link
Hoi Frank,

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.
 
Joren de Wit

Joren de Wit

29/01/2007 12:49:00
Quote Anchor link
Wat betreft dat probleem met de naam, daar kun je ook een array van maken, dus bijvoorbeeld als naam 'aantal[]' meegeven.

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).
 
Frank -

Frank -

29/01/2007 13:09:00
Quote Anchor link
Quote:
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 bespeur hier een oplossing...
 
Gifo

Gifo

29/01/2007 13:11:00
Quote Anchor link
Ik ook, maar ik krijg hem dus net even niet te pakken ;(
 
Gifo

Gifo

29/01/2007 13:18:00
Quote Anchor link
@blanche
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
 
Joren de Wit

Joren de Wit

29/01/2007 13:49:00
Quote Anchor link
Nee $_POST['aantal'] is dan opzich al een array. Dus:

$aantalarray = $_POST['aantal'];

Alleen is dit erg onzinnig aangezien je ook gewoon $_POST['aantal'] kunt gebruiken.
 
Gifo

Gifo

29/01/2007 14:11:00
Quote Anchor link
Ok,

Ik krijg nu de jusite waardes uit de Array, maar hoe koppel ik deze dan aan de unieke id's?
 
Joren de Wit

Joren de Wit

29/01/2007 14:15:00
Quote Anchor link
Dat zul je ook nog in je formulier moeten doen. Je haalt de gegevens op uit je winkelwagen tabel, daar staat ook het id in neem ik aan. Je zou dat id dus bijvoorbeeld als key aan de array mee kunnen geven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    $id
= 1; // of wat uit de database komt
    echo '<input type="text" name="aantal['.$id.']">';
?>
 
Gifo

Gifo

29/01/2007 14:23:00
Quote Anchor link
@Blanche

HOERA!!!! Het is gelukt.
Mijn dank is enorm!
 



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.