Problem mit SQL auslesen

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

  • Problem mit SQL auslesen

    Hallo Gemeinde ,
    irgendwie kriege ich nicht das hin was ich will,
    zumindest will ich eventuell auch zu viel ??

    ich [COLOR=red]möchte[/COLOR] gerne in einer php datei eine sql abfrage machen und die
    ausgelesenen Ergebnisse anzeigen lassen.
    Nun das kriege ich gebacken jedoch möchte ich dann wenn eine bestimmte Aktion passiert,
    das er dann auf eine funktion in einer anderen datei zugreift die ebenfalls aus der Datenbank eine Abfrage startet und ausgibt.
    Das Problem vor welchem ich stehe ist irgend wie das er die Abfrage in der Funktion zwar startet,
    jedoch ständig nur das erste Resultat ausgibbt...

    meine Scripts sehen im Folgenden so aus :

    anzeige.php

    PHP-Code:
    if (!$_GET['o']) $o="filename";
    else 
    $o=$_GET['o'];
    $sql="SELECT * FROM files WHERE active='1' ORDER BY ".$o;
    $res=send_sql($db,$sql);
    //......
    // Jetzt kommt die ausgabe der Daten mittels while schleife
    // 
    //......
    // Das ist nun der zugriff auf die Classe mit
    // ebenfalls einer SQL Abfrage
    require_once("class_filelist.php");
    $filess = new files();

    echo 
    $filess->filepreview($file,$zelle); 
    class_filelist.php

    PHP-Code:

    class files{

     function 
    filepreview($id,$zeile){

      
      
    $sql="SELECT * FROM files WHERE ID=$id";
      
    $res=send_sql($db,$sql);
      
    $result=mysql_fetch_array($res,MYSQL_ASSOC);

    // jetzt wird das result array an eine variable übergeben und 
    // die einzelnen punkte ausgelesen

    $tabellekopf="$result[Filename]";

    echo  
    $tabellekopf;
    }

    Die Ausgabe funktioniert zwar jedoch wird aus mir unwissenden Gründen immer nur das erste Resultat der funktions abfrage ausgegeben.

    Hoffe es ist verständlich was ich vorhabe und ihr könnt mir ne hilfestellung geben wo ich anfangen sollte zu suchen

    Ach ja : beide sql abfragen greifen auf die selbe tabelle zu (???)

  • #2
    Aus deinem Code geht nicht hervor, woher die Parameter für die Funktion ($file, $zelle) kommen. Ausserdem wird fetch_assoc() in der Funktion nur einmal aufgerufen, ergo erhälst du das erste Resultat. Wenn du nicht SELECT * FROM schreiben würdest, sähe man vielleicht etwas von der Tabellenstruktur.

    Und
    PHP-Code:
    $tabellekopf="$result[Filename]"
    muss
    PHP-Code:
    $tabellekopf $result["Filename"]; 
    heissen
    Gruss
    H2O

    Kommentar


    • #3
      Ausserdem wird fetch_assoc() in der Funktion nur einmal aufgerufen, ergo erhälst du das erste Resultat.
      Wieviele Resultate sollte denn die Abfrage bringen wenn als Bedingung explizit die ID angegeben wird? . Ausser natürlich ID ist nicht das wofür ich es halte also nicht UNIQUE...
      muss
      PHP:--------------------------------------------------------------------------------
      $tabellekopf = $result["Filename"];

      --------------------------------------------------------------------------------
      heissen
      Würde sagen 'sollte' weil PHP Vars in Strings mit " sehr wohl findet und ersetzt. Die erste Möglichkeit müsste auch funzen.
      Und wenn schon dann würde ich dann
      PHP-Code:
      $tabellekopf $result['Filename']; 
      Gruss

      tobi
      empfehlen
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Original geschrieben von jahlives

        Würde sagen 'sollte' weil PHP Vars in Strings mit " sehr wohl findet und ersetzt. Die erste Möglichkeit müsste auch funzen.
        Und wenn schon dann würde ich dann
        PHP-Code:
        $tabellekopf $result['Filename']; 
        empfehlen
        Ich auch, es ging mir aber auch nur darum, auf die fehlenden Anführungszeichen beim Index hinzuweisen
        Gruss
        H2O

        Kommentar


        • #5
          hmm ... ich habe in meinen Scriptbeispielen natürlich sehr viel abgespeckt

          Kompletter Code von class_filelist.php ist
          PHP-Code:
          <?php
          // Klasse Filelist
          //  $rechtwert=4;
          // require_once("login.inc.php");


          class files{

           function 
          filepreview($id,$zeile){

            
            
          $sql="SELECT * FROM files WHERE ID=$id";
            
          $res=send_sql($db,$sql);
            
          $result=mysql_fetch_array($res,MYSQL_ASSOC);
            
          $zeile $_GET[zeile];
            
            
            
          $tabellekopf="
            
            <table bgcolor='dddddd' width='300' class='filetabelle'>
              <tr class='filetabellehead'>
                <td colspan='2' align='center'>
          $text[details]</td>
              </tr>
              <tr>
                <td colspan='2' align='center'><img src='.."
          .$result[PathToThumbnail]."'></td>
              </tr>
              <tr>
                <td>
          $text[dateiname]</td>
                <td>
          $result[Filename]</td>
              </tr>
              <tr>
                <td>
          $text[dateigroesse] KB</td>
                <td>
          $result[FileSize]</td>
              </tr>
              <tr>
                <td>
          $text[mimetyp]</td>
                <td>
          $result[Mime]</td>
              </tr>
              <tr>
                <td>
          $text[dauer] Sek</td>
                <td>
          $result[Duration]</td>
              </tr>
              <tr>
                <td>
          $text[aufloesung] Pixel</td>
                <td>
          $result[Resolution]</td>
              </tr>
              <tr>
                <td>
          $text[datum]</td>
                <td>
          $result[UploadDate]</td>
              </tr>
            </table>"
          ;
            echo  
          $tabellekopf;
            
          print_r($res);
            }
          }
          ?>
          wenn ich die '' setze kommt folgende Fehlermeldung



          Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in
          C:\xampp\htdocs\CDS\bin\class_filelist.php on line 22

          Kommentar


          • #6
            hat denn keiner einen Lösungsansatz ?

            Kommentar


            • #7
              Wurde doch schon genannt.

              Du rufst doch auch nur einen Datensatz auf...

              WHILE
              gruss Chris

              [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

              Kommentar


              • #8
                PHP-Code:
                $result[PathToThumbnail
                schau dir das mal genau an und informier dich bitte über zeichenketten

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  hmm ja eben nicht
                  die ausgabe soll mir ja in der anzeige.php einmal alle datensätze anzeigen und dann soll er auf eine Klasse zugreifen.
                  in der Klasse wird die ID abgefangen ein Datensatz "Sollte generiert werden" in eine Variable geschrieben und dann zurückgegeben werden an anzeige.php
                  diese Variable "sollte" dann gleich rechts neben den Datensätzen ausgegeben werden.

                  die Ausgabe funktioniert ja einwandfrei jedoch wird mir nicht die gewünschte ID angezeigt sondern nur die erste ID.
                  PHP-Code:
                  $result['PathToThumbnail']
                  //oder
                  $result[PathToThumbnail
                  wird dennoch angezeigt.
                  Zuletzt geändert von Postaria; 04.10.2007, 17:04.

                  Kommentar


                  • #10
                    Original geschrieben von Kropff
                    informier dich bitte über zeichenketten
                    und über PHP-Variablen in HTML-Code. Wenn dein error_reporting() höher eingestellt wäre, müsstest du eigentlich jede Menge Fehlermeldungen erhalten.

                    Weiter Fragen:
                    - Warum machst du eine Klasse, die als einziges Member eine Funktion und sonst gar nichts enthält? Da würde die Funktion allein ja völlig genügen und von der brauchst du dann auch keine Instanz zu erstellen
                    - Was ist send_sql()für eine Funktion
                    - SELECT * FROM für ein einziges Attribut??

                    [edit]
                    Soeben habe ich gesehen, dass du ja zweimal die gleiche Abfrage abschickst. Wozu denn?, du hast die Id ja schon bei der ersten erhalten
                    Zuletzt geändert von H2O; 04.10.2007, 17:15.
                    Gruss
                    H2O

                    Kommentar


                    • #11
                      hmm ja eben nicht
                      Ja eben doch.

                      $result=mysql_fetch_array($res,MYSQL_ASSOC);
                      = 1 Datensatz
                      gruss Chris

                      [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                      Kommentar


                      • #12
                        @hhcm ->
                        in der funktion soll ja auch nur ein Datensatz ausgelsesen werden

                        da kommen bald wenn ich das hier geschafft habe noch andere funktionen in die Klasse deswegen habe ich gleich die Klasse benutzt.
                        PHP-Code:
                        class files{

                         function 
                        filepreview($id,$zeile){

                          
                          
                        $sql="SELECT * FROM files WHERE ID=$id";
                          
                        $res=send_sql($db,$sql);
                          
                        $result=mysql_fetch_array($res,MYSQL_ASSOC);

                        // jetzt wird das result array an eine variable übergeben und 
                        // die einzelnen punkte ausgelesen

                        $tabellekopf="$result[Filename]";

                        echo  
                        $tabellekopf;
                        }

                        Ich hatte in meinem ersten Beitrag gekürzt weil ich dachte wäre eventuell nicht so ganz interresant ich poste das hier nochmal

                        das ist die anzeige.php
                        hier liest er alle Daten aus der Tabelle und zeigt diese an
                        PHP-Code:

                        $sql
                        ="SELECT * FROM files WHERE active='1' ";
                        $res=send_sql($db,$sql);

                        while (
                        $result=mysql_fetch_array($res,MYSQL_ASSOC)) {

                        echo 
                        "<a href='$PHP_SELF?id=$result[ID]&zeile=$i'>$i</a>

                        $i$i+1;
                        }
                        $file=$_GET['id'];
                        $zelle=$_GET['zeile'];

                        for (
                        $j=1;$j<=$i;$j++){

                        if (
                        $zelle == $j){

                        include("
                        class_filelist.php");
                        $filess = new files();

                        echo 
                        $filess->filepreview($file,$zelle); 
                        //echo filepreview(
                        $file,$zelle);
                        }else{
                        echo "
                        &nbsp;";
                        }
                        echo "
                        </td></tr>"; 


                        Kommentar


                        • #13
                          Und dieses Forum hier zeigt dir nicht schon anhand des Syntaxhighlightnings wo dein Problem liegt? Oder ist

                          PHP-Code:
                          // DAS
                          echo "<a href='$PHP_SELF?id=$result[ID]&zeile=$i'>$i</a> 
                          auch gekürzt? Da fehlt nämlich was..

                          error_reporting steht auf E_ALL ?

                          display_errors in der php.ini auf 1?
                          gruss Chris

                          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                          Kommentar


                          • #14
                            Nein weder Fehlermeldung noch fehlerhafte übergabe !
                            die übergabe funktioniert jedoch ist das problem irgendwie das er die abfrage in der Klasse/funktion nicht richtig handelt...

                            Denn wenn ich echo $id in der classe benutze gibt er mir die richtige id raus aber irgendwie macht er die Abfrage nicht in der Klasse bzw. kann mit
                            PHP-Code:

                             $sql
                            ="SELECT * FROM files WHERE ID=$id";
                              
                            $res=send_sql($db,$sql);
                              
                            $result=mysql_fetch_array($res,MYSQL_ASSOC); 
                            nicht anfangen
                            bzw. kann er innerhalb der klasse mit $db nichts anfangen anscheinend
                            (laut E_ALL)
                            nichts destotrotz ist aber $db auf global gesetzt.
                            in anzeige.php kann er ja auch mit $db nichts anfangen macht jedoch die ausgabe.

                            Kommentar


                            • #15
                              Ich habe den Eindruck, dass du erstens die Antworten gar nicht liest und zweitens uns nicht den Code zeigst, den du wirklich verwendest. Von nicht gezeigten Fehlermeldungen ganz zu schweigen.

                              - Wie hhcm schon gesagt hat, kann der letzte von dir gezeigte Code gar nicht funktionieren, weil der von Anfang an mit Syntaxfehlern abbricht.
                              - Die Indizes der assoziativen Arrays sind immer noch keine Strings
                              - Woher die Funktion send_sql() kommt, und was sie macht wissen wir immer noch nicht
                              - Warum frägst du in der Klasse nochmals Daten ab, die du vorher schon hast
                              - Die Struktur der Tabelle ist ebenso unbekannt
                              - usw.

                              Und bitte rücke deinen Code ein
                              Du willst ja Hilfe haben, aber wenn du uns die nötigen Informationen vorenthälst wird daraus wohl nichts. Und vielleicht sagst du uns auch mal verständlich, was überhaupt beim Ganzen rauskommen soll.
                              Gruss
                              H2O

                              Kommentar

                              Lädt...
                              X