PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbankabfrage in Array



stefaan
19-02-2003, 20:45
Servus!

Folgendes Problem könnte mir heute eine schlaflose Nacht bereiten, bitte um Anregungen:

Ich habe eine Datenbank mit 2 Tabellen (tbl_artikel, tbl_eigenschaften), die ich in ein 3dimensionales Array füttern muss.
Die Abfrage sieht so aus:


+----+--------+----------+---------+-------+
| id | bestnr | foto | groesse | preis |
+----+--------+----------+---------+-------+
| 1 | GEB01 | 0001.jpg | 15x7cm | €6 |
| 1 | GEB01 | 0001.jpg | 20x10cm | €8 |
| 2 | OST01 | 0002.jpg | 35x10cm | €20 |
| 2 | OST01 | 0002.jpg | 50x12cm | €25 |
| 2 | OST01 | 0002.jpg | 70x20cm | €40 |
| 3 | OST02 | 0003.jpg | 35x10cm | €23 |
| 3 | OST02 | 0003.jpg | 50x12cm | €30 |
| 3 | OST02 | 0003.jpg | 70x20cm | €50 |
| 4 | OST03 | 0004.jpg | 40x12cm | €28 |
| 4 | OST03 | 0004.jpg | 60x15cm | €45 |
| 4 | OST03 | 0004.jpg | 80x20cm | €70 |
| 5 | OST04 | 0005.jpg | 35x10cm | €20 |
| 5 | OST04 | 0005.jpg | 50x12cm | €25 |
| 5 | OST04 | 0005.jpg | 70x20cm | €40 |
...


Rauskommen soll folgendes:
$kerzen[0][0]['preis'] => €6
$kerzen[0][1]['preis'] => €8
$kerzen[1][0]['preis'] => €20
...

Die Daten sollen dann rekursiv mit Smarty ausgegeben werden, das läuft schon soweit. Nur mit den Umbauarbeiten in das Array komm ich nicht weiter. Vor 2 Jahren hab ich das schon irgendwie halbewegs funktionierend im Pfusch hinbekommen, hab dieses Codeschnippsel nicht mehr.
Ein guter Ansatz würde schon viel weiterhelfen.

Vielen Dank!

Grüße, Stefan

msi
19-02-2003, 21:27
<?php
$vid = -1;

while ( $arr= mysql_fetch_array(..)) {

if ($arr['id'] != $vid) {
$count = 0;
$vid = $arr['id'];
}
$kerzen[$arr['id']-1][$count++]['preis']=$arr['preis'];

}

?>

sowas in der arT?

mehlvogel
20-02-2003, 12:44
$kerzen[$arr['id']-1][$count++]=$arr;


Ich denke, er möchte dann alle Daten dort haben (kann mich aber auch irren ;) ).

Kleine Frage noch, was zum Henker ist Smarty?

stefaan
20-02-2003, 19:14
Servus!

@ Markus:
Danke für den Ansatz, doch bei dir wird nur das erste Array geloopt, in der 2. Dimension happerts ein bisschen.

Folgender Ansatz funktioniert:


if($sql_count > 0)
{
$i = 0; // 1. Array
$j = 0; // 2. Array
$temp_id = 1;

while($sql_data = mysql_fetch_array($sql_result))
{
if($sql_data['artikel_id'] == $temp_id) {
$kerzen[$i][$j]['preis'] = $sql_data['preis'];
// echo $i . " " . $j . " " . $sql_data['preis'] . " " . "<br>";
$j++;
}

else {
$i++;
if($j <= $sql_data['artikel_id']) $j = 0;
$kerzen[$i][$j]['preis'] = $sql_data['preis'];
// echo "<b>" . $i . " " . $j . " " . $sql_data['preis'] . " " . "</b><br>";

$temp_id = $sql_data['artikel_id'];
$j++;
}
}
}


@mehlvogel:
Smarty ist eine sehr gute und leistungsfähige Template Engine für PHP.
smarty.php.net

Vielen Dank für die Hilfe :D

Grüße, Stefan