Klassiker: Geburtstagsscript
Klassiker: Geburtstagsscript
Hi Leute,
es hat zwar nicht direkt was mit CMSms zu tun aber vielleicht sind ihr noch ein paar Coder die mir helfen können. Ich möchte einen benutzerdefinierten Tag schreiben, der mir alle Personen ausgibt, die heute Geburtstag haben !
Als Datenbasis habe ich eine csv-Datei mit folgenden Format:
Nachname1 Vorname1;dd.mm.yyyy
Nachname2 Vorname2;dd.mm.yyyy
Nachname3 Vorname3;dd.mm.yyyy
etc...
Habe noch nie mit csv Dateien gearbeitet und finde keine passende Lösung. Vielleicht habt ihr ne Idee ?
es hat zwar nicht direkt was mit CMSms zu tun aber vielleicht sind ihr noch ein paar Coder die mir helfen können. Ich möchte einen benutzerdefinierten Tag schreiben, der mir alle Personen ausgibt, die heute Geburtstag haben !
Als Datenbasis habe ich eine csv-Datei mit folgenden Format:
Nachname1 Vorname1;dd.mm.yyyy
Nachname2 Vorname2;dd.mm.yyyy
Nachname3 Vorname3;dd.mm.yyyy
etc...
Habe noch nie mit csv Dateien gearbeitet und finde keine passende Lösung. Vielleicht habt ihr ne Idee ?
Re: Klassiker: Geburtstagsscript
Die Suche nach csv ist dein Freund - sie hätte dir mindestens diesen Thread gezeigt 
http://forum.cmsmadesimple.org/index.ph ... 946.0.html
Du müsstest dann nur noch einen Filter hinzufügen ...

http://forum.cmsmadesimple.org/index.ph ... 946.0.html
Du müsstest dann nur noch einen Filter hinzufügen ...
Re: Klassiker: Geburtstagsscript
Danke...nach "csv" habe ich natürlich nicht gesucht *schäm
Werde mal probieren ob ich das so hinbekomme...
Werde mal probieren ob ich das so hinbekomme...
Re: Klassiker: Geburtstagsscript
So, ich habe alles soweit vorbereitet. Allerdings werden keine Daten importiert 
Ich denke es liegt an den Pfadangaben
Die geb.csv liegt im root-Verzeichnis...Stimmen die Pfade so ?

Ich denke es liegt an den Pfadangaben

Code: Select all
{csv template=“tmp/templates/geb.tpl“ file="geb.csv" first="0"}
Re: Klassiker: Geburtstagsscript
Hmm, sieht soweit OK aus ...
Gibt es einen bestimmten Grund, dass die csv im root liegt? Damit ist die Datei für den FileManager unerrreichbar.
Hast du daran gedacht, dass das Plugin ein Smarty-Plugin ist (kein CMSms-Plugin)?
Gibt es einen bestimmten Grund, dass die csv im root liegt? Damit ist die Datei für den FileManager unerrreichbar.
Hast du daran gedacht, dass das Plugin ein Smarty-Plugin ist (kein CMSms-Plugin)?
Re: Klassiker: Geburtstagsscript
Hm, es funktioniert nicht...
Kommt nur ne leere Seite. Die Datei liegt im Smarty-Pluginordner.
Kommt nur ne leere Seite. Die Datei liegt im Smarty-Pluginordner.
Re: Klassiker: Geburtstagsscript
Hat die csv folgendes Format ?
"Nachname1";"Vorname1";"dd.mm.yyyy"
"Nachname2";"Vorname2";"dd.mm.yyyy"
"Nachname3";"Vorname3";"dd.mm.yyyy"
Bei mir hatte es mal nicht funktioniert, da die Datensätze ohne "" waren ...
"Nachname1";"Vorname1";"dd.mm.yyyy"
"Nachname2";"Vorname2";"dd.mm.yyyy"
"Nachname3";"Vorname3";"dd.mm.yyyy"
Bei mir hatte es mal nicht funktioniert, da die Datensätze ohne "" waren ...
Re: Klassiker: Geburtstagsscript
Hi Cyberman,
finde es immer wieder klasse wie Du dich hier in den Support einbringst...
Also, ich habe es das jetzt zum Laufen gebracht. Der Pfad für die Templates ist von Smarty schon vorgegeben, daraus resultiert folgend Aufruf:
Leider sind meine Smarty Kenntnisse (noch) äußerst begrenzt aber ich habe es schon geschafft, daß mir alle Namen mit Geburtsdaten ausgegeben werden. Jetzt fehlt nur noch der Filter...
finde es immer wieder klasse wie Du dich hier in den Support einbringst...
Also, ich habe es das jetzt zum Laufen gebracht. Der Pfad für die Templates ist von Smarty schon vorgegeben, daraus resultiert folgend Aufruf:
Code: Select all
{csv template="geb.tp" file="geb.csv" first="0"}
Re: Klassiker: Geburtstagsscript
Ich vermute mal, dass du das Standard-Template aus der Anleitung verwendest. Bin zwar kein Coder, aber IMHO musst du nur die Abfrage-Parameter erweitern, etwa so
Code: Select all
{if $csvdata[i][2] neq "a.A" and $csvdata[i][2] neq "a.A." and $csvdata[i][2]|date_format:"%d.%m.%Y" eq $csvtoday}
Re: Klassiker: Geburtstagsscript
Ich leider auch nicht....Kennst Du spontan ein gutes Smarty Forum wo ich das Problem darstellen könnte, oder kann ich das auch hier im englischen Forum probieren ?cyberman wrote: ... Bin zwar kein Coder, aber IMHO musst du nur die ..
Dein Ansatz ähnelt sehr meinem, aber beideführen nicht zum Erfolg

