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:
<?php
$aInsert = array();
$iTotal = 0;
foreach ($_SESSION['winkelmandje'] as $iProduct => $iAmount)
{
$rQuery = mysql_query('SELECT PRO_Thema, PRO_Prijs FROM producten WHERE PRO_ID = '.$iProduct) or die(mysql_error());
list($sThema, $iPrice) = mysql_num_rows($rQuery);
$iTotal += $iPrice * $iAmount;
// Waarschijnlijk zal je hier nog een user_id aan moeten toevoegen,
// anders weet je niet wie er wat heeft gekocht.
$aProduct = array
(
'product_id' => $iProduct,
'amount' => $iAmount
)
$aInsert[] = '(\''.serialize($aProduct).'\')';
}
// Genereer een INSERT INTO query. Je moet nog wel even de tabelnaam en velden aanpassen
$sInsertQuery = 'INSERT INTO table (naam_van_veld_waar_het_geserialiseerde_array_in_gaat) VALUES '.implode(',', $aInsert);
// Het totaal van alles en BTW hoef je natuurlijk pas te berekenen als het totaal bedrag berekend is.
// Dat scheelt weer onnodige laadtijd (alle beetjes helpen)
$iTotalTaxes = $iTotal * 0.06;
$iTotalAll = $iTotalTaxes + $iTotal;
?>
<?php $iTotal = 0; foreach ($_SESSION['winkelmandje'] as $iProduct => $iAmount) { $iTotal += $iPrice * $iAmount; // Waarschijnlijk zal je hier nog een user_id aan moeten toevoegen, // anders weet je niet wie er wat heeft gekocht. ( 'product_id' => $iProduct, 'amount' => $iAmount ) $aInsert[] = '(\''.serialize($aProduct).'\')'; } // Genereer een INSERT INTO query. Je moet nog wel even de tabelnaam en velden aanpassen $sInsertQuery = 'INSERT INTO table (naam_van_veld_waar_het_geserialiseerde_array_in_gaat) VALUES '.implode(',', $aInsert); // Het totaal van alles en BTW hoef je natuurlijk pas te berekenen als het totaal bedrag berekend is. // Dat scheelt weer onnodige laadtijd (alle beetjes helpen) $iTotalTaxes = $iTotal * 0.06; $iTotalAll = $iTotalTaxes + $iTotal; ?>
|