Datenbankabfrage in Code einer Seite integrieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankabfrage in Code einer Seite integrieren

    Hallo!

    Ich habe ein Script, welches eine Datenbank ausliest und den Inhalt in einer Tabelle ausgibt. Jetzt will ich diese Tabelle aber in einer Seite integriert haben.
    Theoretisch müsste ich die Datenbankabfrage in den Code der Seite einbauen, aber wie? Ich habe dies probiert und erhalte andauernd nur Parse Errors....
    Ich muss die DB Abfrage in die Seite integrieren, da ich den Wert der Variable $cat, die bei der Abfrage benötigt wird, im Link für die Seite drinnenhabe.


    Philipp



    Der Code der Seite:

    <?php


    echo("<table cellspacing=0 cellpadding=0 width=720 align=center bgcolor=#333333
    border=0>
    <tbody>
    <tr bgcolor=#ffffff>
    <td width=6 bgcolor=#333333 rowspan=3>&nbsp;</td>
    <td bgcolor=#333333 height=10>&nbsp;</td>
    <td width=6 bgcolor=#333333 rowspan=3>&nbsp;</td>
    </tr>
    <tr bgcolor=#ffffff>
    <td valign=top><br>
    <table cellspacing=1 cellpadding=2 width=95% align=center bgcolor=#333333 border=0>
    <tbody>
    <tr bgcolor=#666666>
    <td width=5 bgcolor=#ff9900><b><font
    face=Verdana, Arial, Helvetica, sans-serif
    size=-2>&nbsp;</font></b></td>
    <td width=5 bgcolor=#999999><b><font
    face=Verdana, Arial, Helvetica, sans-serif
    size=-2>&nbsp;&nbsp;</font></b></td>
    <td bgcolor=#333333><b><font
    face=Verdana, Arial, Helvetica, sans-serif color=#999999
    size=-2>Links</font></b></td>
    </tr>
    </tbody>
    </table>
    <br>
    hier soll die Tabelle erscheinen<br>
    </td>
    </tr>
    <tr bgcolor=#ffffff>
    <td bgcolor=#333333 height=10>&nbsp;</td>
    </tr>
    </tbody>
    </table>");

    ?>


    Der Code der Abfrage:

    <?php

    include ("../database.inc.php4");

    //Auslesen der Datenbank.

    $Query = "SELECT id,adresse,name,beschreibung,date FROM p_linkliste_$cat";
    if (!($ergebnis = mysql_query ($Query, $verbindung))) {
    echo("Die Abfrage ist fehlgeschlagen!<P>");
    echo("Ihre Abdrage $Query war nicht erfolgreich!<P>");
    exit();

    }

    // HTML-Tabelle beginnen
    echo"<table width=95% border=0 cellpadding=2 cellspacing=1 bgcolor=#333333>
    <tr>
    <td bgcolor=#333333><font face=Verdana, Arial, Helvetica, sans-serif color=#CCCCCC size=1><b>Name der Seite</b></font></td>
    <td bgcolor=#333333><font face=Verdana, Arial, Helvetica, sans-serif color=#CCCCCC size=1><b>Beschreibung</b></font></td>
    <td bgcolor=#333333><font face=Verdana, Arial, Helvetica, sans-serif color=#CCCCCC size=1><b>hinzugef&#xFC;gt am</b></font></td>
    </TR>";

    // Alle Zeilen aus der DB holen
    // und in die HTML-Tabelle einfügen

    while ($zeile = mysql_fetch_object ($ergebnis)) {
    echo("<TR>");
    echo"<td bgcolor=#ffffff><font face=Verdana, Arial, Helvetica, sans-serif color=#333333 size=1><a class=main href=$zeile->adresse target=_blank>$zeile->name</a></a></font></td>";
    echo"<td bgcolor=#ffffff><font face=Verdana, Arial, Helvetica, sans-serif color=#333333 size=1>$zeile->beschreibung</font></td>";
    echo"<td bgcolor=#ffffff><font face=Verdana, Arial, Helvetica, sans-serif color=#333333 size=1>$zeile->date</font></td>";
    echo("</TR>");
    }

    echo("</TABLE>");

    //Bestehende Verbindung zur DB kappen.
    mysql_free_result($ergebnis);
    mysql_close($verbindung);

    ?>

  • #2
    Hallo,

    Du gibst die Tabelle ja mit echo aus. Jetzt kommt es darauf an, wo du das Script mit der Datenbankverbindung hast. Wenn das in einer anderen Datei liegt kannst du es einfach mit include einbauen.
    Ansonsten würde ich es in eine Funktion tun.

    echo "erster Teil der Tabelle";
    include("datenbankabfrage.php");
    echo "rest der Tabelle";

    Wenn du es mit der Funktion versuchen möchtest (z.B. weil du den Code mehrmals benutzen möchtest) solltest du allerdings die Verbindung außerhalb der Funktion herstellen bzw. beenden.

    Ansonsten kann ich dir nicht weiterhelfen, da du nicht beschrieben hast, was du bereits versucht hast und vor allem welche Fehler dabei aufgetreten sind.
    MfG
    Juggler

    Kommentar


    • #3
      Hi!

      Du bist noch nicht wirklich fit in PHP, kann das sein?

      Warum machst du die ausgabe mal mit echo(""); und mal mit echo"";? zu übersicht wäre es besser, wenn du dich auf eine Variante (bevorzugt echo"" festlegst, das schließt auch schon mal ein paar mögliche Fehler aus. Echos können auch über mehrere Zeilen gehen. Brauchst nicht jedes mal echo beenden und neu anfangen.

      free_result brauchst du wohl kaum. So groß wird dein Datensatz nicht sein, und du bist eh am ende des Scripts denke ich.
      closebrauchst du auch nicht, weil das automatisch gemacht wird.

      Parse Errors sind eigentlich die beliebtesten, weil da höchstens mal ein " oder so falsch gesetzt ist. Bei der Fehlerbehebung gehst du schritt für schritt vor. Guckst dir die Seite im Browser an, siehst welcher Fehler und vorallem WO er ist, wechselst wieder in deinen Editor und suchst nach dem Fehler.
      Bei anderen (T_string, "}", ";",... kann es schon mal sein, dass der Fehler ein paar Zeilen höher steckt. Aber ansonsten hat man den Fehler relativ schnell durch die Zeilenangabe gefunden.

      PS: Wenn du hier Postest, bitte immer mit Fehlermeldung und betreffender Stelle (Zeilennummerierung). Dann brauchst du auch nicht immer den ganzen Quelltext, sondern nur einen Auszug. Das erleichtert uns die Arbeit.

      In der Hoffnung dich nicht zu sehr verwirrt zu haben, viel Erfolg

      Kommentar


      • #4
        free_result

        sollte immer benutzt werden !

        Den Speicher, den ein ResultSet belegt, wird beim beenden NICHT
        freigegeben, wenn PHP als Modul läuft.
        Siehe Mysql Handbuch !

        Damit zwingst du deinen Apache Server ganz schnell in die Knie!
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          Re: Datenbankabfrage in Code einer Seite integrieren

          Original geschrieben von Philipp
          ...
          size=-2>Links</font></b></td>
          </tr>
          </tbody>
          </table>
          <br>
          hier soll die Tabelle erscheinen<br>
          </td>
          </tr>
          <tr bgcolor=#ffffff>
          <td bgcolor=#333333 height=10>&nbsp;</td>
          </tr>
          </tbody>
          </table>");

          ?>
          ...
          Mach an der markierten Stelle mal den Folgenden Code (ersetzen):
          PHP-Code:
          "; include("tabellenausgabe.php"); echo" 
          Das sollte dir helfen.

          Du speicherst den zweiten Code, den du gepostet hast (Der Code der Abfrage) als tabelleausgeben.php im gleichen Verzeichnis, wie den ersten Code ab.

          Kommentar


          • #6
            von PHP.net über mysql_free_result
            Die Funktion muss nur dann aufgerufen werden, wenn Sie sich bei Anfragen, die große Ergebnismengen liefern, Sorgen über den Speicherverbrauch zur Laufzeit des PHP-Skripts machen. Nach Ablauf des PHP-Skripts wird der Speicher ohnehin freigegeben.
            Zuletzt geändert von TobiaZ; 16.10.2002, 13:46.

            Kommentar


            • #7
              dies gilt nur wenn PHP als externe (unter Windows als EXE) DAtei ausgeführt wird.
              Wenn PHP als Modul läuft, müllst du den Speicher voll, da nicht der
              PHP Speicher zugemüllt wird, sondern der Datenbankzeiger auf MySQL Seite
              offen bleibt und den Speicher nicht freigibt.

              Deshalb auch mein Verweis auf das MySQL Handbuch.

              PS: Wennste das nicht glauben willst, probier es aus,
              habs auch nur so glauben wollen.
              Kleines Script:

              "select * from irgendwas" ohne Freigabe des Results,
              und dann ne Headerweiterleitung auf das selbe Script.
              Lass das mal ne Stunde laufen, dein Rechner freut sich
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Kommentar


              • #8
                Krass. Bleibt das für immer gespeichert, oder wie muss ich das verstehen? Aber das Close braucht man wirklich nicht, oder?

                Kommentar


                • #9
                  der Speicher wird erst wieder freigegeben, wenn der Webserver neu gestartet wird.

                  => hab ich erst böse lernen müssen dieses Verhalten (in einem größeren Projekt),
                  das war dann der Grund für meine selbstgeschriebene DB-Klasse,
                  die gibt den Speicher sofort wieder frei

                  Aber das mysql_close() brauch man wirklich nicht.
                  TBT

                  Die zwei wichtigsten Regeln für eine berufliche Karriere:
                  1. Verrate niemals alles was du weißt!


                  PHP 2 AllPatrizier II Browsergame

                  Kommentar


                  • #10
                    Gibbet die Klasse zum ansehen/abändern/benutzen???

                    Kommentar


                    • #11
                      die Klasse macht nichts anderes als alle Ergebnisse der Abfrage
                      in ein Array zu fetchen, das Result freizugeben, und dann das Array
                      zurückzugeben.
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        habs mir gedacht, hätte mir aber arbeit erleichtert/erspart

                        Kommentar

                        Lädt...
                        X