Seite 1 von 1
Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Do 31. Jul 2014, 19:24
von josh
Hallo,
das hat bisher funktioniert:
Code: Alles auswählen
$query = "SELECT * FROM con_meine_tabelle";
$res = $db->query($query);
$db->next_record();
for ($i = 1; $i <= $db->num_fields()-1; $i++) {
//Feldnamen auslesen
$feldname = mysql_field_name($res, $i);
echo $feldname;
}
Die Anzahl der Felder bekomme ich mit $db->num_fields()
Ich habe versucht die Felder mit $db->field_name($res, $i) zu holen. Das klappt aber auch nicht.
Kann jemand weiterhelfen?
josh
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Do 31. Jul 2014, 22:17
von homtata
Hallo Josh,
vielleicht gehts ja mit $db-f() irgendwie:
f( mixed $name, mixed $default = NULL )
Returns the desired field value from current record set.
Quelle:
http://api.contenido.org/con490/class-c ... etMetaData
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Do 31. Jul 2014, 22:44
von josh
Hallo Homtata,
Es geht so:
Code: Alles auswählen
//Feldnamen in Array schreiben und umdrehen
$data = $db->getMetaData( 'con_meine_tabelle', true);
$trans = array_flip($data['meta']);
$query = "SELECT * FROM con_meine_tabelle";
$db->query($query);
$db->next_record();
//Feldnamen abarbeiten
for ($i = 1; $i <= $db->num_fields()-1; $i++) {
$feldname=$trans[$i];
echo $feldname;
//...
}
Viele Grüße aus Ahlen
josh
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Fr 1. Aug 2014, 19:10
von rethus
Darf ich dir einen Tipp in Sachen Performance geben?
So etwas macht man nicht, wenn man performanten Code schreiben möchte:
Bedenke, dass hier bei jedem durchlauf der FOR-Schleife die DB-Funktion gestartet werden muss. Das kann gerade bei Schleifen mit großen Datensätzen, oder bei stark frequentierten Scripten ganz schön bremsen.
Besser ist es so:
Code: Alles auswählen
$performance_booster = $db->num_fields();
for ($i = 1; $i <= --$performance_booster; $i++) {
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Fr 1. Aug 2014, 19:21
von josh
Hallo rethus,
danke für den Tipp. Hab es sofort eingebaut und funktioniert.
Du hst recht, das war schon bei gw Basic so. Nur damals hat man mehr darauf geachtet.
War wohl mit Blindheit geschlagen
Viele Grüße aus Ahlen
josh
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Sa 2. Aug 2014, 08:50
von Zuschauer
rethus hat geschrieben:So etwas macht man nicht, wenn man performanten Code schreiben möchte:
Besser ist es so:
Code: Alles auswählen
$performance_booster = $db->num_fields();
for ($i = 1; $i <= --$performance_booster; $i++) {
... wobei du hier statt "-1" "--"
in der Schleife vor $performance_booster geschrieben hast, was für mein Verständnis bei jedem Schleifendurchgang dessen Wert reduziert.
Noch besser geht es allerdings so:
Code: Alles auswählen
for ($i = 1, $n = $db->num_fields(); $i < $n; $i ++) {
Das "-1" bleibt jetzt weg weil es nicht mehr "<=" heisst, sondern "<".
Gruß
Zuschauer
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Sa 2. Aug 2014, 09:20
von josh
Hallo Zuschauer,
die Anregung von rethus hatte zum Ziel das die Datenbank nicht bei jedem durchlauf der Schleife aufgerufen wird.
for ($i = 1, $n = $db->num_fields(); $i < $n; $i ++) {
Gruß josh
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Sa 2. Aug 2014, 13:51
von Zuschauer
josh hat geschrieben:die Anregung von rethus hatte zum Ziel das die Datenbank nicht bei jedem durchlauf der Schleife aufgerufen wird.
for ($i = 1, $n = $db->num_fields(); $i < $n; $i ++) {
Und wie man unschwer erkennen kann, steht das Auslesen der Anzahl jetzt in der ERSTEN Angabe der IF-Schleife - also dort, wo nur beim Start der Schleife gelesen wird - und wird in eine Variable zwischengespeichert.
In der zweiten Angabe der IF-Schleife, also nach dem ersten Semikolon (;), wird dann nur noch dieser Parameter abgefragt, und dies (zusammen mit Angabe 3) wird bei jedem Durchgang ausgeführt.
Die Möglichkeit, in der ersten Angabe mehrere Variablen für die Schleife zu initieren, wurde extra für solche Zwecke geschaffen.
Gruß
Zuschauer
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Sa 2. Aug 2014, 17:53
von josh
Hallo Zuschauer,
du hast meine indirekte Frage verstanden.
Danke für die gute Erklärung.
Jetzt geht es erstmal für 2 Wochen in den Urlaub.
Viele Grüße
josh
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Mo 4. Aug 2014, 09:17
von rethus
Zuschauer hat geschrieben:
Code: Alles auswählen
for ($i = 1, $n = $db->num_fields(); $i < $n; $i ++) {
Die Möglichkeit, in der ersten Angabe mehrere Variablen für die Schleife zu initieren, wurde extra für solche Zwecke geschaffen.
Cool, solange ich schon mit PHP programmiere, dass ist mir bisher noch nicht aufgefallen, steht aber auf php.net auch als Empfehlung und ist auch total logisch, wenn man erstmal drüber nachdenkt.
Also die Schreibweise einer for-Schleife in der im ersten Parameter kommasepariert mehrere Variablen zugewiesen werdern wird definitiv in meinen Fundus aufgenommen…
Ist zwar auf den ersten Blick (wenn man es nicht kennt) schwerer zu lesen, aber unterm Strich schon sauberer.
Wieder was gelernt. Danke Zuschauer.
Re: Probleme beim Auslesen von Feldnamen Datenbanktabelle
Verfasst: Mo 4. Aug 2014, 10:28
von Zuschauer
Immer gerne
Gruß
Zuschauer