Frage zum letzten Datensatz eine DB-Abfrage

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Der_Jan, 23.01.2007.

  1. Der_Jan

    Der_Jan Thread Starter MacUser Mitglied

    Beiträge:
    606
    Zustimmungen:
    7
    MacUser seit:
    06.01.2004
    Moin,

    ich frage eine Datenbank ab, als zurückgeliefertes Ergebnis bekomme ich mehrere Datensätze. Diese möchte als Aufzählung ausgeben, getrennt durch Kommata. Also eine Schleife durchlaufen lassen und jeweils das Satzzeichen anfügen. Wie bekomme ich es hin, dass nach dem letzten Datensatz kein Komma angezeigt wird?

    Danke!
    Der Jan
     
    Zuletzt bearbeitet: 23.01.2007
  2. ThaHammer

    ThaHammer MacUser Mitglied

    Beiträge:
    3.276
    Zustimmungen:
    13
    MacUser seit:
    01.06.2004
    lass die schleife nicht so weit laufen und hänge den letzten Datensatz nach der Schleife noch an. Wäre eine Möglichkeit! Oder du schneidest das letzte Zeichen wieder weg. Wäre eine zweite Möglichkeit.
     
  3. Der_Jan

    Der_Jan Thread Starter MacUser Mitglied

    Beiträge:
    606
    Zustimmungen:
    7
    MacUser seit:
    06.01.2004
    Das stellt mich vor Probleme. Mein Code sieht wie folgt aus:

    PHP:
    $request=mysql_query("SELECT ID FROM user WHERE blablabla");

    if(
    $request)

    {
    while (
    $result=mysql_fetch_array($request))
                        
        { echo
    "$result[ID],"; }

    }
    Wie und wo kann ich hier eine Sperre setzen, damit $i-1 Datensätz die Schleife durchlaufen? Und wie spreche ich anschließend den letzten Datensatz an?

    Bin für jeden weiteren sachdienlichen Hinweis dankbar.

    Der Jan
     
  4. miss.moxy

    miss.moxy MacUser Mitglied

    Beiträge:
    6.558
    Zustimmungen:
    624
    MacUser seit:
    15.05.2004
    Ich würd alles in einen String schreiben und dann die letze(n)
    überflüssige(n) Stelle(n) mit substr abschneiden…
    Ist in meinen Augen einfacher… :)


    lea
     
  5. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Oder eine Zeile allein abholen und erst dann in die Schleife gehen.
    Dann kann man das Komma an den Anfang stellen ;).
     
  6. ThaHammer

    ThaHammer MacUser Mitglied

    Beiträge:
    3.276
    Zustimmungen:
    13
    MacUser seit:
    01.06.2004
    Wird bei seiner Schleife das einfachste sein!
     
  7. koli.bri

    koli.bri Gast

    Oder:

    Du schreibst die Werte zuerst nacheinander in ein Array, und fügst die dann mit "implode()" zusammen.
    Sofern es sich um PHP handelt.

    Allerdings solltest du da mit mysql_fetch_array aufpassen, da in dem Ergebnissarray jeder Satz zweimal vorkommt (einmal mit dem Zahlindex des Arrays, und einmal mit dem Spaltennamen als Array-Bezeichner. Lässt sich umgehen, indem man als zweites Parameter von mysql_fetch_array() die Konstante MYSQL_ASSOC angibt.
    Aber diesbezüglich lässt sich das ganze mit Testausgaben via print_r() besser erkennen :)

    Also: Ergbnisse aus einer Datenbank in ein Array speichern, und die einzelnen Punkte mit implode() zusammenfügen :)

    gruß
    Lukas
     
  8. Der_Jan

    Der_Jan Thread Starter MacUser Mitglied

    Beiträge:
    606
    Zustimmungen:
    7
    MacUser seit:
    06.01.2004
    Klappt

    Guten Morgen,
    hab mir das Thema Arrays genauer angesehen und es funktioniert. :)

    PHP:
    {
    while (
    $result=mysql_fetch_array($request))
                                
        {
        
    $array[]=$result[ID]";
        }
                            
    $stringmitkommata=implode(",",$array);
    }
    Oder ist das noch immer zu kompliziert? Als PHP-Einsteiger denk ich gelegentlich etwas komplizierter als i.d.R. nötig (war schon dabei, für das Komma-Problem eine vielzeilige (>100) if-elseif-else-Konstruktion aufzubauen). Danke für die verschiedenen Lösungsansätze.

    Der Jan
     
  9. scope

    scope MacUser Mitglied

    Beiträge:
    4.081
    Zustimmungen:
    301
    MacUser seit:
    24.01.2005
    Das wäre jetzt auch mein Vorschlag gewesen.. ist sicher am praktischsten!
     
  10. koli.bri

    koli.bri Gast

    Ob es Dir zu kompliziert ist, wirst nur Du entscheiden können :)
    Aber es ist, soweit ich weiß, die zeilenärmste Variante.

    Bezüglich der if-eliseif-else-Konstruktion:
    Da möchte ich nur kurz den switch-case-Befehl in den Raum werfen.
    Damit lässt sich in der Regel ein if-elseif-else vermeiden :)

    gruß
    Lukas
     
Die Seite wird geladen...

Diese Seite empfehlen