Seite 1 von 1

DB-Abfrage

Verfasst: Fr 7. Jan 2005, 16:39
von netronaut
Hallo,

wenn man eine DB-Abfrage mit den Contenido-Klassen ausführt, sieht das ja wie folgt aus:

$query = "SELECT * FROM table WHERE ...";
$db->query($query);
while ($db->nextRecord()) {

...

}

In der while-Schleife kann man mit $db->f('feldname') den Wert der Datenbankspalte mit der Bezeichnung "feldname" bekommen.

Wie sieht es aber aus, wenn man in einer Schleife alle Spalten durchgehen möchte, um dann die Werte zu verwerten? Bei einer "normalen" SQL-Abfrage würde ich eine Schleife wie diese hier

while ($row = mysql_fetch_array($result)){
foreach ($row as $key => $val) {

}
}

verwenden.

Gibt es in den Contenido-Klassen auch eine Funktion, um den aktuellen Datensatz als Assoziatives Array zu erhalten, um dann eine foreach-Schleife wie oben darauf anzusetzen? Leider habe ich bisher keine solche Funktion in der DB-Klasse gefunden...

Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe, ist nicht ganz so einfach.

Vielen Dank schon mal im Voraus,
Olaf

Verfasst: Fr 7. Jan 2005, 16:50
von timo
ja es gibt 2 Möglichkeiten...

die erste: mit der Methode num_fields die Anzahl der Felder erfragen und dann mit $db->f(feldnummer) rausholen

oder mit der Funktion metadata() die Metadaten (also die Felder) erfragen und dann dasselbe wie oben...

Verfasst: Fr 7. Jan 2005, 18:09
von netronaut
Hallo,

vielen Dank für die superschnelle Antwort, das werde ich gleich mal ausprobieren!

Zwischenzeitlich habe ich sogar noch eine dritte (aber nicht ganz Contenido-konforme) Lösung gefunden:
mit query_id() die Result-Nummer rausfischen, dann mit einem einfachen $row = mysql_fetch_array(query_id()) den Datensatz holen und mit foreach auslesen.

Aber dann verlässt man ja die Contenido-Klasse, weil man nicht mehr next_record() benutzt, das ist natürlich nicht so schön. Am besten wäre es, wenn next_record gleich das assoziative Array des aktuellen Datensatzes zurückgeben würde (bzw. 0, wenn es keinen weiteren Datensatz gibt). Vielleicht eine Idee für die Version 4.5.

Also nochmal vielen Dank!

#:-) olaf

Re: DB-Abfrage

Verfasst: Do 2. Apr 2009, 17:00
von plamedi
Hallo,

vielen Dank für die Antwort, vielleicht ist es u spat hier zu schreiben, aber ich habe's fur tagen probirert und jett habe ich die Losung (sogar drei Losiungen) gefunden, kann kaum warten es aus zu probieren!

Nochmal vielen Dank!

Re: DB-Abfrage

Verfasst: Fr 3. Apr 2009, 08:20
von MichFress
es gibt noch eine Methode, die eine Zeile des Ergebnisses als Array zurückgibt - das wäre wohl am ehesten das, was du suchst... Find ich aber gerade auf die Schnelle nicht wieder.