1. Dashboard
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. HTML - Webmaster Forum
  2. Programmierung - Entwickler Forum
  3. PHP Forum - Apache - CGI - Perl - JavaScript und Co.

Geburstagsbox

  • xman86
  • 30. Mai 2005 um 22:43
  • 1
  • 2
  • xman86
    Teeny
    Beiträge
    20
    • 30. Mai 2005 um 22:43
    • #1

    Hallo zusammen,


    ich habe eine Problem und zwar habe ich eine EXCEL Tabelle mit zwei Spalten in einer den Namen und in eine das Geburtsdatum tt.mm.JJJJ. Es Handelt sich um 170 Leute jetzt will ich auf meine Homepage eine kleine Box haben wo jede Woche drin steht wer Geburstag hat! Hat jemand eine Idee wie ich das machen könne? Über hilfe stellunge würde ich mich freuen!


    mfg!

  • Ronald
    Forum Guru
    Beiträge
    5.439
    • 30. Mai 2005 um 23:32
    • #2

    Hi!

    Unterstützt dein Webspace PHP ?

    Fragt ...

    Ronald

    annunci per coppie

  • Gast
    • 31. Mai 2005 um 08:09
    • #3

    hi


    ja er unterstützt php und auch mysql!

    mfg

  • Ronald
    Forum Guru
    Beiträge
    5.439
    • 31. Mai 2005 um 09:23
    • #4

    Moin!

    Also ich würde das nur mit PHP und einer kleinen Textdatei lösen.
    Der Vorteil genüber MySQL ist, daß du die Textdatei jederzeit einfach bearbeiten kannst, z.B. mit Excel.

    Als nächstes brauchst du dann ein PHP-Script, welches die Datei öffnet und die Daten rausfiltert, die angezeigt werden sollen. So etwas ist nicht schwierig und geht auch auf der Server blitzschnell, wenn die Datei in einem geeigneten Format vorliegt. Wichtig ist, daß alle Datensätze möglichst im gleichen Format sind, z.B.:

      07.08.1983 Klaus
      14.05.1984 Werner
      12.11.1979 Michaela
      usw.

      falsch wäre dazwischen ein Datensatz wie
      07.06.05 Dumpfbacke


    Dann solltest du dir auch noch überlegen, nach welchen Kriterien die Daten angezeigt werden sollen. Du hast geschrieben "in dieser Woche Geburtstag haben". Wenn du "Woche" z.B. Sonntag bis Samstag definierst, dann wird am Samstag nicht angezeigt, daß am nächsten Tag jemand Geburtstag hat, da es eine andere Woche wäre.

    Ich würde das Script so aufbauen, daß es z.B. anzeigt wer heute und in den nächsten X Tagen Geburtstag hat, dazu wer gestern (und evtl. vorgestern bzw. in den letzten X Tagen) Geburtstag hatte.

    Auch ob das Geburtsjahr oder wie alt die/der Betreffende wird mit angezeigt werden soll mußt du dir noch überlegen.

    Das PHP-Script dafür ist nicht so kompliziert und ich könnnte es dir erstellen wenn du genau weißt was du willst.

    G.a.d.M.

    Ronald

    annunci per coppie

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 13:17
    • #5

    Oder du speicherst deine Tabelle als CSV datei ab und nimmst dieses script.

    Code
    <?
    $fp = fopen('Mappe1.csv', 'r');
    
    
    while (!feof($fp)) {
        $zeile = fgets($fp,4096);
        if ($zeile!="") {
          $tmp=split(";", $zeile );
          $temp['name']=trim($tmp[0]);
          $temp['datum']=trim($tmp[1]);
          ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $temp['datum'], $tmp);
          $temp['tag']=$tmp[1];
          $temp['monat']=$tmp[2];
          $temp['jahr']=$tmp[3];
          $speicher[]=$temp;
        }
    }
    
    
    fclose($fp);
    
    
    foreach ( $speicher AS $Wert)
    {
     if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) ) )
     {
     echo "Diese Woch hat: ".$Wert['name']." am ".date("l", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) )." Geburtstag
    \n";
     }
    }
    
    
    ?>
    Alles anzeigen
  • xman86
    Teeny
    Beiträge
    20
    • 31. Mai 2005 um 15:58
    • #6

    Hi


    so sieht die http://itpruefungen.it.funpic.de und dann ist es die test.xls (ist nur ein auschnitt der Tabelle)

    GreenRover wie soll ich das mit deim Code machen? Kannst ir das genau erklären habe keine Ahung wie ich das machen soll!


    und

    @ Ronald

    deine Lösung ist auch gut! Könntest mit eine Script schreiben also so wie du es dir gedacht hast mit wer inden Nächsten tagen Geburstag hat und wer hatte und wie alt er wird?

    mfg

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 17:51
    • #7

    du klatsch mein script in eine Datei uns schreibst als endung php hin.

    schiebst dne ganzen mist auf den server. Die die XLS Datei die du ja vorher mit excel geöffent hast udn als CSV gespeichert hast shciebst du in dne gleichen order.

    und trägst den namen der Datei in die 2te Zeiel meines scriptes ein.

    $fp = fopen('Wei ich wie die heist.csv', 'r');

    nun öffne man das ganze mittels eines Browsers und erfreu sich.

  • xman86
    Teeny
    Beiträge
    20
    • 31. Mai 2005 um 18:02
    • #8

    Hallo,


    habe alles hochgeladen!
    http://itpruefungen.it.funpic.de/

    aber es passiert nichts!


    mfg

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 18:07
    • #9

    stimmt, kann auch nciht bei deiner anordenung
    ich schreibe das ganze mal ebend um.

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 18:13
    • #10

    so sollte es gehen.

    Code
    <?
    $fp = fopen('test.csv', 'r');
    
    
    while (!feof($fp)) {
        $zeile = fgets($fp,4096);
        if ($zeile!="") {
          $tmp=split(";", $zeile );
          $temp['name']=trim($tmp[0]);
          $temp['anschrift']=trim($tmp[1]);
          list($temp['datum'], $temp['ort']) = split(", ", trim($tmp[2]) );
          ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})", $temp['datum'], $tmp);
          $temp['tag']=$tmp[1];
          $temp['monat']=$tmp[2];
          $temp['jahr']=$tmp[3];
          $speicher[]=$temp;
        }
    }
    
    
    fclose($fp);
    
    
    foreach ( $speicher AS $Wert)
    {
     if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) ) )
     {
     echo "Diese Woche hat: ".$Wert['name']." am ".date("l", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) )." Geburtstag
    \n";
     }
    }
    
    
    ?>
    Alles anzeigen
  • xman86
    Teeny
    Beiträge
    20
    • 31. Mai 2005 um 19:06
    • #11

    hallo,

    geht leider nicht! Ist meine csv Datei ünerhaupt richtig?

    mfg

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 20:43
    • #12

    ja die ist so richtig.

    und ich teste das ganze gleich nochmal.

    habe es ebend nur so geschrieben gehabt.

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 20:49
    • #13

    also keine ahnung was du hast.

    ist klar das du nichts ausgegeben bekommst, da diese woche auch keienr geburtzstag hat.


    oder habe ich was falsch verstanden???


    Code
    <?
    $fp = fopen('test.csv', 'r');
    
    
    while (!feof($fp)) {
        $zeile = fgets($fp,4096);
        if ($zeile!="") {
          $tmp=split(";", $zeile );
          $temp['name']=trim($tmp[0]);
          $temp['anschrift']=trim($tmp[1]);
          list($temp['datum'], $temp['ort']) = split(", ", trim($tmp[2]) );
          ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})", $temp['datum'], $tmp);
          $temp['tag']=$tmp[1];
          $temp['monat']=$tmp[2];
          $temp['jahr']=$tmp[3];
          $speicher[]=$temp;
        }
    }
    
    
    fclose($fp);
    
    
    foreach ( $speicher AS $Wert)
    {
     if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) ) )
     {
     echo "Diese Woche hat: ".$Wert['name']." am ".date("l", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) )." Geburtstag
    \n";
     }
    }
    
    
    // debuging ausgabe
    echo "
    
    
    </p><pre>";
    print_r($speicher);
    echo "</pre>"; // debug ende
    ?>
    Alles anzeigen
  • Ronald
    Forum Guru
    Beiträge
    5.439
    • 31. Mai 2005 um 21:29
    • #14

    Moin!

    Zitat von xman86


    @ Ronald

    deine Lösung ist auch gut! Könntest mit eine Script schreiben also so wie du es dir gedacht hast mit wer inden Nächsten tagen Geburstag hat und wer hatte und wie alt er wird?

    mfg

    Ich finde es unsinnig, wenn 2 User unabhängig von einander für die gleiche Sache Lösungen bauen und ehrlich gesagt habe ich dafür auch genug anderes zu tun.

    Ich hätte dir war gebaut, da sich GreenRover jedoch aufdrängt, halte ich mich jetzt zurück.
    Wenn du nicht weiter kommst schick mir eine PN.

    G.a.d.M.

    Ronald

    annunci per coppie

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 21:57
    • #15

    jo mir ist auch ladde, wenn dem FRAGENSTELLER die läsung mit der db möchte ( würde ich auch vorziehen) .

    habe mom selbst genug probleme ( XML to array )

  • xman86
    Teeny
    Beiträge
    20
    • 31. Mai 2005 um 22:43
    • #16

    Hallo

    GreenRover kannst mir bitte nochmal Helfen?

    habe die csv Datei nochmal umgeschrieben! Kannst mir das bitte nochmal um schreiben das es wieder geht? Und wenn es den Tag auf Deutsch ausgeben könnte wäre das cool!

    danke im voraus!

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 22:47
    • #17

    nimm die erstfassung, die war so ausgelegt!!!

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 31. Mai 2005 um 22:54
    • #18

    und auf deutsch würde es so aussehen.

    Code
    <?
    $fp = fopen('Mappe1.csv', 'r');
    
    
    setlocale(LC_TIME, "de_DE")
    
    
    while (!feof($fp)) {
        $zeile = fgets($fp,4096);
        if ($zeile!="") {
          $tmp=split(";", $zeile );
          $temp['name']=trim($tmp[0]);
          $temp['datum']=trim($tmp[1]);
          ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $temp['datum'], $tmp);
          $temp['tag']=$tmp[1];
          $temp['monat']=$tmp[2];
          $temp['jahr']=$tmp[3];
          $speicher[]=$temp;
        }
    }
    
    
    fclose($fp);
    
    
    foreach ( $speicher AS $Wert)
    {
     if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) ) )
     {
     echo "Diese Woch hat: ".$Wert['name']." am ".strftime(" %A", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], $Wert['jahr']) )." Geburtstag
    \n";
     }
    }
    
    
    ?>
    Alles anzeigen
  • xman86
    Teeny
    Beiträge
    20
    • 31. Mai 2005 um 23:21
    • #19

    hallo,


    jetzt hat jemand am 31.05. Geburstag und es steht da das es Freitag ist obwohl es heute ist! Achso und der vom 01.06 wird garnicht angezeigt!


    mfg!

  • GreenRover
    Forum Guru
    Beiträge
    4.787
    • 1. Juni 2005 um 18:11
    • #20

    so nun aber:

    Code
    <?
    $fp = fopen('test.csv', 'r');
    
    
    setlocale(LC_TIME, "de_DE");
    
    
    while (!feof($fp)) {
        $zeile = fgets($fp,4096);
        if ($zeile!="") {
          $tmp=split(";", $zeile );
          $temp['name']=trim($tmp[0]);
          $temp['datum']=trim($tmp[1]);
          ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $temp['datum'], $tmp);
          $temp['tag']=$tmp[1];
          $temp['monat']=$tmp[2];
          $temp['jahr']=$tmp[3];
          $speicher[]=$temp;
        }
    }
    
    
    fclose($fp);
    
    
    foreach ( $speicher AS $Wert)
    {
     if (date ("W")==date("W", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], date("Y") ) ) )
     {
     $jahr=date("Y")-$Wert['jahr'];
     echo "Diese Woche hat: ".$Wert['name']." am ".strftime("%A", mktime(0, 0, 0, $Wert['monat'], $Wert['tag'], date("Y") ) )." Geburtstag und wird ".$jahr."
    \n";
     }
    }
    
    
    ?>
    Alles anzeigen

    die ausgegebenen wochtentage wahren die an dem die personen geboren wurden ( falsches Jahr )

    • 1
    • 2

Tags

  • html
  • server
  • tex
  • color
  • version
  • code
  • webspace
  • php
  • tabelle
  • datum
  • format
  • bearbeiten
  • datei
  • daten
  • lösen
  • geburtstag
  • script
  • mysql
  • excel
  • ico
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche