Bazzel
Avatar Bazzel
Themenersteller
Content Meister (251 Beiträge)

PHP Geburtstagsliste

am 13.01.2010, 00:17 Uhr eröffnete Bazzel folgenden Thread
PHP & MySQL    3286 mal gelesen    18 Antwort(en).

Hallo,

habe Probleme mit diesem PHP Code. Hab leider von PHP nicht viel / keine Ahnung . Er zeigt nicht gleich alles an sondern nur die ersten Zeilen. Z. B.

"Im Januar haben
12 Mitglieder Geburtstag".

Erst nach erneutem Laden der Seite wird die Geburtstags-Liste mit allen 12 Namen und Daten angezeigt. Es soll aber gleich alles angezeigt werden. Hier der verwendete Code.


<?php

........

$satz .= "" . "In " . $monat1 . ((($gb_counter == 1) ? " hat " : " haben ")) . "
" .
$gb_counter . ((($gb_counter == 1) ? " Mitglied" : " Mitglieder")) . " Geburtstag


";

$link1 = "javascript: window.location.reload()";
echo "$satz";

// Ausgabe der Namen und Daten
echo $ausgabe;

?>



Wie muss ich es ändern damit die gesamte Liste direkt angezeigt wird ?

Viele Grüße Joachim
 


Rock'n'Roll Club Lörrach
Deutsche Meisterschaft 2009 Rock'n'Roll
   

willmann
Avatar willmann
TYPO3-Freelancer.
Guru (246 Beiträge)
am 13.01.2010, 08:18 Uhr schrieb willmann

Hallo Joachim,

woher kommt denn $ausgabe ? Der Code kann so nicht funktionieren, da fehlt noch ein entscheidender Teil (Befüllung von $ausgabe), bevor man Dir da helfen kann...

Warum legst Du auf den "Im Januar haben x Mitglieder Geburtstag" einen javascript-Reload-Link? Hat das einen tieferen Sinn?

Viele Grüße

Marc

Bazzel schrieb:


<?php

........

$satz .= "" . "In " . $monat1 . ((($gb_counter == 1) ? " hat " : " haben ")) . "
" .
$gb_counter . ((($gb_counter == 1) ? " Mitglied" : " Mitglieder")) . " Geburtstag


";

$link1 = "javascript: window.location.reload()";
echo "$satz";

// Ausgabe der Namen und Daten
echo $ausgabe;

?>




Marc Willmann. TYPO3-Freelancer.
http://www.marc-willmann.de

Bazzel
Avatar Bazzel
Content Meister (251 Beiträge)
am 13.01.2010, 08:54 Uhr schrieb Bazzel

willmann schrieb:

Hallo Joachim,

woher kommt denn $ausgabe ? Der Code kann so nicht funktionieren, da fehlt noch ein entscheidender Teil (Befüllung von $ausgabe), bevor man Dir da helfen kann...

Warum legst Du auf den "Im Januar haben x Mitglieder Geburtstag" einen javascript-Reload-Link? Hat das einen tieferen Sinn?


Hallo Marc,
den oberen Teil hab ich weggelassen. Könnte es sein das ich zu viel weggelassen habe
Habe den Code so übernommen jedoch wie erwähnt bisher wenig mit php zu tun gehabt.

Keinen tieferen Sinn einfach bloß übernommen....... aber jetzt da du es sagst ..... wenn ich den javascript-Reload-Link raus schmeiße sollte es doch gehen ?

Komme leider erst heute Abend zum Testen.

Viele Grüße Joachim


Rock'n'Roll Club Lörrach
Deutsche Meisterschaft 2009 Rock'n'Roll
   

willmann
Avatar willmann
TYPO3-Freelancer.
Guru (246 Beiträge)
am 13.01.2010, 09:07 Uhr schrieb willmann

Bazzel schrieb:

Hallo Marc,
den oberen Teil hab ich weggelassen. Könnte es sein das ich zu viel weggelassen habe
Habe den Code so übernommen jedoch wie erwähnt bisher wenig mit php zu tun gehabt.

Keinen tieferen Sinn einfach bloß übernommen....... aber jetzt da du es sagst ..... wenn ich den javascript-Reload-Link raus schmeiße sollte es doch gehen ?



