Ein MYSQL Ergebnis mehrmals durchsuchen

kubanese

Mitglied
Hallo zusammen,

ich will für einen Online-Shop einen Configurator basteln.
Ich hab dafür mehrere Drop-Down-Felder, die mit unterschiedlichen Daten befüllt werden müssen (Mainboard, Speicher, usw...).
Idealerweise will ich nur einmal ein SQL Statement an die DB schicken (die DB is sehr langsam). Jetzt hab ich das Problem, dass ich nicht weiß wie ich das Ergebnis des Statements in den verschiedenen Drop-Down-Felder anzeigen lasse.

Das SQL Statement funktioniert und bei dem ersten Feld werden auch Daten angezeigt. Beim zweiten allerdings nicht mehr.

Danke schonmal im Vorraus

Hier mein bisheriger Code:
PHP:
<?php

//DB-Connect
$id = "user"; //hier denn usernamen angeben
$pw = "passwort"; //hier das passwort eintragen
$host ="host"; //hier die datenbankadresse angeben, meistens localhost
$database = "database"; //hier den db namen

$conn_id = mysql_connect($host,$id,$pw) or die("Verbindungsversuch fehlgeschlagen"); //verbindung zur db wird aufgebaut
mysql_select_db($database,$conn_id) or die("Konnte die Datenbank nicht waehlen."); //die db wird ausgewaehlt

//SQL-Abfrage abschicken
$sqlqry = "";
$sqlqry = $sqlqry . "SELECT products.products_id, products_description.products_name, ROUND(products.products_price, 2) AS price, products_to_categories.categories_id ";
$sqlqry = $sqlqry . "FROM products ";
$sqlqry = $sqlqry . "INNER JOIN products_description ON products_description.products_id = products.products_id ";
$sqlqry = $sqlqry . "INNER JOIN products_to_categories ON products_to_categories.products_id = products.products_id ";
$sqlqry = $sqlqry . "ORDER BY products_to_categories.categories_id, products_description.products_name";

$abfboard = mysql_query($sqlqry); //Abfrage abschicken
if (!$abfboard) die ("Fehler in der Abfrage"); //Ueberpruefen ob Abfrage erfolgreich war

?>
<html>
<h2>PC-Konfigurator</h2>
<b>Computer-Hardware</b><br>
<form action="configurator2.php" method="POST">
Mainboard:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
<?php

while ($ergebnis = mysql_fetch_array($abfboard ,MYSQL_BOTH))
{
  echo("<option value='" . $ergebnis['products_id'] . "'>" . $ergebnis['products_name'] . "</option>\n");
}
?>
</select><br><br>
CPU:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
<?php

while ($ergebnis = mysql_fetch_array($abfboard ,MYSQL_BOTH))
{
  echo("<option value='" . $ergebnis['products_id'] . "'>" . $ergebnis['products_name'] . "</option>\n");
}
?>
</select><br><br>
CPU-Kühler (falls CPU nicht boxed):<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Arbeitsspeicher 1:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Arbeitsspeicher 2:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Grafikkarte:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Festplatte 1:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Festplatte 2:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Optisches Laufwerk 1:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Optisches Laufwerk 2:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Diskettenlaufwerk:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
Computergeh&auml;se:<br>
<select name="mainboard" style="width: 500px">
<option value="0">bitte ausw&auml;hlen</option>
</select><br><br>
<input type="reset" value="L&ouml;schen">&nbsp;<input type="submit" value="Weiter zur Software">
</form>

</html>
 
Sammele die Datensätze einfach in einem Array. Das kannst du dann sooft wie du willst durchlaufen.
 
ok das hab ich gemacht
PHP:
while($ergebnis = mysql_fetch_array($abfboard ,MYSQL_BOTH)) //Ergebnis in ein Array speichern
{
 $parts = array($ergebnis['products_id'],$ergebnis['products_name'],$ergebnis['price'],$ergebnis['categories_id']);
next($parts);
}

jetzt hab ich allerdings das Problem, dass ich nur die Datensätze anzeigen lassen will, die im letzten Feld (categories_id) eine "2" beinhalten.

D.h. ich will nur bestimmte Artikel anzeigen lassen.

Wenn ich jetzt diesen Code ausführen lasse bekomm ich den ersten Datensatz aber ich muss ja alle Datensätze durchsuchen (27.000).
PHP:
echo($parts['0'] . " | " . $parts['1'] . " | "  . $parts['2'] . " | " . $parts['3'] . " | ");
next($parts);

Leider bekomme ich immer den gleichen Datensatz. Woran liegt das?
 
Zurück