Ankündigung

Einklappen
Keine Ankündigung bisher.

OOP - Datenbank Abfrage ...

Einklappen

Neue Werbung 2019

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

  • OOP - Datenbank Abfrage ...

    Hallo,

    ich versuche OOP zu lernen.
    Ich habe eine Klasse geschrieben womit ich eine abrafe machen will.
    aber es werden nicht alle datensätze aus datenbank angezeigt. Ich würde gern wissen wo ich fehler mache, es kann sein das mein Code ganz blöd ausschaut.

    #Hier Meine Klasse :

    PHP-Code:
      class SqlQuery {
        
    # Abfrage
        
    public $query;
        private 
    $num;
        private 
    $q;
        
    # Fehler
        
    private $error;
        
    # Anzahl der Datensätze
        
    public function sqlNum () {
          
    $this->= @mysql_query($this->query);
          
    $this->num = @mysql_num_rows($this->q);
          return 
    $this->num;
        } 
        
    # Query 
        
    public function querySql () {
          
    $r = @mysql_query($this->query);
            
    $daten mysql_fetch_assoc($r);
            return 
    $daten;
        } 
    # Und so wird es aufgerufen :
    PHP-Code:
    $seSql = new SqlQuery();
      
    $seSql->query 'SELECT * FROM selma';
      
    $num =  $seSql->sqlNum();
      
    $r      =  $seSql->querySql();
      echo 
    '<h4> Selma News Einträge </h4>';
       
    $daten $seSql->querySql();
       
    $i 0;
      while (
    $i $num) {
          echo 
    $daten['Titel'] . '<br>';
          
    $i++;  
      } 
    So wird es nur der letzte Datensatz angezeigt.

  • #2
    Hi,

    dein Problem liegt nicht bei OOP sondern daran das du mysql_fetch_assoc nur einmal ausführst und damit auch nur einen Datensatz bekommst. Du solltest die vielleicht mal anschauen wie man mysql_fetch_assoc benutzt.

    Gruß
    CyCap

    Kommentar


    • #3
      Danke für deine Antwort,

      ich weiss wie man mysql_fetch_assoc benutz,

      Wenn ich sie ganz normal in einem Schleife ausführen lasse funtioniert wunderbar :

      Beispiel :
      PHP-Code:
          for($i$i $row $i++) {
          
      $daten mysql_fetch_assoc($r)
          echo 
      $daten['name'];
          } 
      so sehe ich alle namen ...

      aber wenn ich im klasse eine schleife laufen lasse, dann sehe ich 'NUR' die letzt datensatz.

      Kommentar


      • #4
        Genau das hab ich ja gesagt, wo ist deine Schleife im Beispiel?

        Kommentar


        • #5
          in meiner Klasse habe ich schleife wieder rausgenommen weil es nicht funktioniert hat, Ich sehe zwar wieviel datensätze im Array sind,
          aber ich kann nur den ersten (ohne schleife) oder den letzten Datensatz (mit schleife) ausgeben.

          Im klasse habe ich mit While-schleife die mysql_fetch_assoc ausführen lassen, somit hatte ich alle datensätze im array,
          aber im eigentlichen Code ... Egal was ich mache bekomme ich nur einen einzigen datensatz zu sehen !

          Kommentar


          • #6
            Irrtum, du siehst nicht wieviele Datensätze im Array sind, sondern wieviel Datensätze deine Abfrage ausspuckt. Du hast 2 Möglichkeiten:

            Entweder du machst für das mysql_fetch_assoc eine eigene Methode und rufst diese Methode in deinem Code in einer schleife aus oder du machst die Schleife an der Stelle wo jetzt dein mysql_fetch_assoc ist. Bei der zweiten Möglichkeit musst du aber für jeden Datensatz einen Speicherplatz schaffen. Würdest du eine schleife um deine jetziges $daten = mysql_fetch_assoc(..); machen würdest du $daten ja jedes mal überschreiben und hast dadurch nur den letzten Datensatz. Schreibst du allerdings in die Schleife $daten[] = mysql_fetch_assoc(...); so wird bei jedem Schleifendurchgang ein neuer Speicherplatz angelegt. Dein Ergebnis würde dann so aussehen:

            $daten = array mit allen Datensätzen
            $daten[0] = array mit erstem datensatz
            $daten[1] = array mit zweiten datensatz

            Kommentar

            Lädt...
            X