1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Daten per PHP aus SQL-Datenbank abrufen?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von C64, 07.11.08.

  1. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Hallo zusammen,

    ich hoffe, dass ich nicht ein allzugroßes Ding anstoße, aber ich denke, meine Sache ist vermutlich relativ easy zu lösen.
    Ich habe in meinem aktuellen Projekt das erste Mal mit wordpress auch eine Datenbank eingesetzt (ich würde wohl nie mehr was anderes wollen;) ).
    Allerdings fehlt mir absolut die Erfahrung. Ich habe nun eine Tabelle mit PHP erstellt (auch hier verstehe ich relativ wenig und erstelle das oft mit Hilfe von Google und learning by doing):
    Dieses Skript ist nun dazu da, um die Termine, die ich derzeit noch händisch in den Code eingeben muss, auf ihre Aktualität zu checken und gegebenenfalls mit abwechselnden Zeilenfarben in einer Tabelle auszugeben.
    Nun würde ich die Termine aber evtl. gerne auf verschiedenen Seiten verwenden, ohne jedes Mal alle Seiten zu aktualisieren. Daher natürlich wieder eine Datenbanklösung;)
    Da ich mich aber nicht auskenne:
    Wie kann ich eine Tabelle in der Datenbank auslesen und die $termine so definieren, wie ich es derzeit händisch mache? Wie müsste die Tabelle in SQL aussehen?
    Bisher habe ich dieses Plugin verwendet, um Tabellen zu erstellen, allerdings möchte ich eben bei den Terminen ein eigenes Skript verwenden, um die Tabelle aktuell zu halten. Allerdings könnte ich dieses Plugin weiterhin bequem verwenden, um die Tabellen in der Datenbank zu erzeugen (bzw. von den anderen Moderatoren verwenden lassen!).
    Ich müsste also "nur" die Zeilen:
    ...ersetzen mit der Abfrage der Datenbank und der Zuteilung der einzelnen Spalten auf die drei Dimensionen der Variablen, richtig?
    Wie könnte so etwas aussehen?

    Danke schon mal im Voraus:-D

    EDIT: Hier noch die Homepage, um die es sich dreht;)
     
    #1 C64, 07.11.08
    Zuletzt bearbeitet: 07.11.08
  2. dewey

    dewey Gewürzluiken

    Dabei seit:
    01.05.06
    Beiträge:
    5.732
    also so wie wirs gelernt haben:

    als erstes verbindung zur datenbank aufbaun:
    und dann wenn du in der datei was aus der datenbank auslesen willst:
     
    C64 gefällt das.
  3. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Super - danke dir schon mal. Google wird mir die Befehle erklären;)

    D.h. ich muss die Verbindung jedesmal öffnen (bzw. das Skript) - Wordpress macht nichts anderes? Oder ist die Verbindung schon offen, weil ja Wordpress sowieso schon zugreift - ich sehe nur nix, was die Verbindung schließen würde? Und das ganze ist dann auch "sicher", wenn ich das so schreibe?
     
  4. dewey

    dewey Gewürzluiken

    Dabei seit:
    01.05.06
    Beiträge:
    5.732
    also du kannst die verbindungsdaten in eine connect.php reintun und diese am anfang des dokuments wo du die daten auslesen willst mit dem include befehl einbinden. ich weis natürlich nicht ob das sicher ist aber so haben wir das in der schule halt gelernt :D
     
  5. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Ok;)
    Ich hab mir mal die Tabelle angesehen, die mir das Plugin produziert:
    Table_id ist der Wert, um welche angelegte Tabelle im Plugin es sich handelt (ich kann diese dann zB mit [table=3] einbinden).
    Row_id ist die Zeilennummer.
    Value ist der Inhalt.
    result_aid müsste eine fortlaufende Nummerierung sein, mit deren Hilfe man die Spalten sortieren könnte (also zB ich nehme table_id=3, row_id=2 und sortiere die 3 result_aid-Werte die ich bekomme vom kleinsten zum größten).

    Wie müsste nun der Befehl also lauten, wenn ich die Tabelle wp_golfresult habe und die Variable Termine für zB die table_id=3 genauso aussehen lassen möchte, wie ich es händisch mache?

    Danke;)

    Edit: Also Google hilft mir soweit weiter:
    $termine[]="SELECT * FROM wp_golfresult WHERE table_id=13 ORDER BY result_aid";
    Erreiche ich damit aber sicher noch nicht das, was ich möchte richtig?


    Ich möchte ja die genaue Struktur später so haben:
    $termine[] = array('tag' => '2008-12-12', 'zeit' => '19.00', 'beschreibung' => 'XY', 'dauer' => '0');

    Edit2:
    So dürfte es schon besser sein
    Aber mich immer noch nicht zur Struktur meiner vorherigen Variblen bringen...
     

    Anhänge:

    #5 C64, 07.11.08
    Zuletzt bearbeitet: 07.11.08
  6. dewey

    dewey Gewürzluiken

    Dabei seit:
    01.05.06
    Beiträge:
    5.732
    bei mir ist das leider schon ein jahr her drum kenn ich mich damit nicht mehr so aus. darum kann ich dir auch die befehle nicht mehr im einzelnen erklären :D aber vl kann dir wer anderer weiterhelfen.
     
  7. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564

    Wenn die Felder genau so in der Datenbank heißen:
    Code:
    SELECT tag, zeit, beschreibung, dauer FROM ...
    Wenn nicht:
    Code:
    SELECT feldnametag AS tag, feldnamezeit AS zeit...
    EDIT: Ist das im Screenshot wirklich die Struktur? Leider ein wenig dämliches Datenbankdesign...

    Code:
                                 
    $result = mysql_query("SELECT value FROM wp_golfresult WHERE table_id=3 ORDER_BY result_aid DESC");
    while ($row = mysql_fetch_array($result))
    {
    $beschreibung = $row[value];
    $zeit = mysql_fetch_array($result)
    $tag = mysql_fetch_array($result)
    $termine[] = array('tag' => $tag, 'zeit' => $zeit, 'beschreibung' => $beschreibung);
    
    }
    
    
     
    #7 Bananenbieger, 07.11.08
    Zuletzt bearbeitet: 07.11.08
  8. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Die Tabelle schaut genauso aus, wie im Anhang von Post #5 gezeigt.
    Das heißt jede Zeile der "Termintabelle" ist auf 3 Zeilen in der Datenbanktabelle aufgeteilt, wobei jeweils die Spalte "value" den Inhalt der Zelle in der Termintabelle beinhaltet.

    Das hieße ich müsste zunächst alle Daten mit der table_id=3 auslesen, diese gleichzeitig nach result_aid sortieren lassen und dann jeweils 3 Werte in eine Zeile der neuen Feld-Variablen packen, oder?
    Ich bekomme ja beim Auslesen:
    und brauche aber
    Kann das jemand in Code zusammenfassen?

    EDIT: Ok danke Bananenbieger. Werde ich gleich mal ausprobieren. Jap, die Struktur scheint mir auch etwas dämlich wobei das Plugin ansonsten sehr sinnvoll ist;)
    Schade, ich kann dir kein Karma geben:( Hab dich erst bewertet...
     
  9. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    So funktioniert mein oben beschriebener Code nach dem EDIT.

    Allerdings gibt das Teil nur eine Zeile aus, nämlich für table_id=3. Wenn Du die WHERE-Bedinung änderst und unten $termine[] loopbar machst, funktioniert es mit Deiner Datenbank.

    Code:
    $result = mysql_query("SELECT value FROM wp_golfresult ORDER_BY result_aid DESC");
    
    $i=0; // Index für die Array-Zeile
    
    while ($row = mysql_fetch_array($result))
    {
    $beschreibung = $row[value];
    $zeit = mysql_fetch_array($result)
    $tag = mysql_fetch_array($result)
    $termine[$i] = array('tag' => $tag, 'zeit' => $zeit, 'beschreibung' => $beschreibung);
    $i++;
    }
    
    Danach hast Du ein zweidimensionales Array $termine[] mit der gewünschten Struktur pro Zeile.
     
  10. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Danke für deine Hilfe!
    Leider klappt es immer noch nicht:
    So schaut das ganze bei mir im Moment aus (ich habe es wieder auf table_id=3 beschränkt)
     
  11. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    In Zeile 26 und 27 fehlt je ein Semikolon am Ende der Zeile:
    Code:
    $zeit = mysql_fetch_array($result);
    $tag = mysql_fetch_array($result);
    
    Wenn Du es brauchst, kannst Du die Table-Beschränkung wieder herausnehmen.
     
  12. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Das hatte ich schon ausgebessert und dann kam das hier (wobei da doch kein Semikolon hingehört oder?):
    Die Beschränkung brauche ich;)
     
  13. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Was genau steht bei Dir in Zeile 26?

    Die Fehlermeldung bedeutet, dass keine gültige MySQL-Ergebnistabelle übergeben worden ist.

    Und noch was ist mir aufgefallen: Ich hatte aus versehen übersehen, dass $tag und $zeit ja Arrays sind. Es muss also richtig heißen:
    Code:
    $zeit = mysql_fetch_array($result)
    $tag = mysql_fetch_array($result)
    $termine[$i] = array('tag' => $tag[value], 'zeit' => $zeit[value], 'beschreibung' => $beschreibung);
    
     
  14. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Inzwischen ist es die Zeile 27:
    Wenn du die runtime.php meinst:
    In meinem Skript steht:
     
  15. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Mach erst mal am Ende der Zeilen 26 und 27 ein Semikolon.

    Falls es dann noch nicht läuft, müssen wir mal die Datenbankabfrage testen.
     
  16. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Hab ich auch gleich noch mal probiert;)
    Hier ist der mal der Link zur Preview.
     
  17. dewey

    dewey Gewürzluiken

    Dabei seit:
    01.05.06
    Beiträge:
    5.732
    hast du in die connect datei die richtigen daten eingegeben? was kommt, wenn du die datei ausführst (im browser)? wenn es weiß bleibt funktionierts. aber es gibt sicher noch eine professionellere methode denk ich :D
     
  18. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Die Verbindung müsste ja eigentlich noch offen sein, weil ja wordpress auch kontinuierlich darauf zugreift.
    Wenn ich die Verbindung noch mal eplizit aufbaue, dann verschiebt sich nur die Zeile des Fehlers...

    Edit: Hab den Code mal speparat in eine html gepackt und bekomme diesen Fehler:
    Das ist genau diese Zeile:
     
  19. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    Füg mal unter die "$result="-Zeile folgendes ein:
    Code:
    echo mysql_errno() . ": " . mysql_error(). "\n";

    Dann sollten wir sehen ,was Sache ist.
     
  20. C64

    C64 Halberstädter Jungfernapfel

    Dabei seit:
    12.04.06
    Beiträge:
    3.836
    Separate test.php
    Im Wordpress:
    Das klingt mal gut!
    ORDER_BY wird ORDER BY ;)
    Danke schon mal! ... auch wenn er offensichtlich alles wirr zeigt, aber das bekomme ich vll. selbst hin;) (siehe hier)

    So, es wird langsam. hab noch "AND row_id>1" hinzugefügt und damit fallen auch die "falschen Daten" raus:)
    Jetzt muss ich noch das falsch eingetragene Datum verbessern und dann müsste es klappen!
    Vielen, vielen DANK!!!!!
     
    #20 C64, 07.11.08
    Zuletzt bearbeitet: 07.11.08

Diese Seite empfehlen