Hallo,
ich versuche mich hier an einem Warenkorb. In folgendem Script wird das
Array $items gefüllt um dann in einem nächsten Schritt ausgegeben zu
werden. Die SQL-Abfrage (welche es in einem nächsten Schritt gilt Injection-Sicher zu machen!!!!!) ist klar, jedoch nicht Befüllung des Arrays.
Erst werden alle Datendsätz mit einer bestimmten order_number geholt. Dann,
wenn es zumindest einen Datensatz gibt, wird dieser oder diese in einem assoziativen
Array gespeichert. Jetzt wird aber plötzlich der Wert $value mit
$items[$n][$field]=$value; wiederum in der neuen Array- Varibalen $items gespeichert. Also, wie werden denn allein durch das Inkrement von $n
alle Felder durchlaufen?? Was hat [$n] mit [$field] zu tun.
Außerdem ist es doch grade durch das assoziative Array gewünscht
$key (also hier $field) und $value getrennt zu halten. Jetzt wird plötzlich
dies wiederum aufgegeben.
Vielen Dank für einen Anhaltspunkt.
Gruß, Iago
ich versuche mich hier an einem Warenkorb. In folgendem Script wird das
Array $items gefüllt um dann in einem nächsten Schritt ausgegeben zu
werden. Die SQL-Abfrage (welche es in einem nächsten Schritt gilt Injection-Sicher zu machen!!!!!) ist klar, jedoch nicht Befüllung des Arrays.
PHP-Code:
Hier zunächst das Script:
$order_number = $_SESSION['order_number']; /*Übernimmt die Auftragsnummer von einer Sitzungsvariablen.
Die Auftragsnummer kennzeichnet den jeweiligen Auftrag in der Datenbank*/
$table_name = $order_number;
$cxn = connect_to_db('Vars.php');
$sql_1 = 'SELECT * FROM order_item WHERE order_number="'.$order_number.'"';
$result = mysqli_query($cxn,$sql_1)
or die ('sql_1: '.mysqli_error($cxn));
$n_row = mysqli_num_rows($result); /*liefert die Anzahl der Datensätze einer
Ergebnismenge. Diese Funktion ist nur gültig für SELECT Befehle*/
if($n_row < 1)
{
echo 'Warenkorb ist leer<br/><a href="Catalog.php">Einkauf fortsetzen</a>';
exit();
}
$n=1; /*Setzt einen Zähler für die Anzahl der Elemente im Warenkorb*/
while($row = mysqli_fetch_assoc($result))
{
foreach($row as $field => $value)
{
if($field != 'order_number')
{
$items[$n][$field]=$value;
if($field == 'catalog_number')
{
$sql_2 = 'SELECT name,type FROM food WHERE catalog_number = "'.$row['catalog_number'].'"';;
$result2 = mysqli_query($cxn,$sql_2)
or die ('sql_2: '.mysqli_error($cxn));
$row = mysqli_fetch_row($result2);
$items[$n]['name']=$row[0]." ".$row[1];
}
}
}
$n++;
}
wenn es zumindest einen Datensatz gibt, wird dieser oder diese in einem assoziativen
Array gespeichert. Jetzt wird aber plötzlich der Wert $value mit
$items[$n][$field]=$value; wiederum in der neuen Array- Varibalen $items gespeichert. Also, wie werden denn allein durch das Inkrement von $n
alle Felder durchlaufen?? Was hat [$n] mit [$field] zu tun.
Außerdem ist es doch grade durch das assoziative Array gewünscht
$key (also hier $field) und $value getrennt zu halten. Jetzt wird plötzlich
dies wiederum aufgegeben.
Vielen Dank für einen Anhaltspunkt.
Gruß, Iago
Kommentar