Nein, vermutlich nicht. Dann hast Du nur den Reload-Link nicht drin Die große Preisfrage ist, warum in $ausgabe erst beim Reload Inhalte stehen, die ausgegeben werden. Das kann man aber erst beantworten, wenn Du den oberen Teil des Codes auch postest ....

Viele Grüße

Marc


Marc Willmann. TYPO3-Freelancer.
http://www.marc-willmann.de

Bazzel
Avatar Bazzel
Content Meister (251 Beiträge)
am 13.01.2010, 09:16 Uhr schrieb Bazzel

Danke Marc. Ok eindeutig zu viel weggelassen

Sobald ich an den Rechner komme werde ich den rest des Codes einstellen

Viele grüße Joachim
 


Rock'n'Roll Club Lörrach
Deutsche Meisterschaft 2009 Rock'n'Roll
   

Bazzel
Avatar Bazzel
Content Meister (251 Beiträge)
am 13.01.2010, 14:16 Uhr schrieb Bazzel

So nun aber alles dabei


<?php
$monate = array(1=>"Januar",
2=>"Feber",
.........
12=>"Dezember");
$monat1 = $monate[date("n")];

$geburtstage = file("geburtstage.txt");
$ausgabe = "";
$gb_counter = 0;
$jahr = date("Y");

foreach ($geburtstage as $geburtstag) {
list($name, $tag, $monat) = explode("|", $geburtstag);
if ($monat == date("m")) {
$ausgabe .= "" . $name . "
Geburtstag: " . $tag . "." . $monat . "." . $jahr . "

" . "Alles Gute!

";
$gb_counter++;
}
}

$satz .= "" . "In " . $monat1 . ((($gb_counter == 1) ? " hat " : " haben ")) . "
" .
$gb_counter . ((($gb_counter == 1) ? " Mitglied" : " Mitglieder")) . " Geburtstag


";

$link1 = "javascript: window.location.reload()";
echo "$satz";

// Ausgabe der Namen und Daten
echo $ausgabe;

?>



Müsste dann ja so richtig sein oder. Alles was Javascript ist raus. Kann es leider im Moment nicht Testen da ich nicht an den Rechner komme.

echo $satz
echo $ausgabe;

Viele Grüße Joachim


Rock'n'Roll Club Lörrach
Deutsche Meisterschaft 2009 Rock'n'Roll
   

willmann
Avatar willmann
TYPO3-Freelancer.
Guru (246 Beiträge)
am 13.01.2010, 14:37 Uhr schrieb willmann

Hmm, komischer Code. Du hast, wenn ich das richtig verstehe, also eine Textdatei, in der alle User mit Geburtsdatum drinstehen. Welches Format hat denn diese Datei, kannst Du ggf. mal eine Beispielzeile posten?

Ich hab den Code mal leidlich kommentiert, um ihn für Dich ein bisserl nachvollziehbar zu machen.


<?php

// lege Array mit den Monatsnamen an
$monate = array(1=>"Januar",
2=>"Feber",
.........
12=>"Dezember");

// speichere den aktuellen Monat in $monat1
$monat1 = $monate[date("n")];

// Initialisierung
$geburtstage = file("geburtstage.txt");
$ausgabe = "";
$gb_counter = 0;
$jahr = date("Y");

// für jede Zeile in der Quelldatei

foreach ($geburtstage as $geburtstag) {

// trenne die Zeile jeweils am Zeichen "|" und speichere die einzelnen Bestandteile in $name, $tag und $monat

list($name, $tag, $monat) = explode("|", $geburtstag);

// Wenn in $monat der aktuelle Monat gespeichert ist
if ($monat == date("m")) {

// füge eine Zeile an die Ausgabevariable an
$ausgabe .= "" . $name . "
Geburtstag: " . $tag . "." . $monat . "." . $jahr . "

" . "Alles Gute!

";
// und erhöhe den Counter um 1
$gb_counter++;
}
}

// Ergebnis ausgeben
$satz .= "" . "In " . $monat1 . ((($gb_counter == 1) ? " hat " : " haben ")) . "
" .
$gb_counter . ((($gb_counter == 1) ? " Mitglied" : " Mitglieder")) . " Geburtstag


";

$link1 = "javascript: window.location.reload()";
echo "$satz";

// Ausgabe der Namen und Daten
echo $ausgabe;

?>



Also, wenn im Satz steht, dass mindestens ein User Geburtstag hat, müsste eigentlich auch danach die Liste ausgegeben werden, in der auch mindestens ein Eintrag vorhanden ist. Sag ich jetzt mal so.

Das "Alle Gute" in jeder Zeile ist aber sinnfrei, oder? Das würde doch zu einer Ausgabe in der Form:

Marc 13. Januar
Alles Gute

Joachim 15. Januar
Alles Gute

.... führen. Soll das so?


Marc Willmann. TYPO3-Freelancer.
http://www.marc-willmann.de

Bazzel
Avatar Bazzel
Content Meister (251 Beiträge)
am 13.01.2010, 15:02 Uhr schrieb Bazzel

willmann schrieb:

Also, wenn im Satz steht, dass mindestens ein User Geburtstag hat, müsste eigentlich auch danach die Liste ausgegeben werden, in der auch mindestens ein Eintrag vorhanden ist. Sag ich jetzt mal so.

Das "Alle Gute" in jeder Zeile ist aber sinnfrei, oder? Das würde doch zu einer Ausgabe in der Form:

Marc 13. Januar
Alles Gute

Joachim 15. Januar
Alles Gute

.... führen. Soll das so?



Die Ausgabe soll so erscheinen.

Ja das Problem ist das die Liste sich beim Laden nicht gleich öffnet (siehe Bild im Anhang).
Erst nach einem Reload sind die Einträge sichtbar.

VG Joachim


Rock'n'Roll Club Lörrach
Deutsche Meisterschaft 2009 Rock'n'Roll
   

willmann
Avatar willmann
TYPO3-Freelancer.
Guru (246 Beiträge)
am 13.01.2010, 15:05 Uhr schrieb willmann

kein Bild

Schau mal im Quelltext der Website, ob dort die Geburtstage beim ersten Mal schon drinstehen. Vielleicht ist es ein HTML-Problem und kein PHP-Problem. Ansonsten poste oder schick mir mal die URL, um die es da geht, damit ich mir das mal anschauen kann.


Marc Willmann. TYPO3-Freelancer.
http://www.marc-willmann.de

Bazzel
Avatar Bazzel
Content Meister (251 Beiträge)
am 13.01.2010, 20:07 Uhr schrieb Bazzel

Hallo Marc,

jetzt gehts. Das Skript hat gepasst als der Javascript-Code draußen war.
Der aufrufenden HTML Absatz hat das Problem am ende noch verursacht da ich dort den php Code über einen ifram mit variabler höhe eingebunden hab.

Die Formatierung der Textdatei:

Marlene Schröder|1|7|
Muster Mustermann|2|1|

DANKE für die Hilfe

Wenn nach ein bisschen zeit erübrigen kannst habe da noch eine Idee für eine Verbesserung

Wäre es möglich die runden Geburtstage (10,20,30....) Farblich hervorzuheben ?

Viele Grüße Joachim


Rock'n'Roll Club Lörrach
Deutsche Meisterschaft 2009 Rock'n'Roll
   

willmann
Avatar willmann
TYPO3-Freelancer.
Guru (246 Beiträge)
am 13.01.2010, 20:13 Uhr schrieb willmann


<?php
[...]

// farbliche Markierung für runde Geburtstage
if ($jahr - date("Y") % 10 == 0) $isJubilee = true;
if ($isJubilee) $ausgabe .= \'

\';

$ausgabe .= "" . $name . "
Geburtstag: " . $tag . "." . $monat . "." . $jahr . "
\\n" . "Alles Gute!

";

if ($isJubilee) $ausgabe .= \'

\';

// und erhöhe den Counter um 1
[...]



Code ist ungetestet, aber so in etwa sollte es gehen... Viele Grüße

Marc


Marc Willmann. TYPO3-Freelancer.
http://www.marc-willmann.de



« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5274 Themen und 36108 Beiträge.
Insgesamt sind 48346 Mitglieder registriert.