Roger: datensatz 2-spaltig anzeigen?

moin!

ich lese aus einer datenbank mehrere datensätze aus und lasse sie untereinander schreiben:

while ($tmp = @mysql_fetch_assoc($result))
{
 echo $tmp['name'].'<br />';
}

aus platzmangel muss ich jetzt allerdings 2 tabellenspalten angeben, und diese füllen. wie mache ich das jetzt, dass die datensätze 2 spaltig dargestellt werden?

beispiel:
datensatz1   datensatz6
datensatz2   datensatz7
datensatz3   datensatz8
datensatz4
datensatz5

gruß.
roger.

--
ich widersprech mir immer selber.
aber das passiert mir gott sei dank nie.
  1. hi,

    wie mache ich das jetzt, dass die datensätze 2 spaltig dargestellt werden?

    in dem du hübsche table-, tr- und td-tags darum herum bastelst ...?

    beispiel:
    datensatz1   datensatz6
    datensatz2   datensatz7
    datensatz3   datensatz8
    datensatz4
    datensatz5

    nicht vielleicht eher:
    datensatz1   datensatz5
    datensatz2   datensatz6
    datensatz3   datensatz7
    datensatz4   datensatz8
    ?

    da müsstest du zuerst mal ermitteln, wie viele datensätze es gibt - und diese dann korrekt in einer schleife abarbeiten:
    erster DS erste zeile erste spalte,
    (hälfte anzahl plus eins)-ter DS erste zeile zweite spalte,
    dritter DS zweite zeile erste spalte,
    (hälfte anzahl plus drei)-ter DS zweite zeile zweite spalte,
    ...

    (alternative wären evtl. zwei einzelne tabellen, per CSS nebeneinander gebracht.)

    einfacher wird's, wenn du stattdessen folgendermaßen ausgibst:
    datensatz1   datensatz2
    datensatz3   datensatz4
    ...

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. moin!

      nicht vielleicht eher:
      datensatz1   datensatz5
      datensatz2   datensatz6
      datensatz3   datensatz7
      datensatz4   datensatz8

      jop, ich wollte nur die anordnung verdeutlichen und war zu faul weiter zu tippen :D

      da müsstest du zuerst mal ermitteln, wie viele datensätze es gibt - und diese dann korrekt in einer schleife abarbeiten:

      mysql_num_rows ist mein freund :)

      einfacher wird's, wenn du stattdessen folgendermaßen ausgibst:
      datensatz1   datensatz2
      datensatz3   datensatz4

      darauf wollte ich ja hinaus. nur wie ausgeben? wahrscheinlich muss ich das erst in ein array lesen und das dann per for-schleife auslesen. oder?

      gruß.
      roger.

      --
      ich widersprech mir immer selber.
      aber das passiert mir gott sei dank nie.
      1. moin!

        darauf wollte ich ja hinaus. nur wie ausgeben? wahrscheinlich muss ich das erst in ein array lesen und das dann per for-schleife auslesen. oder?

        gurk, ich wollte auf mein angegebenes beispiel hinaus. das hier ist aber auch brauchbar...

        gruß.
        roger.

        --
        ich widersprech mir immer selber.
        aber das passiert mir gott sei dank nie.
        1. Hallo

          einfacher wird's, wenn du stattdessen folgendermaßen ausgibst:
          datensatz1   datensatz2
          datensatz3   datensatz4

          darauf wollte ich ja hinaus. nur wie ausgeben? wahrscheinlich muss ich das erst in ein array lesen und das dann per for-schleife auslesen. oder?

          Die Datensätze liegen doch schon als Array vor. Da musst du nichts mehr umwandeln. Und die for ($a=0;...;$a++)-Konstruktion kannst du dir auch sparen. Der Zähler kann nämlich auch folgendermaßen implementiert werden.

          $a = 0;  
          while ($row = mysql_fetch_array($ergebnis_der_db_abfrage))  
             {  
             // deine Ausgabe der Datensaetze  
             // unter Verwendung des Zaehlers  
             $a++;  
             }
          

          Tschö, Auge

          --
          Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
          (Victor Hugo)
          Veranstaltungsdatenbank Vdb 0.1
          1. moin!

            $a = 0;

            while ($row = mysql_fetch_array($ergebnis_der_db_abfrage))
               }

              
            mysql\_fetch\_array gibt aber imho nur immer alles zeilenweise aus.  
              
            gruß.  
            roger.
            
            -- 
            ich widersprech mir immer selber.  
            aber das passiert mir gott sei dank nie.
            
            1. Hallo

              mysql_fetch_array gibt aber imho nur immer alles zeilenweise aus.

              Ja, das tut es. Das bedeutet aber auch, dass jede Zeile ein Element eines Arrays ist. Zudem gibt mysql_fetch_array() seinerseits ein Array mit den abgefragten Spalten der DB-Tabelle zurück.

              Tschö, Auge

              --
              Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
              (Victor Hugo)
              Veranstaltungsdatenbank Vdb 0.1
              1. moin!

                Ja, das tut es. Das bedeutet aber auch, dass jede Zeile ein Element eines Arrays ist. Zudem gibt mysql_fetch_array() seinerseits ein Array mit den abgefragten Spalten der DB-Tabelle zurück.

                ja, aber das ist genau das was ich sagte und hat absolut nix mit der problemlösung zu tun. weil da müssen ja die werte aus 2 zeilen/datensätzen ausgegeben werden.

                gruß.
                roger.

                --
                ich widersprech mir immer selber.
                aber das passiert mir gott sei dank nie.
                1. Hallo

                  Ja, das tut es. Das bedeutet aber auch, dass jede Zeile ein Element eines Arrays ist. Zudem gibt mysql_fetch_array() seinerseits ein Array mit den abgefragten Spalten der DB-Tabelle zurück.

                  ja, aber das ist genau das was ich sagte und hat absolut nix mit der problemlösung zu tun. weil da müssen ja die werte aus 2 zeilen/datensätzen ausgegeben werden.

                  Ja und? Mit der Übertragung der Datensätze in ein natives PHP-Array stündest du vor genau dem gleichen Problem. Wenn du die Anzeige so machst:

                  DS 1    DS 2
                  DS 3    DS 4
                  DS 5    DS 6

                  Dann kannst du die Tabellenelemente, speziell das Eröffnen einer neuen Zeile bzw. das Schließen derselben, am Zähler festmachen.

                    
                  $a = 0;  
                  while ($row = mysql_fetch_array($ergebnis_der_db_abfrage))  
                     {  
                     // deine Ausgabe der Datensaetze  
                     // unter Verwendung des Zaehlers  
                     $a++;  
                     }  
                  
                  

                  Wenn der Zähler eine gerade Zahl ist, öffne vor der Anzeige des Datensatzes eine neue Tabellenzeile (<tr>). Ist der Zähler ungerade, schließe nach der Ausgabe des Datensatzes die Tabellenzeile (</tr>).
                  Spezialfall: Ist der Zähler beim _letzten_ anzuzeigenden Datensatz gerade, muss die Zeile trotzdem geschlossen werden. Also: vorher die Anzahl der Datensätze mit mysql_num_rows() ermitteln und mit dem Zähler vergleichen.

                  Tschö, Auge

                  --
                  Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
                  (Victor Hugo)
                  Veranstaltungsdatenbank Vdb 0.1
                  1. moin!

                    ok, das mit dem gerade/ungerade hattest du nicht erwähnt und ich wusste nicht, auf was du hinaus wolltest. jetzt hab ichs aber kapiert. danke.

                    gruß.
                    roger.

                    --
                    ich widersprech mir immer selber.
                    aber das passiert mir gott sei dank nie.