Datensätze in 2 Spalten Tabelle auslesen

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

  • Datensätze in 2 Spalten Tabelle auslesen

    Hallo,

    ich möchte mir eine Newsübersicht aus einer Datenbank ausgeben lassen. Die Datensätze sollen in eine Tabelle mit 2 Spalten ausgelesen werden.

    Beispiel: Ich habe 10 Datensätze. Die Tabelle sollte dann aus 5 Zeilen und 2 Spalten bestehen.

    Ich habe das mal so versucht

    PHP-Code:
    <table width="80%" border="0">

    <?php
        $sel2 
    mysql_query("SELECT 
                        news.id AS news_id,
                        news.mannschaft AS news_mannschaft, 
                        titel, 
                        bericht,
                        intern_mannschaft.id, 
                        intern_mannschaft.mannschaft 
                        FROM
                        news
                        LEFT JOIN intern_mannschaft ON (intern_mannschaft.id=news.mannschaft)
                        ORDER BY 
                        news.id
                        DESC"
    )
                        or die (
    mysql_error());
        
    $i 1;
        if(
    $p mysql_num_rows($sel2) > 0) { 
            while(
    $row2 mysql_fetch_object($sel2)) {       
        
        
        if(
    $i%2==1) {
        echo 
    "
        
        
    <tr>
    <td>
        <table border=\"0\">
         
        <tr>"
    ;

        
        echo 

        <td align=\"center\" > 
                <b>"
    .$row2->mannschaft."</b> 
                <br \> 
                "
    .$row2->titel.
                <br \> 
                <br \>"

                
    $text $row2->bericht
                echo 
    substr($text,0,50) ; 
                echo 

                <br \> 
                <a href=\"index.php?move=18&id=
    $row2->news_id \">mehr...</a>   
            </td>"
    ;

        if(
    $i%1==2) {
        echo 
    "         
            <td align=\"center\" background=\"images/trennlinie3.gif\">&nbsp;</td>"

    }
    if(
    $i%2==1) { 
    echo 

        </tr> 
        </table> 

    <tr> 
    <td background=\"images/trennlinie2.gif\">&nbsp;</td> 
    </tr> 

    </td> 
    </tr> "
    ;

    $i++; 
    }
    $i++; 
    }
    $i++;

       
        else { 
            echo 
    "Zurzeit befinden sich keine Newsdatensätze in der Datenbank"
        } 

        
    ?>
     

    </table>
    Durch dieses Script wird aber leider nur eine Tabelle mit einer Spalte erzeugt. Wenn ich also 10 Datensätze habe, werden 10 Zeilen und 1 Spalte erzeugt.

    Ich hoffe ihr könnt mir helfen

    gruß
    Christian

  • #2
    $i%1==2
    ich darf mal ausformulieren: "wenn $i bei der teilung durch 1 den rest 2 ergibt..."

    nenn mir eine natürliche zahl, die diese anforderung erfüllt.

    welche struktur willst du denn erreichen?

    1 2
    3 4
    5 6
    7 8
    9 10

    oder

    1 6
    2 7
    3 8
    4 9
    5 10

    ?

    Kommentar


    • #3
      die erste Struktur

      1 2
      3 4
      5 6
      7 8
      9 10

      Kommentar


      • #4
        die erste frage lässt du unbeantwortet?

        den gedanken hast du doch schon erfasst, musst jetzt nur vorsichtig sein, wie du ihn umsetzst:

        PHP-Code:
        1
        <table>
        while(
        nachrichten aus der datenbank)
        {
           if(
        i%2==1)
              
        ausgabe: <tr><td>nachricht in der linken spalte</td>
           else
              
        ausgabe: <td>nachricht in der linken spalte</td></tr>

           
        i++
        }
        </
        table

        Kommentar


        • #5
          ja wie bekomme ich denn beide Datensätze nebeneinander??

          So wird die neue Zeile eingeleitet
          PHP-Code:
          <tr>
          <
          td>
              <
          table border=\"0\">
               
              <tr> 
          So wird der Datensatz ausgelesen

          PHP-Code:
          <td align=\"center\" > 
                      <b>"
          .$row2->mannschaft."</b> 
                      <br \> 
                      "
          .$row2->titel.
                      <br \> 
                      <br \>"

                      
          $text $row2->bericht
                      echo 
          substr($text,0,50) ; 
                      echo 

                      <br \> 
                      <a href=\"index.php?move=18&id=
          $row2->news_id \">mehr...</a>   
                  </td> 
          So werden die beiden Datensätze getrennt

          PHP-Code:
          <td align=\"center\" background=\"images/trennlinie3.gif\">&nbsp;</td> 
          Jetzt muss der zweite Datensatz ausgelesen werden und

          so wird die Zeile beendet.

          PHP-Code:

          </tr
              </
          table

          <
          tr
          <
          td background=\"images/trennlinie2.gif\">&nbsp;</td> 
          </tr> 

          </td> 
          </tr> 
          Wie frage ich jetzt ab wie viele Datensätze schon gelesen wurden??

          Kommentar


          • #6
            Wie frage ich jetzt ab wie viele Datensätze schon gelesen wurden??
            gegenfrage - was macht $i?

            Kommentar


            • #7
              ich weise ja $i die Zahl 1 zu. $i sollte dann hochgezählt werden um die Datensätze abzufragen, aber das funktioniert ja irgendwie nicht so wie gedacht.

              Kommentar


              • #8
                an meinem pseudo-code beispiel siehst du, dass es ausreicht, i einmal pro zyklus zu inkrementieren.

                dann entspricht i immer der nummer der aktuell ausgegebenen nachricht.

                Kommentar


                • #9
                  ok ich habe jetzt nur eine inkrementierung pro zyklus.

                  Allerdings wird jetzt nur beim ersten Datensatz die Zeile geöffnet und geschlossen.

                  So sieht es jetzt aus.

                  PHP-Code:
                  <table width="80%" border="0">

                  <?php
                      $sel2 
                  mysql_query("SELECT 
                                      news.id AS news_id,
                                      news.mannschaft AS news_mannschaft, 
                                      titel, 
                                      bericht,
                                      intern_mannschaft.id, 
                                      intern_mannschaft.mannschaft 
                                      FROM
                                      news
                                      LEFT JOIN intern_mannschaft ON (intern_mannschaft.id=news.mannschaft)
                                      ORDER BY 
                                      news.id
                                      DESC"
                  )
                                      or die (
                  mysql_error());
                      
                  $i 1;
                      if(
                  $p mysql_num_rows($sel2) > 0) { 
                          while(
                  $row2 mysql_fetch_object($sel2)) {       
                      
                      
                      if(
                  $i%2==1) {
                      echo 
                  "
                      
                      
                  <tr>
                  <td>
                      <table border=\"0\">
                       
                      <tr>"
                  ;

                      
                      echo 

                      <td align=\"center\" > 
                              <b>"
                  .$row2->mannschaft."</b> 
                              <br \> 
                              "
                  .$row2->titel.
                              <br \> 
                              <br \>"

                              
                  $text $row2->bericht
                              echo 
                  substr($text,0,50) ; 
                              echo 

                              <br \> 
                              <a href=\"index.php?move=18&id=
                  $row2->news_id \">mehr...</a>   
                          </td>"
                  ;

                      if(
                  $i%2==1) {
                      echo 
                  "         
                          <td align=\"center\" background=\"images/trennlinie3.gif\">&nbsp;</td> 
                      </tr> 
                      </table> 

                  <tr> 
                  <td background=\"images/trennlinie2.gif\">&nbsp;</td> 
                  </tr> 

                  </td> 
                  </tr> "
                  ;

                  $i++; 

                  }
                      }else { 
                          echo 
                  "Zurzeit befinden sich keine Newsdatensätze in der Datenbank"
                      } 

                      
                  ?>
                   

                  </table>
                  Wie muss ich jetzt fragen um ein korrektes Ergebnis zu bekommen??

                  Kommentar


                  • #10
                    könntest du den code lesbar gestalten? so mit einrückungen und zeilenumbrüchen? komme sonst mit deinen klammern nicht klar.

                    außerdem machst du immer noch irgendeinen unfug mit den abfragen.
                    versuch den pseudocode mit _minimum_ an html nachzubauen, debuggen, zum laufen bringen und dann erst mit den wunderschönen tabellen-tags zuverfeinern.

                    Kommentar


                    • #11
                      OK ich habe den Code jetzt mal aufs minium verkürzt und übersichtlicher gemacht.

                      PHP-Code:
                      $i 1;
                      if(
                      $p mysql_num_rows($sel2) > 0) { 
                      while(
                      $row2 mysql_fetch_object($sel2)) {       
                      if(
                      $i%2==1) {
                      echo 
                      "<tr><td><table border=\"0\"><tr>";

                      echo 
                      "
                      <td align=\"center\" >
                      <b>"
                      .$row2->mannschaft."</b> 
                      <br \> 
                      "
                      .$row2->titel.
                      <br \> 
                      <br \>
                      $row2->bericht 
                      <br \> 
                      <a href=\"index.php?move=18&id=
                      $row2->news_id \">mehr...</a>   
                      </td>"
                      ;
                      if(
                      $i%2==1) {
                      echo 
                      "<td align=\"center\" background=\"images/trennlinie3.gif\">&nbsp;</td></tr></table> 
                      <tr><td background=\"images/trennlinie2.gif\">&nbsp;</td></tr> 
                      </td></tr> "
                      ;
                      $i++; 

                      }
                      }else { 
                      echo 
                      "Zurzeit befinden sich keine Newsdatensätze in der Datenbank"

                      Kommentar


                      • #12
                        schon besser (wobei einrückungen _immens_ hilfreich sind).
                        nur spiegelt der code immer noch nicht das wieder, was ich dir vorgeschlagen habe.

                        Kommentar


                        • #13
                          ja wie muss ich denn das i abfragen, um die Datensäzte richtig auszulesen??
                          Zuletzt geändert von dodge11; 25.07.2006, 19:53.

                          Kommentar


                          • #14
                            bau doch einfach erstmal den code so um, dass er in etwa meinem entspricht.

                            Kommentar


                            • #15
                              OK jetzt habe ich den Code nochmal überarbeitet und in deine Forum gebracht.

                              PHP-Code:
                              $i 1;
                              while(
                              Nachricht aus der Datenbank
                              {       
                                     if(
                              $i%2==1// vor dem ersten Datensatz der Zeile ausgeben
                                         
                              Ausgabe: <tr><td><table border=\"0\"><tr>
                                          
                              Ausgabe: linker Datensatz
                                     
                                     if(
                              $i%2==1) //hinter dem ersten Datensatz der Zeile ausgeben
                                         Ausgabe: <td align=\"center\" background=\"images/trennlinie3.gif\">&nbsp;</td>

                              Ausgabe: rechter Datensatz

                              if(
                              $i%2==1) //hinter dem letzten (2.) Datensatz der Zeile ausgeben
                                         Ausgabe:</tr></table><tr><td background=\"images/trennlinie2.gif\">&nbsp;</td></tr></td></tr>

                              $i++; 
                                            
                              }
                                  Wenn keine Datensätze in DB 
                                      Ausgabe: Zurzeit befinden sich keine Newsdatensätze in der Datenbank 
                              Zuletzt geändert von dodge11; 26.07.2006, 10:36.

                              Kommentar

                              Lädt...
                              X