datensätze nebeneinander, aber wie ?

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

  • #16
    Original geschrieben von ways
    und ich möchte gern 4 ergebisse nebeneinander haben, bei 20 ergebnissen also 5 zeilen mit je 4 datensätze.....
    na dann ist "spaltenweise" ein mögliches stichwort, um die suchfunktion zu füttern - das thema haben wir doch wirklich schon bis zum erbrechen durchgekaut ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #17
      MelloPie: "Unsinn" würde ich eine funktionierende(!) Lösung erst dann nennen, wenn sie wesentlich weniger performant ist, als zur Verfügung stehende Alternativen. Dieses "Unsinn"-Etikett ist sehr schnell aufgeklebt, ohne eine Begründung zu liefern, warum etwas "Unsinn" ist. In diesem Fall bin ich wirklich mal gespannt, wie die Begründung lautet.

      Mal sehen, ob x Modulo-Berechnungen wirklich langsamer sind, als eine array_chunk-Operation mit x Elementen?

      Zumal wegen dieses Einspruchs wohl der Thread immer noch aktiv ist, obwohl die Lösung bereits mehrfach angeboten wurde.


      ways: Kopier die Funktion mal testweise in Dein Skript, speicher die Ergebnisse von der Datenbank in ein Array und übergib dieses Array an die Funktion, mit
      PHP-Code:
      create_table($mein_array_name,4); 
      Du kannst Dir ja die Ausgabe mit ein wenig Übung selbst zurechtbiegen, da ich alles in simplen "Echo"-Befehlen gehalten habe. Ein Rückgabewert wäre natürlich schöner, aber wenn die Funktion erstmal läuft, dann kannst Du immer noch daran herumbasteln.
      Happiness is an empty error log

      Kommentar


      • #18
        PHP-Code:
         function create_table($array,$values_in_a_row 2){
            if(
        $values_in_a_row count($array) || !is_array($array)) return false;
            echo 
        "<table border=1>";
            
        $array array_chunk($array,$values_in_a_row);
            
            for(
        $i=0;$i<count($array);$i++){
                echo 
        "<tr>";
                for(
        $j=0;$j<$values_in_a_row;$j++){
                    echo 
        "<td>".$array[$i][$j]."</td>";    
                }
                echo 
        "</tr>";
            }    
            echo 
        "</table>\n";

        wozu eine ganze funktion plus forschleife schaffen?


        PHP-Code:
        //wahsagas beispiel, angepasst müsste doch reichen
        //(kann sein das das html jetzt nicht ganz i.o. ist.
        //Zähler
        $count 0;
        $ergebnis mysql_query("...deine SQL-query...") or die(mysql_error());
        //Tabellenanfang
        echo '<table><tr>';
        while(
        $row mysql_fetch_assoc($ergebnis) {

        //Anzahl Durchläufe prüfen
        //wenn mehr Datensätze nebeneinander stehen sollen die 3 ersetzen
        if($count == 3){
        //Umbruch einfügen
        echo '</tr><tr><td>';
        //Zähler wieder auf 0 setzen
        $count 0;
        }
        else{ echo 
        '<td>';}

        //Zahl erhöhen
        $count++;

        //Ausgabe Inahlt
          
        echo $row['spaltenname']."<br>";
        echo 
        '</td>';

        }
        //Ende Tabelle
        echo '</tr></table>'
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #19
          Zur Veranschaulichung des Prinzips in einer abgeschlossenen Umgebung.

          Beim Testen war es für mich wesentlich einfacher, mittels range und array_fill einige Testarrays zu entwerfen und die Daten an die Funktion zu verfüttern, um zu sehen, ob die Idee auch funktioniert.

          Hey, wenigstens habe ich keine Klasse daraus gemacht.
          Happiness is an empty error log

          Kommentar


          • #20
            Original geschrieben von Cymon

            ways: Kopier die Funktion mal testweise in Dein Skript, speicher die Ergebnisse von der Datenbank in ein Array und übergib dieses Array an die Funktion, mit
            PHP-Code:
            create_table($mein_array_name,4); 
            okay.... werd ich versuchen.... da ja das mt dem "unsinn" erwähnt wurde, hatte ich mich nicht an der Lösung versucht....


            und zu den nötigen ergebbnissen... du meinst einfach den query per mysql_fetch_array verarbeiten ?
            Coder never die, they just GOSUB without RETURN

            Mein System

            Kommentar


            • #21
              Original geschrieben von marc75


              wozu eine ganze funktion plus forschleife schaffen?

              der codeschnipsel lief gleich nach copy & paste

              das mit der function möchte ich nu aber auch hinbekommen..... vielleicht finde ich ja herraus, welche funktion besser in der performance ist !?? ...
              denn dieser teil des scripts soll auf dem trafficreichsten dokument laufen...

              da könnte sowas wichtig werden.....

              oder mach ich mir dann umsonst die mühe, weil bereits jemand weiß, welche lösung perfomanter ist ?
              Coder never die, they just GOSUB without RETURN

              Mein System

              Kommentar


              • #22
                Ja, genau, lies alle Daten erstmal in ein Array ein.
                Also zB. mit
                PHP-Code:
                $myArray = array();
                while(
                $row mysql_fetch_assoc($dbh)){
                 
                $myArray[] = $row['auszugebendesFeld']; 

                Aber da will ich jetzt auch nicht mehr allzusehr ins Detail gehen, ich denke, die Lösung liegt nun auf der Hand.

                ($dbh = Datenbankhandle)
                Happiness is an empty error log

                Kommentar


                • #23
                  Original geschrieben von ways
                  vielleicht finde ich ja herraus, welche funktion besser in der performance ist !?? ...
                  denn dieser teil des scripts soll auf dem trafficreichsten dokument laufen...

                  da könnte sowas wichtig werden.....

                  oder mach ich mir dann umsonst die mühe, weil bereits jemand weiß, welche lösung perfomanter ist ?
                  einfach beides testen.

                  einfach beide schleifen mit ca. 1000 Datensätze durchlaufen lassen und die zeit messen, dann weisst du was schneller ist.

                  Zur Zeitmessung gibt es hier irgendwo im Forum ein Klasse von goth oder so. Musste mal suchen.
                  mfg
                  marc75

                  <Platz für anderes>

                  Kommentar


                  • #24
                    Hallo,

                    ich habe das Beispiel von marc 75 genutzt, habe aber das Problem,
                    das ich als Ausgabe die anzuzeigenden Datensätze nicht nur
                    1 mal ausgegeben bekomme, sondern etwa 20 mal.
                    Also fehlt irgendwo die Begrenzung, dass die Datenbankabfrage
                    nur 1 mal durchläuft, die Datensätze müßten gezählt werden.
                    Bekomme das leider nicht hin. Eine for Schleife innnerhalb der
                    while Schleife geht wohl nicht.
                    Was fehlt in nachfolgendem Beispiel?
                    PHP-Code:
                    $count 0;
                    $ergebnis mysql_query("...deine SQL-query...") or die(mysql_error());

                    echo 
                    '<table><tr>';
                    while(
                    $row mysql_fetch_assoc($ergebnis) {

                    if(
                    $count == 3){

                    echo 
                    '</tr><tr><td>';

                    $count 0;
                    }
                    else{ echo 
                    '<td>';}

                    $count++;

                    echo 
                    $row['spaltenname']."<br>";
                    echo 
                    '</td>';

                    }

                    echo 
                    '</tr></table>'
                    Gruss
                    Heiner

                    Kommentar


                    • #25
                      die while schleife läuft so oft durch wie Datensätze gefunden wurden. Also musste mal den query überprüfen. Ausgabe begrenzen kannste mit LIMIT
                      mfg
                      marc75

                      <Platz für anderes>

                      Kommentar


                      • #26
                        Hallo,

                        wie sollte LIMIT in der MySql Abrage definiert werden?

                        Mit Limit kann ich doch nur festlegen wie viele, aber das
                        ändert sich doch ständig.

                        Gruss
                        Heiner
                        Zuletzt geändert von Heiner; 29.06.2004, 07:52.

                        Kommentar


                        • #27
                          wie sieht denn deine Abfrage aus?

                          Kommentar


                          • #28
                            PHP-Code:
                            $r_user query("SELECT username, userpic, userid FROM user WHERE userpic !='0' ORDER by userid "); 

                            Kommentar


                            • #29
                              Original geschrieben von Heiner
                              PHP-Code:
                              $r_user query("SELECT username, userpic, userid FROM user WHERE userpic !='0' ORDER by userid "); 
                              wie sieht es denn in der Tab aus? sind dort die Datensätze mehrfach vorhanden?

                              PHP-Code:
                              $sql query("SELECT username, userpic, userid FROM user WHERE userpic !=0 ORDER by userid ");

                              while(
                              $row mysql_fetch_assoc($sql) {
                              echo 
                              $row['username']."<br>";
                              }
                              //Erfolgt die Ausgabe auch mehrfach?? 
                              Ansonsten poste mal den echten Codeabschnitt,

                              denn dein query passt nicht zur oben geposteten while schleife

                              siehe $r_user != $ergebnis
                              mfg
                              marc75

                              <Platz für anderes>

                              Kommentar


                              • #30
                                Hallo,

                                den query hatte ich erneuert, den vorhandenen jedoch nicht
                                ausgeslashed, das ergab dann irgendwie 2 Schleifen ohne
                                Fehlermeldung. (peinlich, peinlich)


                                Trotzdem, herzlichen Dank für deine Mühe.
                                Läuft allerbestens.
                                Dein 'Code-Schnipsel' für zeilenweise Ausgabe ist übrigens
                                das Übersichtlichste was ich zum Thema gefunden habe
                                und auch für 'Junior-Members' sehr verständlich.

                                Gruss
                                Heiner

                                Kommentar

                                Lädt...
                                X