Re: Klassiker: Geburtstagsscript
Ich hab mir gerade noch mal den Source angesehen und konnte nichts dazu entdecken, dass $csvtoday an Smarty weitergegeben wird ... werd gleich mal nachfragen.
Re: Klassiker: Geburtstagsscript
Wie sah denn deine Variante aus?Darien wrote: Dein Ansatz ähnelt sehr meinem
Re: Klassiker: Geburtstagsscript
Statt $csvtoday hatte ich smarty.now gedacht, aber ich denke der Ansatz stimmt nicht.
Mein Template sieht im Moment ganz simpel aus.
Es werden dann alle Namen und Geburtsdaten aufgelistet:
Name 1 | 01.01.1980
Name 2 | 05.01.1980
etc...
Das Problem ist der Filter, denn der darf ja nicht mit Heute vergleichen, weil ja heute keiner in meiner Liste geboren ist. Er darf somit nur den Tag und den Monat des Geburstages vergleiche und nur diese ausgeben....
Tricky...
Mein Template sieht im Moment ganz simpel aus.
Code: Select all
{section loop=$csvdata name="i"}
<p>{$csvdata[i][0]} | {$csvdata[i][1]}</p>
{/section}
Name 1 | 01.01.1980
Name 2 | 05.01.1980
etc...
Das Problem ist der Filter, denn der darf ja nicht mit Heute vergleichen, weil ja heute keiner in meiner Liste geboren ist. Er darf somit nur den Tag und den Monat des Geburstages vergleiche und nur diese ausgeben....
Tricky...
Last edited by Darien on Fri Dec 08, 2006 3:26 pm, edited 1 time in total.
Re: Klassiker: Geburtstagsscript
Tja, da hat der Coder wohl rechtDa das zur Datenaufbereitung gehört und im Template eigentlich nichts zu suchen hat, solltest Du das Sortieren in der PHP-Datei machen, bevor das Array an Smarty übergeben wird.

Re: Klassiker: Geburtstagsscript
So, ich habe das Problem "fast" gelöst....
Habe eine Tabelle in meine CMS-DB angelegt mit zwei Spalten: "Date" und "Name".
Mittels folgender php-Datei habe ich die heutigen Geburtstagskinder aussortiert:
Habe diese Anweisung als benutzerdefinierten Tag angelegt aber er zeigt mir kein Ergebnis, obwohl die php-Datei funktioniert...
Kann ich eventuell per benutzerdefinierten Tag keine Datenbank öffnen,o.ä.?
Habe eine Tabelle in meine CMS-DB angelegt mit zwei Spalten: "Date" und "Name".
Mittels folgender php-Datei habe ich die heutigen Geburtstagskinder aussortiert:
Code: Select all
Heute haben Geburtstag:
<?php
$db= mysql_connect("localhost","xxxx","xxxx")
or die ("Keine Verbindung moeglich");
mysql_select_db("xxxx")
or die ("Die Datenbank existiert nicht");
$tag = date (d);
$sql = 'SELECT name, DAYOFMONTH( `date` )'
. ' FROM `gebs`'
. ' WHERE DAYOFMONTH( `date` ) = DATE_FORMAT( NOW( ) , \'%e\' )'
. ' AND MONTH( `date` ) = MONTH( NOW( ) )'
. ' ORDER BY `date` ASC'
. ' LIMIT 0 , 30';
$result = mysql_query($sql,$db);
$num_rows = mysql_num_rows($result);
while($line=mysql_fetch_assoc($result))
{
echo $line['date']. "<br>". $line['name'];
}
echo "<br>". "$num_rows Geburtstagskinder\n";
?>
Kann ich eventuell per benutzerdefinierten Tag keine Datenbank öffnen,o.ä.?