Konzertkalender mit PHP

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

  • Konzertkalender mit PHP

    Hallo!

    ich sitze zur Zeit an einem Problem.

    Ich möchte für eine Seite eine art Konzertkalender entwerfen.

    Funktionieren soll das ganze folgendermaßen:

    Nachdem man sich eingeloggt hat, kann man über ein Formular das Datum, Ort und Club des Konzertes eintragen. Das ganze wird dann in einer Textdatei gespeichern (ich habe für dieses Projekt KEINE Datenbank zur Verfügung!)
    Die Einträge in der Textdatei sehen dann ungefähr so aus:

    05.10.2006;Frankfurt;Festhalle
    06.10.2006;Berlin;Olympiastadion
    .
    .
    .

    Die Einträge werden als mit einem ";" getrennt!

    Soweit funktioniert alles.

    Doch wenn ich die Textdatei wieder auslesen will habe ich ein Problem!

    1.) Ich würde die Einträge gerne nach Datum sortiert ausgeben.
    Denn wenn man nachträglich eine Veranstaltung einträgt, dann wird ja alles durcheinander ausgegeben. Würde dann so aussehen:

    05.10.2006 Frankfurt Festhalle
    06.10.2006 Berlin Olympiastadion
    14.08.2006 Dortmund Westfalenhalle
    20.09.2006 Bremen Schlachthof
    10.10.2006 Hamburg Markthalle

    Das wäre natürlich doof!

    Wie kann ich die Textdatei am besten auslesen und dann entsprechend nach Datum sortieren?

    Danke für die Hilfe...

  • #2
    Re: Konzertkalender mit PHP

    Original geschrieben von Maxxon
    05.10.2006;Frankfurt;Festhalle
    06.10.2006;Berlin;Olympiastadion
    ....
    PHP-Code:
    $file file($filename);
    foreach (
    $file as $i => $line) {
        
    $line explode(';'trim($line));
        
    $file[$line[0]] = array('ort' => $line[1], 'location' => $line[2]);
    }
    ksort($file);
    reset($file); 

    Kommentar


    • #3
      Danke...werde ich mal ausprobieren und dann feedback geben.

      Kommentar


      • #4
        Re: Re: Konzertkalender mit PHP

        Sorry, ich muß mich korrigieren:
        PHP-Code:
        $in file($filename);
        $out = array();
        foreach (
        $in as $i => $line) {
            
        $line explode(';'trim($line));
            
        $out[$line[0]] = array('ort' => $line[1], 'location' => $line[2]);
        }
        ksort($out);
        reset($out); 

        Kommentar


        • #5
          hi @onemorenerd
          kann es kann sein, dass ksort es falsch sortiert?
          23.12.2009
          wird kleiner als
          31.01.2000
          und grösser als
          11.01.2024
          ich glaube dassschlüssel anderes gebieldet sein muss
          Zuletzt geändert von Slava; 29.06.2006, 12:27.
          Slava
          bituniverse.com

          Kommentar


          • #6
            Original geschrieben von Slava
            kann es kann sein, dass ksort es falsch sortiert?
            Nein, überhaupt nicht.
            23.12.2009
            wird kleiner als
            31.01.2000
            und grösser als
            11.01.2024
            Vollkommen korrekt.

            Es werden Stringvergleiche durchgeführt - also ist der mit '2' beginnende String "kleiner" als der mit '3' beginnende, und "größer" als der mit '1' beginnende.
            ich glaube dass mann schlüssel anderes gebieldet sein muss
            Natürlich muss er das.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              PHP-Code:
              $in=file("deinedatei");
              $temp=array();
              foreach (
              $in as $k=>$line) {
                
              $l=trim($line);
                if(
              $l!="")
                 
              $temp[] = explode(';'$l);
                 }
              $in=$temp;
              function 
              wert($ar){
               
              // return (int)trim(strrev(str_replace(".","",$ar[0]))); //falsch
               
              $a=explode(".",$ar[0]);
                return 
              intval(trim($a[2]).$a[1].trim($a[0]));
              }
              function 
              mysort($a,$b){
               
                if (
              wert($a) == wert($b)) {
                     return 
              0;
                 }
                 return (
              wert($a) <wert($b)) ? -1;
              }

              usort($in,"mysort");
              print_r($in); 
              habe was eben geändert.
              getestet habe ich es aber nicht
              Zuletzt geändert von Slava; 29.06.2006, 17:06.
              Slava
              bituniverse.com

              Kommentar


              • #8
                hm..also irgendwie klappts. Ja, doch...

                Allerdings ist das mit der Darstellungsweise etwas komisch.

                Meine Lösung sah so aus, dass ich die Dateien aus der text-Datei in eine Tabelle reinlade. Die Tabelle sollte dann dynamisch an die Anzahl der Einträge aufgebaut werden.

                Das sah bisher folgendermaßen aus:

                PHP-Code:
                <body>
                 <TABLE width="680" border="1" cellpadding="2" cellspacing="0">
                 <TR>
                  <TD width="25%">Datum</TD>
                  <TD width="35%">Ort</TD>
                  <TD width="40%">Club</TD>
                 </TR><?php

                $datei 
                fopen("test.txt""r") ;
                while (!
                feof($datei)) {
                 
                $zeile fgets($datei512) ;
                 
                $eintrag explode(";"trim($zeile)) ;
                // Auslesen jetzt abgeschlossen,
                // es folgt das Einsetzen in die Tabelle
                ?>

                 <TR>
                  <TD><?php echo $eintrag[0]; ?></TD>
                  <TD><?php echo $eintrag[1]; ?></TD>
                  <TD><?php echo $eintrag[2]; ?></TD>
                 </TR>

                <?php
                // Ende der while-Schleife
                fclose($datei) ;?>

                </TABLE>
                </body>
                Es klappt auch...die Einträge werden ausgelesen. Jedoch unsortiert!
                Und ich glaube, ksort klappt hier nicht. oder?

                Kommentar


                • #9
                  Derzeit machst du die Ausgabe ja auch schon während des Einlesens der Daten - klar, dass dann nix mehr mit Sortieren ist.

                  Mach's wie vorgeschlagen:
                  Daten einlesen,
                  sortieren,
                  anschließend in einer Schleife (foreach bietet sich an) ausgeben.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X