Frage zum letzten Datensatz eine DB-Abfrage

  1. Der_Jan

    Der_Jan Thread StarterMacUser Mitglied

    Mitglied seit:
    06.01.2004
    Beiträge:
    609
    Zustimmungen:
    7
    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
     
    Der_Jan, 23.01.2007
  2. ThaHammer

    ThaHammerMacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    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.
     
    ThaHammer, 23.01.2007
  3. Der_Jan

    Der_Jan Thread StarterMacUser Mitglied

    Mitglied seit:
    06.01.2004
    Beiträge:
    609
    Zustimmungen:
    7
    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
     
    Der_Jan, 23.01.2007
  4. miss.moxy

    miss.moxyMacUser Mitglied

    Mitglied seit:
    15.05.2004
    Beiträge:
    6.539
    Zustimmungen:
    624
    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
     
    miss.moxy, 23.01.2007
  5. maceis

    maceisMacUser Mitglied

    Mitglied seit:
    24.09.2003
    Beiträge:
    16.696
    Zustimmungen:
    602
    Oder eine Zeile allein abholen und erst dann in die Schleife gehen.
    Dann kann man das Komma an den Anfang stellen ;).
     
    maceis, 23.01.2007
  6. ThaHammer

    ThaHammerMacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    Wird bei seiner Schleife das einfachste sein!
     
    ThaHammer, 24.01.2007
  7. koli.bri

    koli.bri

    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
     
    koli.bri, 24.01.2007
  8. Der_Jan

    Der_Jan Thread StarterMacUser Mitglied

    Mitglied seit:
    06.01.2004
    Beiträge:
    609
    Zustimmungen:
    7
    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
     
    Der_Jan, 24.01.2007
  9. scope

    scopeMacUser Mitglied

    Mitglied seit:
    24.01.2005
    Beiträge:
    4.085
    Zustimmungen:
    301
    Das wäre jetzt auch mein Vorschlag gewesen.. ist sicher am praktischsten!
     
    scope, 24.01.2007
  10. koli.bri

    koli.bri

    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
     
    koli.bri, 24.01.2007
Die Seite wird geladen...
Ähnliche Themen - Frage zum letzten
  1. osh
    Antworten:
    8
    Aufrufe:
    1.111
  2. Hausl
    Antworten:
    6
    Aufrufe:
    800
  3. Blain
    Antworten:
    2
    Aufrufe:
    2.038
  4. e-dude
    Antworten:
    4
    Aufrufe:
    870
  5. oconner
    Antworten:
    4
    Aufrufe:
    429
    oconner
    18.01.2006