Jump to content

DAtenbankabfrage - Arrays - tabellarisch ausgeben


Recommended Posts

Moin zusammen,

ich versuche nun meine erste Datenbankabfrage selber zu erstellen. Grundsätzlich bekomme ich die Verbindung zur Datenbank auch hin, ich kann mir auch eine beliebige Spalte anzeigen lassen und diese nach bestimmten Kriterien filtern *jippie*, klingt für die Erfahrenen von Euch vielleicht profan, für mich war es bereits ein riesen Schritt... ;-)


Ich weiß zwar jetzt, dass meine Abfrage in einer Spalte meiner Wahl nach dem gewünschten Begriff filtert, das ganze macht natürlich nur Sinn, wenn ich nicht nur diesen Begriff angezeigt bekomme, sondern auch zusätzliche Info´s, die an anderen Spalten zu der jeweils passenden Zeile stehen. Das ganze soll in einer Tabelle ausgegeben werden. Soweit ich mich da bisher eingelesen habe, sind Arrays der richtige Weg dafür. Aber da hängt auch schon mein Hammer: ich habe mich bereits wie ein wilder durchs Netz geklickert, meine beiden PHP Bücher gefressen, aber wie man dergleichen mit Arrays aufbaut, kapiere ich einfach (noch) nicht.


Ich möchte jetzt nicht nach einer Komplettlösung fragen, dabei lernt man nix. Aber wenn jemand nen Tipp hat, wo diese Geschichte möglichst Einsteigertauglich veranschaulicht wird und aus der man die benötigte Lösung ableiten kann, wäre ich zutiefst verbunden :-D


Für den Fall, dass es von Interesse ist: die besagte Datenbank wird von anderer Stelle gefüllt, insgesamt benötige ich von allen darin enthaltenen Datensätze (ca 1200) die Informationen aus vier Spalten. Jeder Datensatz soll dann bei Ausgabe in einer Tabellenzeile stehen. Ein Primärschlüssel existiert leider nicht.


Hier die Abfrage, die ich bisher gebastelt habe:

xwg";
  }
?>


Das Ergebnis dieser Abfrage gibt mir einfach nur "BOARDSBOARDSBOARDS..." aus, zeigt mir aber, dass es bis hierhin funktioniert.


Danke & Gruß, Haraldos

Link to post
Share on other sites

Woahh! Ich krisch die Motten. Entweder bin ich zu blöd oder die Gicht schlägt aufs Hirn... ;-(

Ich versuche nichts weiter, als obige Abfrage tabellarisch auszugeben. Kann ja eigentlich net so schwer sein, da man´s ja x-fach im Netz sieht... Eigentlich wollt ich ja nicht nach ner Lösung fragen, jetzt tu ich´s trotzdem, in eine solche Beispieltabelle soll die Ausgabe wandern:

 




Zeile 2 soll sich dabei so soft widerholen wie Datensätze laut spezifischer Abfrage vorhanden sind...

Link to post
Share on other sites

Hmm,

danke erstmal, habe Deinen Vorschlag so modifiziert:


\n".stripslashes($row[art])."\n";
  echo "".stripslashes($row[name])."\n";
  echo "".stripslashes($row[p1])."\n\n";
  }
?>

Jetzt produziert er immerhin berreits eine Tabelle mit entsprechend vielen Zeilen und Spalten, so oft "BOARDS" in der Spalte "xwg" vorkommt. Allerdings sind die Tabellenzellen leer, zu überprüfen ist das lediglich im Quelltext...


"xwg" dient auch lediglich der Selektion einer bestimmten Produktkategorie, ausgegeben werden sollen die zu "xwg" passenden Werte aus "art", "name" und "p1". Müssen diese drei Werte nochmals speziell abgefragt werden?

Link to post
Share on other sites

Upps, Kommando zurück!

Fehler in Zeile 9, muss dann wohl richtigerweise so lauten:

 

while($row = mysql_fetch_array($ergebnis))



Aber es funktioniert *jumparound* :-D:-D


@mahe:

auch danke! Hatte sich überschnitten, war zwischenzeitlich auch scho drauf gekommen!

Link to post
Share on other sites

Sooo...

wo´s nu funktioniert noch eine allgemeine Frage zur Performance bei der Abfrage: wenn die erste Ausgabe abgeschlossen ist, kommt logischerweise die nächste Ausgabe, dann die Nächste, usw. Nur nicht mehr nach "BOARDS" gefiltert, sondern beispielsweise nach "CPU", "RAM", usw... Auf Anhieb würde ich das jetzt so lösen:

 

\n".stripslashes($row[art])."\n";
  echo "".stripslashes($row[name])."\n";
  echo "".stripslashes($row[p1])."\n\n";
  }
$abfrage = "SELECT xwg, art, name, p1 FROM artikel WHERE xwg LIKE 'CPU' ORDER BY art";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
  {
  echo "\n".stripslashes($row[art])."\n";
  echo "".stripslashes($row[name])."\n";
  echo "".stripslashes($row[p1])."\n\n";
  }
?> 



Das würde insgesamt ca. 15-20 mal sow weitergehen. Meinem Verständnis nach ackert der jetzt jedes mal die komplette Datenbank ab um nach dem entsprechendem Kriterium zu filtern. Lässt sich das optimieren?


BTW, der Code dient jetzt nur noch zur veranschaulichung, unnötiges Beiwerk hab ich mal gekürzt...

Link to post
Share on other sites

Najo, wenn die Reihenfolge nicht so die Rolle spielt (also ob jetzt CPU über Boards oder umgekehrt oder so) würd ich das in einem Query machen.


Würde einfach ORDER BY xwg, art machen.

Da wird dann zuerst nach xwg sortiert (Board, CPU, ...) und darin dann nach art.


Wenn du daeine Trennung dazwischen haben willst musst du einfach immer xwg in einer Var speichern und dann im nächsten Durchlauf mit dem aktuellenxwg vergleichen.

Wenns nicht gleich is kommt dann halt die Trennung ;-)

Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...