Hallo Sander,
Hier der neue thread....
Der alte war das...
http://forum.baseportal.de/baseportal/baseportal/forum&wcheck=1&range=150,150&Pos=12125
hab das so gemacht und das wird auch fehlerfrei abgearbeitet.
<perl>
$now=datum("jetzt",'JahrMonat0Tag0');
$content=get "http://admin.blabla.de/logfiles/$now.csv";
@lines=split/\n/,$content; ## datensätze aufdröseln
# wenn erste zeile feldnamen sind, kommentar davor entfernen
foreach $ds (@lines){
@values=split/;/,@ds; ## einzelne werte des ds aufdröseln
$Karten=<<EOF;
<a href="http://topevents24.cc/shop/default.asp?id=3641&id2=&usid=691104901021&cust=&log=login&agid=&key=&mode=shop&shopid=$SHOPID&title=$TITEL&descr=$BESCHREIBUNG&place=$ORT&venue=$SPIELSTAETTE" target="_blank">
<img border="0" src="http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif" width="32" height="16"></a>
EOF
put ["DATUM",$values[0],"TITEL",$values[1],"BESCHREIBUNG",$values[2],"ORT",$values[2],"SPIELSTAETTE",$values[2],"PROV",$values[2],"KAT",$values[2],"SHOPID",$values[2]],"topevents"; # achtung $values beginnt bei 0
}
</perl>
Ich weis nicht ob das so richtig ist....
In die Datenbank wird auch was geschrieben.
Und zwar 59 Datensätze mit dem Heutigen Datum.
Die anderen Felder sind leer.
Vom Heutigen Datum existiert aber noch gar keine Datei..
Wir müssten entweder immer die aktuellste oder zumindest Heute-1 nehmen.
Kannst Du bitte noch mal drüber schauen?
Grüße
Reiner
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 20.Dezember.2005, 22:34.
Re: automatischer CSV Import
Antworten
Hallo Sander,
gerade Gestern ist für meine Fälle besser...
Hab das jetzt so eingebaut:
<perl>
$now=datum("-1",'JahrMonat0Tag0');
$content=get "http://blabla.de/logfiles/$now.csv";
@lines=split/\n/,$content; ## datensätze aufdröseln
# wenn erste zeile feldnamen sind, kommentar davor entfernen
<perl>
$now=datum("-1",'JahrMonat0Tag0');
$content=get "http://admin.topevents24.cc/logfiles/$now.csv";
@lines=split/\n/,$content; ## datensätze aufdröseln
# wenn erste zeile feldnamen sind, kommentar davor entfernen
foreach $ds (@lines){
@values=split/;/,@ds; ## einzelne werte des ds aufdröseln
$Karten=<<EOF;
<a href="http://topevents24.cc/shop/default.asp?id=3641&id2=&usid=691104901021&cust=&log=login&agid=&key=&mode=shop&shopid=$SHOPID&title=$TITEL&descr=$BESCHREIBUNG&place=$ORT&venue=$SPIELSTAETTE" target="_blank">
<img border="0" src="http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif" width="32" height="16"></a>
EOF
put ["DATUM",$values[0],"TITEL",$values[1],"BESCHREIBUNG",$values[2],"ORT",$values[2],"SPIELSTAETTE",$values[2],"PROV",$values[2],"KAT",$values[2],"SHOPID",$values[2]],"topevents"; # achtung $values beginnt bei 0
}
</perl>
foreach $ds (@lines){
@values=split/;/,@ds; ## einzelne werte des ds aufdröseln
$Karten=<<EOF;
<a href="http://topevents24.cc/shop/default.asp?id=3641&id2=&usid=691104901021&cust=&log=login&agid=&key=&mode=shop&shopid=$SHOPID&title=$TITEL&descr=$BESCHREIBUNG&place=$ORT&venue=$SPIELSTAETTE" target="_blank">
<img border="0" src="http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif" width="32" height="16"></a>
EOF
put ["DATUM",$values[0],"TITEL",$values[1],"BESCHREIBUNG",$values[2],"ORT",$values[2],"SPIELSTAETTE",$values[2],"PROV",$values[2],"KAT",$values[2],"SHOPID",$values[2]],"topevents"; # achtung $values beginnt bei 0
}
</perl>
In meiner CSV Datei sind aber nur 2 Einträge vorhanden.
In die Baseportal Datenbank wurden allerdings 59 Datensätzen übernommen.
Und diese auch nur mit dem Feld Datum gefüllt.
Und das Datum ist trotz $now=datum("-1" von Heute...
Da hab ich doch bestimmt was mit der Felderzuordnung im Script durcheinander gebracht oder?
Viele Grüße
Reiner
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 21.Dezember.2005, 11:07.
Re: automatischer CSV Import
zeig mal ein ausschnitt aus dem csv (ersten 3 zeilen)
Antworten
DATUM;TITEL;BESCHREIBUNG;ORT;SPIELSTÄTTE;PROV;KAT;SHOPID
25.05.06;Formel-1 GP von Monaco;Event-Reise bis 29.05.06;Monte Carlo;Stadtkurs;2;7;4080
08.09.06;Formel-1 GP von Italien;Event-Reise bis 11.09.06;Monza;Autodrome Nazionale;2;7;138
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 21.Dezember.2005, 11:27.
Re: automatischer CSV Import
Antworten
Dann bekomm ich diese Meldung
http error 404
Datei nicht gefunden – File Not Found
Die von Ihnen aufgerufene Seite existiert nicht. Bitte überprüfen Sie Ihre Eingabe. Möglichweise wurde die Seite auch umbenannt oder entfernt.
Sorry, there is no web page matching your request. It is possible you typed the address incorrectly, or that the page no longer exists.
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 21.Dezember.2005, 13:29.
Re: automatischer CSV Import
Antworten
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 21.Dezember.2005, 14:57.
Re: automatischer CSV Import
Fehler gefunden
$now=datum("-1",'Jahr Monat0 Tag0');
$now=~s/ //g;
$content=get "http://blabla.de/logfiles/$now.csv";
nun sollte der richtige content kommen.
zum csv und den values:
$Karten=<<EOF;
<a href="http://topevents24.cc/shop/default.asp?id=3641&id2=&usid=691104901021&cust=&log=login&agid=&key=&mode=shop&shopid=$value[7]&title=$value[1]&descr=$value[2]&place=$value[3]&venue=$value[4]" target="_blank">
<img border="0" src="http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif" width="32" height="16"></a>
EOF
put ["DATUM",$values[0],"TITEL",$values[1],"BESCHREIBUNG",$values[2],"ORT",$values[3],"SPIELSTAETTE",$values[4],"PROV",$values[5],"KAT",$values[6],"SHOPID",$values[7]],"topevents"; # achtung $values beginnt bei 0
Antworten
Das ist der gesammte Code:
<perl>
$now=datum("-1",'Jahr Monat0 Tag0');
$now=~s/ //g;
$content=get "http://blabla.de/logfiles/$now.csv";
@lines=split/\n/,$content; ## datensätze aufdröseln
# wenn erste zeile feldnamen sind, kommentar davor entfernen
foreach $ds (@lines){
$Karten=<<EOF;
<a href="http://topevents24.cc/shop/default.asp?id=3641&id2=&usid=691104901021&cust=&log=login&agid=&key=&mode=shop&shopid=$value[7]&title=$value[1]&descr=$value[2]&place=$value[3]&venue=$value[4]" target="_blank">
<img border="0" src="http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif" width="32" height="16"></a>
EOF
put ["DATUM",$values[0],"TITEL",$values[1],"BESCHREIBUNG",$values[2],"ORT",$values[3],"SPIELSTAETTE",$values[4],"PROV",$values[5],"KAT",$values[6],"SHOPID",$values[7]],"topevents"; # achtung $values beginnt bei 0
}
Starte ich das Template werden 611 Datensätze ohne Inhalt angelegt.
Datum ist auch nicht dabei..
Meine Datenbank "topevents" hat folgende Felder
Feld Sortierung Typ Parameter
1 DATUM Text Datum Eingabe=Tag0.Monat0.Jahr, Ausgabe=Tag.Monatname.Jahr, Zeitpunkt=Nutzereingabe
2 TITEL Text text
3 BESCHREIBUNG Text text
4 ORT Text text
5 SPIELSTAETTE Text text
6 PROV Text text
7 KAT Text text
8 SHOPID --- text
9 Karten Text text
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 21.Dezember.2005, 17:13.
Re: automatischer CSV Import
nochmal einen linkcheck und contentcheck machen
Antworten
Also wenn ich out "http://blabla.de/logfiles/$now.csv"; eingebe bekomme ich diese Meldung:
http://blabla.de/logfiles/20051220.csv
Bei out $content; sind es mit Überschrift 612 Datensätze die so angezeigt werden.
DATUM;TITEL;BESCHREIBUNG;ORT;SPIELSTÄTTE;PROV;KAT;SHOPID 21.02.06;Madrid - Arsenal;Championsleague;Madrid;Santiago Bernabeu;5;12;195 21.02.06;Barcelona - Chelsea;Championsleague;Barcelona;Nou Camp;5;12;58 31.12.05;Abbafever;Beginn 18:00 Uhr;Hildesheim;Sporthalle Pappelallee Hildesheim;1;1;196 06.08.06;Aida;Beginn 20:00 Uhr;Lübben Spreewald;Schlossinsel Lübben;1;1;197 07.04.06;Best Of Musical 2006 / Frankfurt;Beginn 20:00 Uhr;Frankfurt;Festhalle Frankfurt;1;1;205 08.04.06;Best Of Musical 2006 / Frankfurt;Beginn 15:30 Uhr;Frankfurt;Festhalle Frankfurt;1;1;219 08.04.06;Best Of Musical 2006 / Frankfurt;Beginn 20:00 Uhr;Frankfurt;Festhalle Frankfurt;1;1;254
Natürlich mehr...
So wie es ausschaut wird die passent Datei schon abgerufen..
Antworten
Beitrag von hempelr (1976 Beiträge) am Donnerstag, 22.Dezember.2005, 10:28.
Re: automatischer CSV Import
Der Laufvariablenname im foreach und die Wertzuweisung in den Links stimmt nicht (foreach $ds und die Liste heisst aber @lines)
wenn du das richtigstellst gehts auch ;-)
Antworten
Beitrag von hempelr (1976 Beiträge) am Donnerstag, 22.Dezember.2005, 10:38.
zu schnell abgeschickt - sorry - Re: automatischer CSV Import
sorry, da war ich noch nicht fertig mit schreiben...
Du holst dir die csv-Datensätze zeilenweise in die Liste, um aber die Werte dann auch Feldweise hinzubekommen musst du diese Zeilen jeweils ja nochmal aufdröseln. Hier dann das Split am Semikolon (ist so aus deinem Datendump ersichtlich)
Also in etwa so:
---schnipp
foreach $ds (@lines){
my @values = split/\n/,$ds; ## aktuellen datensat in Liste einlesen, damit die Werte über ihren Index ausgelesen werden können
$Karten=<<EOF;
<a href="http://topevents24.cc/shop/default.asp?id=3641&id2=&usid=691104901021&cust=&log=login&agid=&key=&mode=shop&shopid=$value[7]&title=$value[1]&descr=$value[2]&place=$value[3]&venue=$value[4]" target="_blank">
<img border="0" src="http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif" width="32" height="16"></a>
EOF
put ["DATUM",$values[0],"TITEL",$values[1],"BESCHREIBUNG",$values[2],"ORT",$values[3],"SPIELSTAETTE",$values[4],"PROV",$values[5],"KAT",$values[6],"SHOPID",$values[7]],"topevents"; # achtung $values beginnt bei 0
}
---schnapp
Man könnte auch einen Hash bauen und dann die Werte direkt über den Hash-Key abspeichern (das wieder in ner Schleife und mit ner Kombination von put und mod), dadurch ließe sich das Script gleich als universelles Importscript umbauen, aber das wolltest du ja eigentlich nicht...
Hoffe, es hilft dir jetzt weiter...
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 11:23.
Re: zu schnell abgeschickt - sorry - Re: automatischer CSV Import
genau, jemand hat das split geklaut ;)
Antworten
Beitrag von Reiner (306 Beiträge) am Donnerstag, 22.Dezember.2005, 12:38. WWW: tickets-und-eintrittskarten.de
Re: zu schnell abgeschickt - sorry - Re: automatischer CSV Import
So isses aktuell bei mir drinn:
<perl>
$now=datum("-1",'Jahr Monat0 Tag0');
$now=~s/ //g;
$content=get "http://blabla.de/logfiles/$now.csv";
@lines=split/\n/,$content; ## datensätze aufdröseln
# wenn erste zeile feldnamen sind, kommentar davor entfernen
shift @lines;
foreach $ds (@lines){
my @values = split/\n/,$ds; ## aktuellen datensat in Liste einlesen, damit die Werte über ihren Index ausgelesen werden können
$Karten=<<EOF;
<a href="http://topevents24.cc/shop/default.asp?id=3641&id2=&usid=691104901021&cust=&log=login&agid=&key=&mode=shop&shopid=$value[7]&title=$value[1]&descr=$value[2]&place=$value[3]&venue=$value[4]" target="_blank">
<img border="0" src="http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif" width="32" height="16"></a>
EOF
put ["DATUM",$values[0],"TITEL",$values[1],"BESCHREIBUNG",$values[2],"ORT",$values[3],"SPIELSTAETTE",$values[4],"PROV",$values[5],"KAT",$values[6],"SHOPID",$values[7]],"topevents"; # achtung $values beginnt bei 0
}
</perl>
Leider wird jetzt nur das Feld "DATUM" mit Daten gefüllt.
Wie ist es eigentlich wenn einmal ein Tag fehlt?
Bekomme ich dann lauter leere Datensätze? (soviele wie die Fehlermeldung Zeilen hat?)
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 13:12.
Re: zu schnell abgeschickt - sorry - Re: automatischer CSV Import
my @values = split/\n/,$ds;
muß heißen
my @values = split/;/,$ds;
Antworten
Vielen Dank :)
Klappt fast alles.
Nur der Link wird jetzt nicht mehr in das Feld "Karten" geschrieben.
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 15:17.
Re: Klappt fast
na des muß jetzt natürlich noch ins put dazu.
Wie bekommst du bestimmt selbst raus
Antworten
Ju Hu :)
Ich habs..
Es klappt alles.
Jetzt kommts aber dicke..
Was ist wenn einmal kein csv zur Verfügung steht?
Dann werden leere Datensätze geschrieben.
Kann man das verhindern?
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 16:31.
Re: Klappt fast
Antworten
Hallo Sander,
Es klappt :)))
Und wie mach ich das jetzt mit dem Cronjob?
Das ist dann die letzte Hürde :-)
Viele Grüße
Reiner
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 17:54.
Re: Klappt :) -- und wie Cronjob?
welche uhrzeit? täglich einmal?
Antworten
Ja,
Täglich einmal.
Dabei spielt die Zeit keine Rolle, da ich die csv von vorgestern hole.
Kann das ganze über confixx einstellen.
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 18:17.
Re: Klappt :) -- und wie Cronjob?
confixx: in dem mir zugänglichen nicht
ansonsten auf der konsole des servers mit ssh einloggen
dann tippen
crontab -e
danach ein
i
unten steht install
dann
lynx --dump http://pfad zu deinem script >> /dev/null 2>&1
eingeben, danach
ESC
drücken und
:x
das wars, der cronjob ist installiert
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 18:20.
Re: Klappt :) -- und wie Cronjob?
ups, was vergessen
bei lynx --dump http://pfad zu deinem script >> /dev/null 2>&1
muß noch die uhrzeit hin
0 4 * * * lynx --dump http://pfad zu deinem script >> /dev/null 2>&1
damit um 4 uhr das script läuft.
Antworten
Auf den Server selbst komm ich nicht-
Aber wie gesagt per Confixx
Da steht:
----------------------
Minute
Stunde
Tag im Monat
Monat
Wochentag
Befehl
----------------------
Bedeutet das ..
Minute :30
Stunde :20
Tag im Monat :*
Monat :*
Wochentag :*
Befehl :lynx --dump http://pfad zu deinem script
wenn das Script täglich um 20:30 starten soll?
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Dezember.2005, 23:01.
Re: Klappt :) -- und wie Cronjob?
Antworten
Hallo Sander,
Eben ist der Cronjob durchgelaufen.
Hat prima funktioniert.
Vielen Dank an allen die mir geholfen haben.
Ein schönes Weihnachtsfest und viele Geschenke..
Ich bin ja schon beschert worden. ;)
Grüße
Reiner
Antworten