Antworten
Beitrag von Marco (840 Beiträge) am Dienstag, 13.Dezember.2005, 07:44.
Re: Link über Feldinhalte erstellen
Hallo Rainer,
ich hoffe ich habe Dich richtig verstanden:
Wenn der Link nach der Anlage des Datensatzes "endgültig" ist, kannst Du es ja in der Datenbank mitführen.
Mein Vorschlag ist, erweitere Deine Datenbank um ein Feld "Link" (o.ä.) und Fülle es beim speichern automatisch.
if (%_put)
{
$_put{Link} = "http://topevents24.cc/shop/default.asp?id=3641&shopid".$_put{shopid).&title=".$_put{title};
}
Im "do_all" solltest Du dann Feld "Link" mit formfield=-Link herausnehmen, damit dieses Feld nicht manuell bearbeitet werden kann, sondern nur automatisch gesetzt wird.
Du mußt dann nur noch mit einem Script Deine bestehden Datensätze migieren. Bei der Anzahl von über 40.000 Sätzen solltest Du das vielleicht in kleineren "Häppchen" tun. z.B. so:
get "Id==*", "DeineDB", "DeinHash";
while(get_next("DeinHash"))
{
$Link="http://topevents24.cc/shop/default.asp?id=3641&shopid".$shopid."&title=".$title;
mod "Id==$Id", ["Link", "$Link"], "DeineDB";
out "Kontrollausgabe! Eintrag $Id geändert<br>";
}
Eine andere Möglichkeit ist, dass Du mir eine eigene Ausgabeseite bastelst. Dann kannst du Dir den Link auch "on-the-fly" zusammenbauen.
Marco
Antworten
Hallo Marco,
Danke für Deine Hilfe.
Ich schaff das einfach nicht.
So wie Du das geschrieben hast, so mein ich das auch...
Ich habe nicht ein Feld "Link" sondern "Karten" gemacht.
Da soll dann der Link rein.
Jetzt zu meinem Problem
----------------------------------------------------------
if (%_put)
{
$_put{Link} = "http://topevents24.cc/shop/default.asp?id=3641&shopid".$_put{shopid).&title=".$_put{title};
}
----------------------------------------------------------
Nur wo kommt das hinein?
Etwa in das neue Feld "Karten" als Vorgabe?
Und wo kommt der Rest hin?
----------------------------------------------------------
get "Id==*", "topevents ", "DeinHash";
while(get_next("DeinHash"))
{
$Link="http://topevents24.cc/shop/default.asp?id=3641&shopid".$shopid."&title=".$title;
mod "Id==$Id", ["Link", "$Link"], "DeineDB";
out "Kontrollausgabe! Eintrag $Id geändert<br>";
}
----------------------------------------------------------
In ein neues Template?
Und was ist mit "DeinHash" gemeint? (Ich hasche doch nicht..) ;)
Oder muss das in das bestehende Template?
Das ist jetzt noch einfach und ohne großartige Formatierung.
Darum Poste ich es mal komplett..
----------------------------------------------------------
<html><head><title>Topevents</title>
<perl>
del "DATUM<jetzt", "topevents";
<style>
body { font-family:Arial,Helvetica,sans-serif; background-color:#FFFFFF; font-size:10px; color:#000000; }
.Titel { font-size:20px; color:#000000; }
.Text { font-family:Arial,Helvetica,sans-serif; font-size:10px; color:#000000; }
.Einleitung { font-family:Arial,Helvetica,sans-serif; font-size:10px; color:#000000; }
</head>
<body bgcolor=ffffff>
<font face=arial,helvetica>
<font size=1><span class="Einleitung"></span></font>
<h3><span class="Titel"></span></h3>
<do action=all localparams=+ db=topevents range^=0,20 searchfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE listfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE,SHOPID,Karten allfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE,SHOPID,Karten formfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE showamount=all,sel selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top border=0 spacing=1 padding=2 gridcolor=B0B0B0 datasize=2 datacolor=000000 databack=F0F0F0 headcolor=000000 headback=E0E0E0 textcolor=000000 listtype=list language=de detail=link search=link input=link>
<p><font face=arial,helvetica size=2><span class="Text"></span>
<p><font size=1><span class="Text" name="EMail"></span></font>
</body></html>
----------------------------------------------------------
Ist vielleicht ein bischen viel aber ich blick absolut nicht mehr durch..
Ach ja,
Habe das hier
----------------------------------------------------------
if (%_put)
{
$_put{Link} = "http://topevents24.cc/shop/default.asp?id=3641&shopid".$_put{shopid).&title=".$_put{title};
}
----------------------------------------------------------
in das Feld Karten eingegeben.
Das hat dann ca. 15 min gedauert. (Darum hast Du wahrscheinlich häppchenweise gemeint)
Und dabei hat es dann Fehlermeldungen gehagelt.
Auch das entfernen hat so lange gedauert.
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 14.Dezember.2005, 19:22.
Re: Link über Feldinhalte erstellen
Antworten
Muss ich dann eine Temporäre Datei anlegen?
Oder geht das von selbst?
Wenn ja wo lege ich diese Datei an (oder Verzeichnis)
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 14.Dezember.2005, 21:19.
Re: Link über Feldinhalte erstellen
Muss ich dann eine Temporäre Datei anlegen?
Oder geht das von selbst?
Wenn ja wo lege ich diese Datei an (oder Verzeichnis)
Das war sinnbildlich als Erläuterung gesprochen;-))
Da brauchst Du nichts "anlegen".
Einfach nur so im Template einbauen, das geht "von selbst";-))
Gruß
Claus
Antworten
Beitrag von Marco (840 Beiträge) am Mittwoch, 14.Dezember.2005, 21:22.
Re: Link über Feldinhalte erstellen
Hallo Reiner,
der Block kann in Dein bestehendes Template, z.B.:
<perl>
del "DATUM<jetzt", "topevents";
if (%_put)
{
$_put{Link} = "http://topevents24.cc/shop/default.asp?id=3641&shopid".$_put{shopid).&title=".$_put{title};
}
Die Migration der alten Daten muss in einem anderen Templete erfolgen. Du legst es an und führst es einmal aus.
DeineDB musst Du durch den entsprechenden Namen Deiner Datenbank ersetzen, "DeinHash" ist nur der Name für den Hash, in dem Du das get-Ergebnis zwischenspeicherst. Der Name des Hashes ist beliebig.
<perl>
get "Id==*", "DeineDB", "DeinHash";
while(get_next("DeinHash"))
{
$Link="http://topevents24.cc/shop/default.asp?id=3641&shopid".$shopid."&title=".$title;
mod "Id==$Id", ["Link", "$Link"], "DeineDB";
out "Kontrollausgabe! Eintrag $Id geändert<br>";
}
Antworten
Antworten
Beitrag von Marco (840 Beiträge) am Donnerstag, 15.Dezember.2005, 06:58.
Re: Link über Feldinhalte erstellen
Antworten
Danke zu morgendlicher Stunde ;-)
Muss ich eigentlich shopid groß schreiben, da bei mir das Feld SHOPID ist?
Grüße
Reiner
Antworten
Beitrag von Reiner (4 Beiträge) am Donnerstag, 15.Dezember.2005, 12:42. WWW: tickets-und-eintrittskarten.de
Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Hi
Habe den Fehler gefunden
Bei $_put{shopid) ist das Klammerende nicht geschwungen gewesen..
Habe jetzt in meinen Template das so eingebaut..
http://www.daten-banken.de/cgi-bin/baseportal.pl?htx=/termine/topevents
<html><head><title>Dein Event</title>
<perl>
del "DATUM<jetzt", "topevents";
if (%_put)
{
$_put{Karten} = "http://topevents24.cc/shop/default.asp?id=3641&SHOPID".$_put{SHOPID}."&TITLE=".$_put{TITLE};
}
<style>
body { font-family:Arial,Helvetica,sans-serif; background-color:#FFFFFF; font-size:10px; color:#000000; }
.Titel { font-size:20px; color:#000000; }
.Text { font-family:Arial,Helvetica,sans-serif; font-size:10px; color:#000000; }
.Einleitung { font-family:Arial,Helvetica,sans-serif; font-size:10px; color:#000000; }
</head>
<body bgcolor=ffffff>
<font face=arial,helvetica>
<font size=1><span class="Einleitung"></span></font>
<h3><span class="Titel"></span></h3>
<do action=all localparams=+ db=topevents range^=0,20 searchfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE listfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE,SHOPID,Karten allfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE,SHOPID,Karten formfields=DATUM,TITEL,BESCHREIBUNG,ORT,SPIELSTÄTTE showamount=all,sel selectbrowse=top buttonbrowse=top pagebrowse=top indexbrowse=top border=0 spacing=1 padding=2 gridcolor=B0B0B0 datasize=2 datacolor=000000 databack=F0F0F0 headcolor=000000 headback=E0E0E0 textcolor=000000 listtype=list language=de detail=link search=link input=link>
<p><font face=arial,helvetica size=2><span class="Text"></span>
<p><font size=1><span class="Text" name="EMail"></span></font>
</body></html>
Dann habe ich noch ein Template Namens machen im gleichen Ordner
http://www.daten-banken.de/cgi-bin/baseportal.pl?htx=/termine/machen
<perl>
get "Id==*", "topevents", "DeinHash";
while(get_next("DeinHash"))
{
$_put{Karten} = "http://topevents24.cc/shop/default.asp?id=3641&SHOPID".$_put{SHOPID}."&TITLE=".$_put{TITLE};
mod "Id==$Id", ["Karten", "$Karten"], "topevents";
out "Kontrollausgabe! Eintrag $Id geändert<br>";
}
Wenn ich das Template machen ausführe bekomme ich artig diese Meldung
Kontrollausgabe! Eintrag 0 geändert
Kontrollausgabe! Eintrag 1 geändert
Kontrollausgabe! Eintrag 2 geändert
Kontrollausgabe! Eintrag 3 geändert
Kontrollausgabe! Eintrag 4 geändert
Kontrollausgabe! Eintrag 5 geändert
Kontrollausgabe! Eintrag 6 geändert
usw.
Leider ist aber im Feld Karten kein Eintrag...
Wie bekomme ich jetzt Daten da rein?
Grüße
Reiner
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 15.Dezember.2005, 13:13.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
in deinem modbefehl belegst du $_put{Karten} wieder neu mit $Karten, $Karten ist aber leer, weil es eben nicht das selbe wie $_put{Karten} ist.
desweiteren stimmt $_put{SHOPID} usw nicht, an die Stelle muß dann $SHOPID
also entweder oder... ;)
Variante 1
get "Id==*", "topevents", "DeinHash";
while(get_next("DeinHash"))
{
$Karten = "http://topevents24.cc/shop/default.asp?id=3641&SHOPID".$SHOPID."&TITLE=".$TITLE;
mod "Id==$Id", ["Karten", $Karten], "topevents";
out "Kontrollausgabe! Eintrag $Id geändert<br>";
oder
get "Id==*", "topevents", "DeinHash";
while(get_next("DeinHash"))
{
$_put{Karten} = "http://topevents24.cc/shop/default.asp?id=3641&SHOPID".$SHOPID."&TITLE=".$TITLE;
mod "Id==$Id", undef, "topevents";
out "Kontrollausgabe! Eintrag $Id geändert<br>";
Antworten
Beitrag von Reiner (4 Beiträge) am Donnerstag, 15.Dezember.2005, 19:28. WWW: tickets-und-eintrittskarten.de/
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Antworten
Beitrag von Marco (840 Beiträge) am Freitag, 16.Dezember.2005, 07:29.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
In Deiner Variable steht $TITLE, das Feld heißt aber TITEL... Warum der Ort leer bleibt kann ich Dir leider nicht sagen.
Ich bin davon ausgegangen, dass Du die Datensätze per bp-Formular einträgst und nicht per csv...
Nun gut, das bedeutet für Dich einen zusätzlichen Schritt im Datenimport:
Nachdem Du Deine CSV-Datei importiert hast, mußt Du Dein Template starten, das Dir den Link erzeugt. Die Abfrage kannst Du dann aber modifizieren, da Du das Script ja nur für die neuen Einträge laufen lassen musst. Alle, die sich mit Dir einen Server teilen, sind Dir auch dankbar, wenn Du nur 300 und nicht 30.000 Einträge änderst ;-)
Du musst dafür nur die get-Abfrage anpassen:
anstelle von get "Id==*", "topevents", "DeinHash"; nimmst Du
get ["KARTEN", "eq", ""], "topevents", "DeinHash";
Ganz zu Beginn musst Du das Script natürlich einmal für alle Datensätze laufen lassen. Mein Vorschlag ist, arbeite die Datenbank in Häppchen ab (mit "range"), sonst läufst Du ggf. in einen Timeout.
Marco
Antworten
Beitrag von Reiner (306 Beiträge) am Freitag, 16.Dezember.2005, 08:22. WWW: tickets-und-eintrittskarten.de
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Ahh Danke
Ist also nicht mal so groß der Fehler...
Habs schon mal angetestet alle Datensätze durchlaufen zu lassen.
Hat geklappt..
Muss hier
get ["KARTEN", "eq", ""], "topevents", "DeinHash";
noch irgendwie rein wieviele Datensätze das sind oder werden dann nur die ohne Eintrag gefüllt?
Antworten
Beitrag von Marco (840 Beiträge) am Freitag, 16.Dezember.2005, 13:52.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
In diesem Fall werden nur die Datesätze gefüllt, die keinen Eintrag im Feld "Karten" haben.
Das Feld "Karten" musst Du dafür als "sortiert" anlegen, sonst gibt es einen Fehler.
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 16.Dezember.2005, 14:12.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
get ["KARTEN", "eq", ""], "topevents", "DeinHash";
das ist falsch, es muß heißen
get ["KARTEN", "==", ""], "topevents", "DeinHash";
Antworten
Beitrag von Reiner (4 Beiträge) am Freitag, 16.Dezember.2005, 15:24. WWW: tickets-und-eintrittskarten.de
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Super das klappt prima.
Vielen Dank an Euch beiden..
Jetzt habe ich nur noch ein Problem mit dem füllen des Feldes "Karten"
Jetzt wird ein Linkfeld gefüllt.
Ich möchte gerne ein Textfeld mit HTML Code füllen.
Wie kann ich es machen das dieser Code
<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>
in das Textfeld geschrieben wird?
Normal mit html kein Problem aber mit Perl weis ich nicht wo die Kommas usw. hinkommen bzw wie die Reihenfolge ausehen muss.
Es soll also das Bild http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif verlinkt werden.
Der biherige Code ist
<perl>
get ["Karten", "==", ""], "topevents", "DeinHash";
while(get_next("DeinHash"))
{
$Karten = "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;
mod "Id==$Id", ["Karten", $Karten], "topevents";
out "Kontrollausgabe! Eintrag $Id geändert<br>";
</perl>
Könnt Ihr mir da bitte auch noch mal helfen?
Antworten
Beitrag von horstees (229 Beiträge) am Freitag, 16.Dezember.2005, 16:17.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Hallo,
ich vermute du willst es so:
$Karten = "....usw";
# Alle notwendigen Anführungszeichen im HTML-Code maskieren:
$inhalt_textfeld = "<a href=$Karten target=\"_blank\"><img border=0 src=\"http://www.daten-banken.de/infos-ueber-tickets-und-eintrittskarten.gif\" width=32 height=16></a>";
mod "Id==$Id", ["Name des Textfeldes", $inhalt_textfeld], "topevents";
ende while
Bei "Name des Textfeldes" muss natürlich der Name deines Textfeldes eingefügt werden.
Solltest du vorher das Linkfeld namens "Karten" in ein "textarea" umgeändert haben, steht dann da also:
mod "Id==$Id", ["Karten", $inhalt_textfeld], "topevents";
Antworten
Beitrag von Reiner (306 Beiträge) am Freitag, 16.Dezember.2005, 16:26. WWW: tickets-und-eintrittskarten.de
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Das ursprüngliche Linkfeld "Karten" will ich in ein Textfeld namens "Karten" ändern.
Also nur ein Feld füllen um das Bild mit dem Link zu bekommen
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 16.Dezember.2005, 16:31.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Antworten
Beitrag von Reiner (306 Beiträge) am Freitag, 16.Dezember.2005, 16:57. WWW: tickets-und-eintrittskarten.de
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Super...
Danke an alle die mir geholfen haben.
Nur noch eine Frage am Rande
Besteht die Möglichkeit diese CSV Datei über ein Script auf meinen Webspace in ein bestimmtes Verzeichnis zu downloaden?
Hintergrund der Sache ist dass ich regelmäßig Dateien zum Download von einem Passwortgeschützten Server bekomme die auf meinem Webspace bekommen muss. Allerdings brauche ich da nur die neueste.
Auf dem Server sammeln sich aber die Dateien bis zu einem Monat an.
Die Dateien haben dieses Format 20051114.csv das sich Datumsgemäß ändert.
Im Prinzip müsste das Scipt 1x am Tag prüfen ob eine neue Dateiversion da ist und wenn ja diese zu mir runterladen und dann eben in diese funktionierente DB (Dank Eurer Hilfe :) ) einspielen.
Also ich bin jetzt schon absolut überwältigt.
Ist nur Interessehalber
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 16.Dezember.2005, 17:13.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Antworten
Beitrag von Reiner (306 Beiträge) am Freitag, 16.Dezember.2005, 17:33. WWW: tickets-und-eintrittskarten.de
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Also ich kann bei mir laufen cronjobs.
Das wäre ja genial..
Eine Datenbank die sich selbst aktuell hält.
Jetzt schaut es so aus dass ich die csv datei so wie sie ist importiere und als einzige veränderte Otion angebe "Erste Zeile als Felder interpretieren"
Hier ist der Haken gesetzt.
Dann lasse ich das Script drüberlaufen.
http://www.daten-banken.de/cgi-bin/baseportal.pl?htx=/event/neue
Und dann isses gut.
So müsste ich jeden Tag die Datei einspielen.
Wen ich dann mal nicht da bin kann sich natürlich ganz schön was ansammeln.
Antworten
Beitrag von Reiner (306 Beiträge) am Samstag, 17.Dezember.2005, 07:47. WWW: tickets-und-eintrittskarten.de/
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Kannst Du mir sagen wie das Script aussehen muss oder ist das zu kompliziert und bedarf einen rießigen Programmieraufwand?
Und wie mache ich das mit dem Cronjob?
Grüße
Reiner
Antworten
Beitrag von Sander (8133 Beiträge) am Samstag, 17.Dezember.2005, 11:15.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
bin erst Montag wieder da. Wenn du es noch nicht gelöst hast, erinner mich mal ;)
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 17.Dezember.2005, 22:13.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Du bist bestimmt Boarden, Du gemeiner Hund ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Sonntag, 18.Dezember.2005, 23:08.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
ne, in berlin, habsch dir doch erzählt ;)
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Sonntag, 18.Dezember.2005, 23:36.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Ah, stimmt, ganz vergessen ;-)
Antworten
Beitrag von Reiner (306 Beiträge) am Montag, 19.Dezember.2005, 06:34. WWW: tickets-und-eintrittskarten.de/
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 19.Dezember.2005, 22:32.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
probiers erst mal, den cronjob kann man dann immer noch machen.
am besten mal nen neuen thread machen, der is schon zu lang ;)
Antworten
Beitrag von Reiner (306 Beiträge) am Montag, 19.Dezember.2005, 18:23. WWW: tickets-und-eintrittskarten.de/
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
Hallo Sander,
Es freut mich dass Du Dich meiner annimmst :-)
Danke für das Script.
Und wo bau ich das ein?
Und was mach ich mit dem Cronjob?
Muss ich da einen Befehl eingeben?
Hab das noch nie gemacht..
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 19.Dezember.2005, 16:55.
Re: Fehler Gefunden klappt aber nicht: Link über Feldinhalte erstellen
$now=datum("jetzt",'JahrMonat0Tag0');
$content=get "http://pfadzurcsv/$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
### hier müßte noch dein Linkzusammenbau geschehen...
$karten=".....$value[irgendwas]&..."; #nur als beispiel
put ["Feld1",$values[0],"Feld2",$values[1],"Feld3",$values[2]],"dbname"; # achtung $values beginnt bei 0
}
Antworten