Zeile für Zeile ...

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

  • Zeile für Zeile ...

    Hallo an alle.

    Wie kann ich innerhalb einer Tabelle Datensatz für Datensatz durchgehen, um dann mit diesen Datensätzen zu arbeiten? Und vor allem: Gibt es eine Möglichkeit, den aktuellen Datensatz mit dem vorherigen (und vielleicht sogar noch dem davor) zu vergleichen?

    Wichtig in diesem Zusammenhang: Die Tabelle enthält eine Spalte mit Sortierungsnummern, d.h. die Artikel werden entsprechend dieser Nummern durchlaufen (SELECT * FROM test ORDER BY sort_nr ASC, beginnend mit 0 und dann z.B. bis 270).

    Danke im Voraus.

    Innuendo

  • #2
    datensatz für datensatz gehst du mit mysql_fetch_array und konsorten durch

    zurück kommst du mit mysql_data_seek
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      while schleife und mysql_fetch_array ist dein Freund die Suche würde helfen

      Datensätze vergleiche: Du könntest die Daten in verschiedne Variablen legen und dann vergleichen,

      schnelles Bsp.
      PHP-Code:
      $query "SELECT..";
      $y 0;
      while(
      $array mysql_fetch_array($query))
                     {
                             
      $datensatz.$y $array[daten];
                     } 
      jedenfalls so in der Art
      EDIT:
      oder so wies happy gesagt hat
      Für Rechtschreibfehler übernehme ich keine Haftung!

      Kommentar


      • #4
        Interessanter Ansatz, Damian.

        Wenn ich richtig verstehe, ist als $y die entsprechende Datensatznummer, richtig? Und wie greife ich dann auf den vorherigen zu? Mit $y-1?

        Kommentar


        • #5
          klar müsste so gehen
          $x = $y-1;
          $datensatz.$x = letzer;

          so und ich muss dann schnelle weg
          Für Rechtschreibfehler übernehme ich keine Haftung!

          Kommentar


          • #6
            Ich kann Dir bisher berichten, dass Deine Methode leider nicht funktioniert.

            Kommentar


            • #7
              was willst du damit machen:

              Ansatz ist sicher

              alles in ein multidimensionales Array packen, und dann dort damit arbeiten.

              Kommentar


              • #8
                Was ich damit machen will? Ganz einfach.

                In der Tabelle sind Artikel gesichert, die zusammengestellt und dann per eMail verschickt werden sollen. Die Artikel werden nach einer Nummer sortiert und dementsprechend angezeigt (jedenfalls sollen sie das). Die Schwierigkeit dabei ist, dass es unterschiedliche Rubriken gibt, denen die entsprechenden Artikel zugeordnet sind. Jedesmal, wenn eine neue Rubrik erreicht wird, soll dies entsprechend dargestellt werden (siehe Schema weiter unten). Logischerweise muss ich jetzt in jedem Artikel überprüfen, zu welcher Rubrik er gehört und ob diese Rubrik mit der des vorherigen Artikels übereinstimmt. Ist dies der Fall, werden einfach die Artikelinformationen angezeigt. Ist die Rubrik des aktuellen Artikels eine andere als die des vorherigen, soll natürlich die neue Rubrik entsprechend gekennzeichnet und dann die Artikel dieser Rubrik ausgegeben werden.

                Die if-Abfragen, wie ich die Rubriken untereinander vergleiche, funktionieren tadellos (vorher lief das Redaktionssytem mit TXT-Dateien, im Zuge der Performance bin ich auf SQL umgestiegen). Daher meine Frage, wie ich jeden Datensatz einzeln abfragen und mit dem Datensatz davor vergleichen kann.

                Um es "bildlich zu zeigen", nachfolgend die Struktur, wie die Artikel nachher zusammengestellt aussehen sollen.

                ----
                Rubrik 1
                ----

                Überschrift Artikel 1

                Anreißertext Artikel 1

                Link zur Artikelseite 1


                Überschrift Artikel 2

                Anreißertext Artikel 2

                Link zur Artikelseite 2

                ----
                Rubrik 2
                ----
                .
                .
                .


                Hier noch mein Code-Schnipsel, welches mir immerhin die Artikel untereinander hinschreibt. Wie müsste ich es jetzt erweitern, dass ich, wie oben beschrieben, die Datensätze vergleichen kann? mysql_data_seek ist ja "nur" BOOL.

                PHP-Code:
                        $sql "SELECT * FROM nl_article ORDER BY sort_nr ASC";
                    
                $result mysql_query($sql);
                    
                $anzahl_artikel mysql_num_rows($result);
                    for (
                $i=0;$i<$anzahl_artikel;$i++)
                    {
                        
                mysql_data_seek($result,$i);
                        
                $row mysql_fetch_array($result);
                        echo 
                $row['category'].'<br><br>';
                    } 
                Zuletzt geändert von ; 22.06.2003, 21:34.

                Kommentar


                • #9
                  axo


                  merk die die rubrik in ner dummy-variablen und vergleich die dann in der schleife
                  PHP-Code:
                  $alterubrik='saefgasdkfbsad';
                  $sql "SELECT * FROM nl_article ORDER BY sort_nr ASC";
                  $result mysql_query($sql);
                  while(
                  $row=mysql_fetch_array($result))
                  {
                    if (
                  $alterubrik!=$row['rubrik'])
                    {
                       
                  $alterubrik=$row['rubrik'];
                       echo 
                  'Rubrikwechsel';
                    }
                     
                  print_r($row);

                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Bitte nicht verwirren. Habe mich gerade erst mit mysql_data_seek angefreundet und jetzt das. *schmunzel* Was gibt denn print_r($row); aus? Alle Informationen innerhalb eines Datensatzes?

                    Kommentar


                    • #11
                      ausprobieren

                      http://www.php.net/manual/de/function.print-r.php

                      müsstest halt evtl. deine order by klausel um die rubrik erweitern damit das hinhaut
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Ich weiß, was print_r macht (Variablen in lesbarer Form ausgeben). Aber eigentlich bezog sich meine Frage auf DEIN Beispiel. Aber egal.

                        Ordnen. Hm. Was hat dann Vorrang beim Ordnen? Die Sortierungsnummer oder die Rubrik. Ich schätze mal das, was zuerst angegeben wird, oder? Also schätze ich mal, dass "SELECT * FROM nl_article ORDER BY sort_nr, rubrik" richtig ist. Allerdings wäre das für mein Verständnis doppeltgemoppelt, weil ja durch die Sortierungsnummern die Artikel eh schon geordnet sind.

                        Kommentar


                        • #13
                          Code:
                          artikel | sort_nr | rubrik
                               1  |      1  | 1
                               2  |      2  | 2
                               3  |      3  | 2
                               4  |      4  | 1
                               2  |      5  | 1
                               2  |      6  | 3
                               5  |      7  | 2
                               6  |      8  | 1
                          wenn die tabelle so aussieht, musst du zuerst nach rubrik sortieren und innerhalb der rubriken dann nach sort_nr (ORDER BY rubrik, sort_nr)

                          aber da ich ja nich weiß, nach welchen kriterien sort_nr vergeben wird...
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            sort_nr ist eine Zahl, die bei 0 beginnt, in Zehnerschritten gezählt wird und dann entsprechend der Anzahl der Artikel bei Anzahlx10 endet (also bei 20 Artikeln von 0 - 200). Ich benutze diese Sortierungsnummer, weil in dem Redaktionssystem die Reihenfolge der Artikel verändert werden kann.

                            Die Tabelle sieht ungefähr so aus:

                            Code:
                            id   | sort_nr | header        | category | ...
                            -----------------------------------------------
                            1234 | 0       | Überschrift 1 | Rubrik 1 | ...
                            4793 | 10      | Überschrift 2 | Rubrik 1 | ...
                            1953 | 20      | Überschrift 3 | Rubrik 1 | ...
                            3853 | 30      | Überschrift 4 | Anzeige  | ...
                            3302 | 40      | Überschrift 5 | Rubrik 1 | ...
                            1942 | 50      | Überschrift 6 | Rubrik 1 | ...
                            2311 | 60      | Überschrift 7 | Rubrik 3 | ...
                            1132 | 70      | Überschrift 8 | Rubrik 3 | ...

                            Kommentar


                            • #15
                              wenn ich bei deinen daten sage, dass der artikel mit sort_nr 20 zu rubrik 3 gehört, fällst du böse auf die nase, wenn du erst nach sort_nr und dann nach rubrik sortierst oder?

                              wenn du die daten nach rubriken sortiert ausgeben willst, musst du auch als erstes nach rubrik sortieren und innerhalb der rubrik dann nach sort_nr
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X