Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP / MySQL] Abfrageeditor basteln (https://www.delphipraxis.net/141694-%5Bphp-mysql%5D-abfrageeditor-basteln.html)

Luckie 14. Okt 2009 09:30


[PHP / MySQL] Abfrageeditor basteln
 
Ich habe hier eine private Adressdatenbank. Da habe ich schon ein paar Abfragen erstellt, die über Links verfügbar sind. Jetzt wäre ich aber gerne noch etwas flexibel und würde gerne beliebige Abfragen formulieren können. Ich dachte da ein eine Eingabefeld für die Abfrage und an eine Schaltfläche zum Abschicken der Abfrage. Soweit kein Problem. Nur wie bekomme ich jetzt das Ergebnis der Abfrage gescheit formatiert ausgegeben? Ich kann ja keine Tabelle mit fest vorgegebenen Spalten, da die Spaltenanzahl ja nicht fest steht.

Wie löst man so ein Problem am besten?

Eigentlich müsste ich ja nur wissen, welche Spalten in der Ergebnismenge enthalten sind.

himitsu 14. Okt 2009 09:37

Re: [PHP / MySQL] Abfrageeditor basteln
 
Dann erstell doch einfach eine Tabelle mit dynamischer Spaltenanzahl?

je Eintrag/Row einen Block mit <tr> anfangen (am Ende natürlich mit </tr> wieder schließen)
und dann einfach je Feld/Col einfach einen <td>...</td>-Eintrag dort rein :gruebel:

[edit]
Zitat:

Eigentlich müsste ich ja nur wissen, welche Spalten in der Ergebnismenge enthalten sind.
du kannst natürlich auch den Aufbau der Tabelle abfragen :angel2:

[add]
http://dev.mysql.com/doc/refman/5.1/de/describe.html
http://dev.mysql.com/doc/refman/5.1/...w-columns.html

Luckie 14. Okt 2009 10:00

Re: [PHP / MySQL] Abfrageeditor basteln
 
Zitat:

Zitat von himitsu
Dann erstell doch einfach eine Tabelle mit dynamischer Spaltenanzahl?

Das muss ich ja sowieso. Nur wie komme ich an die betroffenen Spalten dran?

Zitat:

[edit]
Zitat:

Eigentlich müsste ich ja nur wissen, welche Spalten in der Ergebnismenge enthalten sind.
du kannst natürlich auch den Aufbau der Tabelle abfragen :angel2:
Was will ich mit dem Aufbau der Tabelle? Ich brauche die vom Query betroffenen Felder.

Zum Beispiel:
SQL-Code:
SELECT name, vorname FROM adressen WHERE name='himitsu'
So, die Tabelle Adressen besteht natürlich aus wesentlich mehr Feldern, aber ich bräuchte jetzt nur eine Tabelle mit zwei Spalten. Stehen die betroffenen Spalten irgendwie in der Ergebnismenge drin?

chaosben 14. Okt 2009 10:13

Re: [PHP / MySQL] Abfrageeditor basteln
 
Zitat:

Zitat von Luckie
Stehen die betroffenen Spalten irgendwie in der Ergebnismenge drin?

Ja, wenn du die Ergebnisse z.B. mit mysql_fetch_assoc liest, bekommst du eine assoziatives Array. Dann nur noch schnell die Feldnamen auslesen (foreach (array as $Spaltenname => $Wert)) und fertig.

himitsu 14. Okt 2009 10:15

Re: [PHP / MySQL] Abfrageeditor basteln
 
Zitat:

Ich brauche die vom Query betroffenen Felder.
ok :wall:

nja, wenn du z.B. über mysql_fetch_assoc eine Zeile ausließt, dann hast du doch im zurückgegebenen Array die Anzahl drinnen?
= Anzahl der Felder im Array

Luckie 14. Okt 2009 10:18

Re: [PHP / MySQL] Abfrageeditor basteln
 
Ah, danke, das wollte ich wissen. Nur leider scheint die verlinkte Seite nicht zu funktionieren, aber ich weiß ja jetzt wo nach ich suchen muss.

@himitsu:
Bisher mache ich es so:
Code:
$query = "SELECT name, vorname, priv_gebdat FROM adressen WHERE (name <> '' OR vorname <> '') AND priv_gebdat <> '0000-00-00' ORDER BY priv_gebdat";
               $resultset = mysql_query($query);
               echo "<tr><th>Name</th><th>Vorname</th><th>Geburtsdatum</th></th><th class=\"screenonly\">Aktionen</th></tr>\n";
               while($row = mysql_fetch_object($resultset))
               {
                  echo "<tr>
                     <td>".$row->name."</td>
                     <td>".$row->vorname."</td>
                     <td>".$row->priv_gebdat."</td>
                     <td class=\"screenonly\">[url='./details.php?id=".$row->id."'][img]./images/view.jpg[/img][/url]
                        [url='./form.php?id=".$row->id."'][img]./images/edit.jpg[/img][/url]
                        [url='./delete.php?id=".$row->id."'][img]./images/delete.jpg[/img][/url]
                     </td>
                     </tr>";
               }

Luckie 14. Okt 2009 10:25

Re: [PHP / MySQL] Abfrageeditor basteln
 
Kommando zurück!

@chaosben: Das kann ich auch nicht brauchen:
Code:
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}
Da muss ich ja sogar den Namen der Felder wissen, um an die Daten zu kommen. Aber gerade die weiß ich ja nicht, weil sie ja beliebig, in Abhängigkeit der Abfrage, sein können. Sie Beispiel oben.

