PHP: Eine Tabelle (alphabetisch) sortieren

  • Hi!


    Folgendes: Daten (Name, Vorname, Geburtsjahr ...) werden mithilfe eines Formulars übermittelt, ich lasse sie in eine Textdatei mit Kommata (oder was immer) getrennt speichern und möchte sie nach dem Alphabet geordnet in eine Tabelle (HTML) ausgeben.


    Für den zweiten Teil kein Problem mit ereg_replace die Kommata durch </td><td> ersetzen lassen (bzw. </td></tr><tr> am Zeilenende). Aber wie mach ich das sortieren davor? Ich plan irgendwie nicht die sort()-Funktion.


    Wäre euch sehr dankbar für ein kurzes Beispiel. Danke schonmal.


    Sehr nett (bzw. auch wichtig ;) ) wäre natürlich dann eine Möglichkeit, das ganze nach Geburtsjahr sortieren zu können.

  • Du könntest alle objekte beim einlesen in ein array speichern, und dann das array ausgeben.


    Alternativ könntest du alle daten in eine mysqldatenbank speichern, das macht die sache einfacher.

  • Hi Flo.


    MySQL kommt leider nicht in Frage.
    Und die Daten in ein Array tun, muss man ja eh für sort(), das check ich aber nicht mit dem Array. Vielleicht kannst du das mal kurz zusammenschreiben?

  • Da gibts nichts spezielles, das gehört in ein größeres Projekt.


    es gibt die Felder Nachname, Vorname, Geschlecht, Geburtsjahr, E-Mail-Adresse. Diese Infos trägt jemand in eine ganz normale HTML-FORM ein. Ab da kannst du damit machen, "was du willst". :)


    Am naheliegensten wäre in meinen Augen, die Informationen mit einem seltenen Trennzeichen in eine Textdatei zu speichern und dann vor der Ausgabe als Tabelle (siehe mein erstes Posting) zu sortieren. Bin aber für Vorschläge offen, bzw. machs mal wie du es am einleuchtensten findest.


    Ok? Vielen Dank.

  • und was spricht dagegen einen sortieralgorithmus selbst zu implementieren?

    !ND - E71

  • Implementieren nichts, aber coden: Dass ich zu blöd dafür bin.


    Ach ja, ich glaub ich hab mich ein bisschen missverständlich ausgedrückt.


    Die Daten, die da eingegeben werden sind immer von einer Person und sollen alle in eine Datei. Man hat also beim Ausgeben und Sortieren mehrere "Datensätze".

  • implementieren und coden is das selbe ;)
    also ein selection-sort ist nicht so wild:


    for(i=0;i<anzahl_datensätze;i++)
    {
    for(j=i;j<anzahl_datensätze;j++)
    {
    // hier datensätze an position i und j vergleichen und tauschen,
    // falls datensatz j _kleiner_ datensatz i.
    // index des arrays als nullbasierend angenommen
    }
    }


    somit ist am ende des ersten durchlaufes der oberen schleife der kleinste datensatz an der ersten stelle. weiter gehts mit der 2. stelle usw.

    !ND - E71

  • Versteh ich dich recht, wenn mit deinem Algorithmus die Datensätze nach ihrer Ordnungsnummer sortiert werden? Oder wie soll ich Meier mit Schulz vergleichen? Ist wirklich nur ne frage eines, der es einfach nicht besser weiß, ja?


    Ach ja: Definition: Implementieren umfaßt das Entwerfen, Programmieren und Validieren eines (im allgemeinen nicht weiter zerlegten) Bausteins.
    :rolleyes: Hm...

  • Zitat

    Original geschrieben von Nico
    Versteh ich dich recht, wenn mit deinem Algorithmus die Datensätze nach ihrer Ordnungsnummer sortiert werden? Oder wie soll ich Meier mit Schulz vergleichen? Ist wirklich nur ne frage eines, der es einfach nicht besser weiß, ja?


    z.b. "Bauer" ist kleiner als "Müller" - kleiner im sinne von niedrigere position im alphabet bzw. niedrigerer ascii-wert.
    um einen solchen vergleich zu machen gibt es z.b. unter c++ die funktion strcmpi(a,b): die liefert -1 bzw. 1 für kleiner/größer und 0 für gleich. solche funktionen gibt es in jeder sprache. eventuell geht sogar ein vergleich mit dem kleiner/größer-operator (>, <)

    Zitat


    Ach ja: Definition: Implementieren umfaßt das Entwerfen, Programmieren und Validieren eines (im allgemeinen nicht weiter zerlegten) Bausteins.


    Also entwerfen hört sich für mich nach konzept an - und konzepterstellung hat nix mit implementieren zu tun. würde allerdings auch nicht behaupten, dass ich mich da _echt_ auskenne ;)

    !ND - E71

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!