Abgefragte Daten mehrmals verwenden?

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

  • Abgefragte Daten mehrmals verwenden?

    Also OK, ich hätt da gern mal ein Problemchen :-)
    Ich starte auf meiner Seite eine Abfrage an die Datenbank.
    Das Ergebnis ist ein array von über 100 Datenbankeinträgen.

    PHP-Code:
    mysql_connect($dbhost,$dbuname,$dbpass) or die(mysql_error());
    mysql_select_db($dbname) or die(mysql_error());
    $result mysql_query("select pod, name from teams order by name"); 
    So weit ists ja klar.
    Aufgelistet werden die Einträge dann mit:

    PHP-Code:
    while(list($pod,$name) = mysql_fetch_array($result)){
    if(
    $pod<=10){
    echo 
    "$name<br>";
    }

    Es werden also am Anfang der Seite nur die Einträge angezeigt, deren
    PHP-Code:
    $pod 
    maximal 10 ist.

    Danach kommt weitere Funktionen, Abfragen etc...

    Jetzt habe ich aber wie gesagt über 100 Datensätze, und wenn ich unten auf der Seite einfach nochmal schreibe:
    PHP-Code:
    while(list($pod,$name) = mysql_fetch_array($result)){
    if(
    $pod>10){
    echo 
    "$name<br>";
    }

    also alle Einträge ausgeben will, die größer als 10 sind, gehts nicht mehr.

    Wieso kann ich die Daten, die ich bereits oben schon erfolgreich abgerufen ahbe, nicht nochmal verwenden ohne eine erneute Abfrage dafür starten zu müssen?
    Geht das irgendwie???

    Problem verstanden? *ggg*

  • #2
    mach doch folgendes:
    while(list($pod,$name) = mysql_fetch_array($result)){
    if($pod<=10){
    // mache was immer wenn pod <= 10
    }
    else{
    // mache was immer wenn pod > 10
    }
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Netter Versuch, lässt sich aber nicht mit de Skript vereinbaren....

      Gibt es keine Möglichkeit, auch Global auf die Datensätze zurückgreifen zu können????

      Kommentar


      • #4
        leider kann man der Resultset nicht über mehrere Seiten verwenden.

        Sky hatte mel ein Script geschrieben um n-Datensätzte anzeigen zu lassen http://www.php-resource.de/forum/sho...&threadid=3750

        ich hoffe das bringt dich weiter
        Berni

        php-Entwicklung | ebiz-consult.de
        PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
        die PHP Marktplatz-Software | ebiz-trader.de

        Kommentar


        • #5
          Mmh, auch nicht, leider nein...

          Aber ich will ja auch nichts über mehrere Seiten machen, es geschieht ja schon alles auf ein und derselben Seite.

          Das Problem ist eben einfach nur, das ich das ganze in mehreren Tabellen machen möchte, also eine Tabelle mit den ersten 10, dann eine Tabelle mit den zweiten etc., und das solange, bis alle Datensätze abgearbeitet sind.
          Und eine if-else Anweisung geht nicht, weil ich in den einzelnen Tabellen noch Schleifen und weitere Abfragen starte.

          Ansonsten müßte ich jetzt für jede Tabelle eine eigene Abfrage mit limit machen, aber dann hätt ich allein auf dieser Seite bei einem Aufruf bereits 20 Abfragen an die DB nd das ist vieeeel zu vieeeel Traffic....

          Kann ich denn die Daten nicht einfach in einem array speichern, ohne das ich dazu eine while-Schleife benutzen muß?

          Kommentar


          • #6
            Ich hab es nicht probiert, aber wie wäre es, wenn du das Ergebnis nach der Abfrage in z.B. $result2 kopierst ?

            PHP-Code:
            $result mysql_query("select pod, name from teams order by name");
            $result2 $result
            PHP-Code:
            while(list($pod,$name) = mysql_fetch_array($result2)){
            if(
            $pod>10){
            echo 
            "$name<br>";
            }

            [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
            [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
            [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

            © Harald Schmidt

            Kommentar


            • #7
              Warum machste net sowas:
              $result = mysql_query("select pod, name from teams order by name WHERE pod<=10");
              $result2 = mysql_query("select pod, name from teams order by name WHERE pod>10");
              dann haste es auch...
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                @MelloPie: Weil das bei weit über 100 Datensätzen fast 20 Datenbankabfragen pro Seite an die Datenbank sind, und das ist eindeutig für EINEN Aufrug zuviel

                @TroubleGum: Das klingt gut, werds gleich mal testen...

                Kommentar


                • #9
                  Also ich würde mir in Deinem Fall mal Gedanken über die Struktur Deines Scripts Gedanken machen.
                  Bei 100 Datensätzen 20 Abfagen?
                  das geht sicher auch anders.
                  zB wie obern beschrieben mit ner if in der while oder einem switch und Funktionen
                  Zuletzt geändert von MelloPie; 15.06.2002, 17:31.
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    Oder einfach bool mysql_data_seek ( resource result_identifier, int row_number) verwenden ...
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar

                    Lädt...
                    X