himitsu 14. Okt 2009 10:26

Re: [PHP / MySQL] Abfrageeditor basteln
 
in kurz würde ich es wohl etwa so machen
Code:
while($row = mysql_fetch_assoc($resultset))

  echo "<tr>";
  foreach($row as $col)
  { 
    echo "<td>".$col."</td>
  }
  echo "</tr>";
und im Notfall könnte man aus dem ersten Datensatz noch die Feldnamen auslesen
Code:
$b = true;
while($row = mysql_fetch_assoc($resultset))

  if ($b) {
    echo "<tr>";
    foreach($row as $name => $value)
    { 
      echo "<td>".$name."</td>
    }
    echo "</tr>";
    $b = false;
  }
  echo "<tr>";
  foreach($row as $col)
  { 
    echo "<td>".$col."</td>
  }
  echo "</tr>";
[add]
bei mysql_fetch_object mußt du die Felder ja auch wissen
und ob jetzt nun mysql_fetch_object mit $row->vorname
oder mysql_fetch_assoc mit $row["vorname"], macht ja nun keinen großen unterschied.

aber bei dem assoziativen Array kannst du ja Namen und Values auslesen (bei Object wüßte ich jetzt nicht, ob/wie das gehen könnte)

chaosben 14. Okt 2009 10:30

Re: [PHP / MySQL] Abfrageeditor basteln
 
Zitat:

Zitat von himitsu
und im Notfall könnte man aus dem ersten Datensatz noch die Feldnamen auslesen

Nicht nur im Notfall ... genau das ist der tiefere Sinn. :-) (foreach-Anweisungen sind sowas schönes)

//edit:
Noch schöner gehts natürlich mit einer Schleife von 0 bis mysql_num_fields - 1 und der Funktion mysql_field_name.

Ein 3faches Wuppdi auf eine Referenz! :)

Luckie 14. Okt 2009 11:25

Re: [PHP / MySQL] Abfrageeditor basteln
 
Ok, soweit funktioniert das. Nur wenn ich das Formular abschicke macht er mir so was:
Code:
select name, vorname from adressen where name=\'puff\' order by name, vorname
also diese komischen Schrägstriche. Das führt natürlich zu einer ungültigen Abfrage. Gut, die bekomme ich mit str_replace weg, aber woher kommen die?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz