[PHP/MySQL] Abfrage in mehrere Abschnitte unterteilbar?

shutdown

Erfahrenes Mitglied
Hi!

Ich hätte mal eine Frage:

Ich bin gerade dabei, mir ein Forum zu basteln.
Die grundsätzliche Navigation läuft über 3 Browserweichen:

$cat = $_GET['cat'];
$topic=$_GET['topic'];
$post=$_GET['post'];

Nun führe ich ein Select aus, mit dem ich mir alle Einträge aus der Datenbank hole, auf die diese drei Werte zu treffen.

zur Erklärung:
Eine Kategorie hat die Werte(cat/topic/post): x/0/0
Ein Topic: x/x/0
Ein Post: x/x/x

Somit ist ein Post genau definiert, wenn ich mir nun aber alle Kategorien anzeigen lassen will, dann ist die Abfrage nicht mehr eindeutig, da es ja mehrere Werte für x gibt.
Das ist ja auch so erwünscht!

Meine Frage ist nun folgende:

Kann ich, wenn ich eine Abfrage gestartet habe, die ja im Grunde intern im Speicher eine neue Tabelle mit den gewünschten Daten erzeugt, irgendwie die einzelnen Zeilen dieser Tabelle ansprechen.

In Excel gibts ja die Funktion Zeile().
Gibt es etwas ähnliches in PHP?

Mit mysql_fetch_object bekomme ich immer nur den ersten Eintrag der Tabelle, eine for-Schleife möchte ich eigentlich vermeiden, da ich dazu eine Art Steuerungs-ID einbauen muss, und wenn meine Abfrage dann später nicht zu aufeinanderfolgenden IDs führt, dann krieg ich ja Leereinträge.

Zudem möchte ich eigentlich nur einmal eine Abfrage starten und dann die Werte, die bereits im Speicher sind, weiterverarbeiten, wenn ich das ganze aber in eine for-Schleife schreibe, dann gibts ja schnell ein paar 100 Query's (zwar nicht bei den Kategorien, aber ganz schnell bei den Threads)

vielen Dank für euere Hilfe im Voraus!

cu shutdown
 
hmm muss meinem Vorredner (leider) recht geben so recht hab ich net verstande, aber ich würde auch keine for schleife empfehlen (hier nicht) eine while schleife eignet sich hier besser:
PHP:
while($row=mysql_fetch_object($mysqldaten){
//...bla bla 
print($row->id);
}
und eine begrenzung ließe sich am einfachsten mit der MySql Funktion() LIMIT lösen
Code:
SELECT name FROM einwohner LIMIT 20
gibt die ersten 20 Einträge aus.
Code:
SELECT name FROM einwohner LIMIT 20,40
gibt Eintrag 20 bis 40 aus.

Hoffe das hilft dir;)
 
Zum Ansteuern einer bestimmten Zeile verwendet man die Funktion mysql_data_seek

Das mit den angeblichen 100 Queries ist mir vollkommen unklar. Glaubst du denn, dass die Funktion mysql_fetch_object eine Datenbankabfrage ausführt? Gerade sie arbeitet ja auf dem ResultSet, das von einer Abfrage zurückgegeben wird, ergo auf Arbeitsspeicher und kein Festplattenzugriff.
 
Okay, vielleicht habe ich mich etwas unglücklich ausgedrückt, aber Command hat genau erraten, was ich wollte:

PHP:
PHP-Code:
while($row=mysql_fetch_object($mysqldaten){ 
//...bla bla 
print($row->id); 
}

Mir ging es darum: Mein Select ruft nicht nur einen einzigen Datensatz ab, bei dem ich direkt die einzelnen Bestandteile ansteuern könnte, sondern mehrere Datenzeilen, die ich nacheinander geordnet ausgeben wollte.

Und das funktioniert wunderbar so wie von Command vorgeschlagen - vielen Dank dafür! :-)

cu shutdown
 
Zurück