login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array maken en in database zetten.

Offline nvleeuwen88 - 03/01/2008 21:25 (laatste wijziging 03/01/2008 21:26)
Avatar van nvleeuwen88HTML interesse Heey,

ik heb de volgende code:
  1. <?php
  2. foreach( $_SESSION['winkelmandje'] as $iProductId => $aantal )
  3. {
  4. $oQuery = mysql_query('SELECT PRO_Thema, PRO_Prijs FROM producten WHERE PRO_ID = ' . $iProductId) or die (mysql_error());
  5. //haal hier nog de gegevens op over het product met id $iProductId
  6. $product = mysql_fetch_array($oQuery);
  7. $totaal += $product['PRO_Prijs'] * $aantal;
  8. $prijs = $aantal * $product['PRO_Prijs'];
  9. $totaalbtw = $totaal * 0.06;
  10. $totaalalles = $totaalbtw + $totaal;
  11. }
  12. ?>

nu wil ik dit in me database zetten maar ik weet niet zogoed hoe kan iemand mij verder helpen (ik dacht zelf met een array functie serialize() maar dit lukt mij niet helemaal).

dit is een bestelling van een aantalproducten en ik zou graag willen hebben de productid, aantal en opmerking in een array of meteen in database.

Alvast hartelijk dank.

7 antwoorden

Gesponsorde links
Offline Martijn - 03/01/2008 22:00 (laatste wijziging 03/01/2008 22:06)
Avatar van Martijn Crew PHP ik weet niet of je met een fetch_array ook kunt doen $query[kolomnaam], zoals je deed met $product[prijs]. Mocht daar een fout in zitten, fetch_assoc kan dat wel...

naar mijn weten is: $voorbeeld=mysql_fetch_array($zoekopdracht) zo te legen:

1e ding wat ie zoekt (PRO_Thema) $voorbeeld[0]. Het 2e ding, PRO_Prijs is $voorbeeld[1] etc. Let dus op dat je niet begint met 1!
----------------------------------

om in DB te zetten (ik weet niet of dit het snelste is, maar omgekeerd word dit gebruikt om een zooi replies neer te zetten)

  1. while($test=mysql_fetch_array(or assoc)($SelectQuery){
  2. hier geef je queries waardes, ik snap niet helemaal t verschil tussen $totaal en $prijs, maar die geef je hier waardes;
  3. mysql_query("INSERT INTO tabelnaam SET totaalrpijs=$totaalprijs, etc=enzovoort WHERE PRO_ID = '.$iProductId")
  4. }

Ik weet niet of je dit bedoelde, en volgens mij is dit op grote schaal niet echt database vriendelijk, maar tis een begin 
Offline nvleeuwen88 - 03/01/2008 22:08
Avatar van nvleeuwen88 HTML interesse naja ik zou het liever allemaal in een array willen zetten dus zoiets

productid, aantal, opmerking
enz.

Alleen hoe maak je zo'n array?
Offline Grayen - 03/01/2008 22:50 (laatste wijziging 03/01/2008 22:50)
Avatar van Grayen PHP ver gevorderde Ik raad je aan zoals DeviourSoul al zei gebruik te gaan maken met mysql_fetch_assoc, want wat jij wilt is ook erg goed te realiseren zonder gebruik van serialize. Je kunt beter een goed database structuur hebben dan via jouw manier werken (serialize). Stel je wilt nu een keer een van de dingen selecteren binnen de geserializeerde array. Dan moet je per se alles laden wil je dat gegeven eruit kunnen vissen. Zou je een extra mysql tabel hebben aangemaakt dan had dit niet gehoeven. Dus nogmaals je kunt beter een extra mysql tabel maken dan het gebruik van serialize. Maar goed dat is niet wat je vraagt. Het volgende is mogelijk wat je zoekt:

  1. <?php
  2. $aInsert = array();
  3. $iTotal = 0;
  4.  
  5. foreach ($_SESSION['winkelmandje'] as $iProduct => $iAmount)
  6. {
  7. $rQuery = mysql_query('SELECT PRO_Thema, PRO_Prijs FROM producten WHERE PRO_ID = '.$iProduct) or die(mysql_error());
  8.  
  9. list($sThema, $iPrice) = mysql_num_rows($rQuery);
  10.  
  11. $iTotal += $iPrice * $iAmount;
  12.  
  13. // Waarschijnlijk zal je hier nog een user_id aan moeten toevoegen,
  14. // anders weet je niet wie er wat heeft gekocht.
  15. $aProduct = array
  16. (
  17. 'product_id' => $iProduct,
  18. 'amount' => $iAmount
  19. )
  20.  
  21. $aInsert[] = '(\''.serialize($aProduct).'\')';
  22. }
  23.  
  24. // Genereer een INSERT INTO query. Je moet nog wel even de tabelnaam en velden aanpassen
  25. $sInsertQuery = 'INSERT INTO table (naam_van_veld_waar_het_geserialiseerde_array_in_gaat) VALUES '.implode(',', $aInsert);
  26.  
  27. // Het totaal van alles en BTW hoef je natuurlijk pas te berekenen als het totaal bedrag berekend is.
  28. // Dat scheelt weer onnodige laadtijd (alle beetjes helpen)
  29. $iTotalTaxes = $iTotal * 0.06;
  30. $iTotalAll = $iTotalTaxes + $iTotal;
  31. ?>
Offline Martijn - 04/01/2008 14:10
Avatar van Martijn Crew PHP oke wats een seriazlize? van php.net werkt ik niet echt veel slimmer dit keer
Offline kickasgamer - 04/01/2008 14:15
Avatar van kickasgamer PHP ver gevorderde ik denk dat die functie gewoon een serial maakt (dus een rekens tekens) van een array en daan na via unserialize die code terug omzet naar de oorspronkelike waarde

dat is wat ik er van maak van php.net 
Offline Grayen - 04/01/2008 15:56
Avatar van Grayen PHP ver gevorderde serialize() geeft een string terug waarin de waarde van de opgegeven variable in wordt opgeslagen. Zo zou je bijvoorbeeld een array kunnen opslaan in een database. Deze array wordt dan eerst omgezet in een string (niet met hele rare tekens hoor ;)) en dan je hem zou je dat willen ergens in opslaan. Vervolgens kan je met unserialize() de string weer omzetten naar zijn oorspronkelijke waarde. Het zijn dus uiterst handige functies. Je kunt serialize ook gebruiken voor objecten.
Offline Martijn - 04/01/2008 16:49
Avatar van Martijn Crew PHP dus in principe wijs je een array to aan een serialize(), net als je een tekst aan een query toewijst? Uiteraard kan je serialize meer, maar ff om t simpel te houden 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.198s