mysql mit spalten

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

  • mysql mit spalten

    ich hoffe ihr könnt mir bei folgenden problem mithelfen.

    Ich möchte eine mysql abfrage mach wo die erste hälfte aller datensätze in einer tabelle in der linken spalte angezeigt werden und die zweite hälfte der datensätze in der rechten spalte einer tabelle...

    kann mir da jemand weiterhelfen?

  • #2
    mysql: alles einlesen

    php:
    - ein array mit allen einträgen machen
    - array halbieren
    - in tabelle ausgeben
      - eintrag 1 von array 1
      - eintrag 1 von array 2
      - eintrag 2 von array 1
      - eintrag 2 von array 2
      - ...


    realisierung:
    manual und forum als suchhilfe benutzen *g*
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Re: mysql mit spalten

      frage mit mysql_num-rows() ab, wie viele datensätze dein ergebnis enthält, und reagiere entsprechend ...

      (tipp: <table><tr><td> kommt vor der ausgabeschleife.
      in der schleife lässt du einen zähler mitlaufen, sobald der die hälfte der datensatzanzahl überschreitet, wird </td><td> ausgegeben, um eine neue tabellenzelle zu machen.
      anschliessend per </td></tr></table> alles wieder schön zu machen ...)
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        @wahsage :

        ich weiss net ob mysql_num_rows() so ne gute idee ist, da ich gehoert hatte, das es um eineiges langsamer ist als nen count() in mysql direkt ...

        gruss
        iglo

        Kommentar


        • #5
          also habs mit count() gemacht, aber ich blick nicht ganz wie man das ganze auf 2 spalten verteilt... das ist eher das problem

          Kommentar


          • #6
            Es gibt prinzipiell zwei Methoden
            1. unter Benutzung von mysql_data_seek - belastet den DB-Server etwas mehr und braucht mehr Zeit (wegen der Funktionsaufrufe)
            2. mit Zwischenspeichern - braucht ein wenig mehr RAM, ist aber schneller

            In beiden Fällen natürlich erstmal die Query abschicken:
            $sqlres = mysql_query("...") or die(mysql_error());

            dann mit mysql_data_seek (Ergebnis-Zeiger verschieben):
            PHP-Code:
            $anzahl mysql_num_rows($sqlres);
            // Hälfte plus 1 = erster Datensatz rechts:
            $haelfte ceil($anzahl 2);
            for (
            $i=0$i<$haelfte$i++)
            {
              
            mysql_data_seek($sqlres$i);
              
            $links mysql_fetch_assoc($sqlres);
              
            mysql_data_seek($sqlres$haelfte+$i);
              
            $rechts mysql_fetch_assoc($sqlres);
              
            // und hier die Ergebnisse ausgeben:
              
            ...

            mit Zwischenspeichern (und "springen" im Array):
            PHP-Code:
            $ergebnisse = array();
            while(
            $row mysql_fetch_assoc($sqlres))
              
            $ergebnisse[] = $row;
            $haelfte ceil(count($ergebnisse)/2);
            for (
            $i=0$i<$haelfte$i++)
            {
              
            $links $ergebnisse[$i];
              
            $rechts $ergebnisse[$haelfte+$i];
              
            // und hier die Ergebnisse ausgeben:
              
            ...

            Zuletzt geändert von Titus; 26.08.2003, 10:01.
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              Original geschrieben von Titus
              Es gibt prinzipiell zwei Methoden
              1. unter Benutzung von mysql_data_seek - belastet den DB-Server etwas mehr und braucht mehr Zeit (wegen der Funktionsaufrufe)
              2. mit Zwischenspeichern - braucht ein wenig mehr RAM, ist aber schneller

              In beiden Fällen natürlich erstmal die Query abschicken:
              $sqlres = mysql_query("...") or die(mysql_error());

              dann mit mysql_data_seek (Ergebnis-Zeiger verschieben):
              PHP-Code:
              $anzahl mysql_num_rows($sqlres);
              // Hälfte plus 1 = erster Datensatz rechts:
              $haelfte ceil($anzahl 2);
              for (
              $i=0$i<$haelfte$i++)
              {
                
              mysql_data_seek($sqlres$i);
                
              $links mysql_fetch_assoc($sqlres);
                
              mysql_data_seek($sqlres$haelfte+$i);
                
              $rechts mysql_fetch_assoc($sqlres);
                
              // und hier die Ergebnisse ausgeben:
                
              ...

              mit Zwischenspeichern (und "springen" im Array):
              PHP-Code:
              $ergebnisse = array();
              while(
              $row mysql_fetch_assoc($sqlres))
                
              $ergebnisse[] = $row;
              $haelfte ceil(count($ergebnisse)/2);
              for (
              $i=0$i<$haelfte$i++)
              {
                
              $links $ergebnisse[$i];
                
              $rechts $ergebnisse[$haelfte+$i];
                
              // und hier die Ergebnisse ausgeben:
                
              ...

              ok Danke, hat wunderbar funktioniert.

              Kommentar


              • #8
                Original geschrieben von usany
                ok Danke, hat wunderbar funktioniert.
                OffTopic:
                überlege bitte beim nächsten mal, ob wirklich ein fullquote nötig ist, um uns das mitzuteilen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  ok mein code sieht momentan folgendermassen aus:

                  PHP-Code:
                  <?php
                          
                  include ("einstellungen.php");
                          
                  dbconnect();
                  ?>
                  <table width="100%">   
                  <?php
                           $sql          
                  "SELECT * FROM links_kategorie ORDER BY name ASC;";
                           
                  $get          mysql_query($sql);
                           
                  $ergebnisse   = array();
                           while(
                  $row    mysql_fetch_assoc($get))
                           
                  $ergebnisse[] = $row;
                           
                  $haelfte      ceil(count($ergebnisse)/2);
                           for (
                  $i=0$i<$haelfte$i++)
                           {
                           
                  $links $ergebnisse[$i];
                           
                  $rechts $ergebnisse[$haelfte+$i];

                           
                  ?>
                     <tr>         
                        <td width="50%"><?php echo $links['name']; ?></td>
                        <td width="50%"><?php echo $rechts['name']; ?></td>
                           <?php
                           
                  }
                           
                  ?>
                     </tr>   
                  </table>
                  Da es sich um eine Linkliste handelt, habe ich Kategorien und Unterkategorien. Im Code oben werden die Kategorien angezeigt. Nun möchte ich, dass jeweils unter den Kategorien ($links['name'] & $rechts['name'] die unterkategorien anzeigt. Kann mir jemand weiterhelfen?

                  Kommentar

                  Lädt...
                  X