Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 17:41.
Loop innerhalb von Perl
Hallo,
diesmal habe ich das Problem, dass ich irgendwie mit Loop innerhalb von Perl nicht klar komme. Ich bekomme ständig Fehlermeldungen.
Was muss ich da beachten?
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 17:55.
Re: Loop innerhalb von Perl
Antworten
Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 18:25.
Re: Loop innerhalb von Perl
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 18:54.
Re: Loop innerhalb von Perl
<perl>
out <<EOF;
<table border="0" width="100%" cellspacing="1">
<tr>
<td width="100%" bgcolor="#FFCC00" align="center"><font face="Verdana" size="2"><b>User</b></font></td>
</tr>
EOF
get "Rubrik==User sort=Nr","link";
while (get_next("link"))
{
out <<EOF;
<tr><td width="100%" bgcolor="#FFFFFF"><font face="Verdana" size="1"><a href="http://$Link" target="$target">$Name</a></font></td>
</tr>
EOF
}
out "</table>";
</perl>
Sander
Antworten
Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 22:13.
Re: Loop innerhalb von Perl
Super danke, im Prinzip funktioniert es... wieder etwas, was ich in die Tipps-Datenbank stellen kann ;-)
Nur leider ist das Ergebnis in diesem Fall für mich nicht ganz befriedigend.
Und zwar werden in der Variablen "$Link" - wie der Name schon sagt - Links innerhalb der Homepage ausgegeben. Ich will dabei die Navigation über die Datenbank steuern, indem ich zentral neue Links einbaue, ohne jedes mal die einzelnen Webseiten ändern zu müssen. Im Prinzip funktioniert das auch so.
Allerdings enthalten in meinem Beispiel die Links weitere Variablen, die auf andere Datenbanken zurückgreifen.
Beispiel:
http://baseportal.de/cgi-bin/baseportal.pl?htx=/verwitwet/user/register&namerein=$namerein&sid=$sid
Diese Variablen werden aber nicht gefüllt!?!
Gibt es da vielleicht auch eine Lösung?
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 22:27.
Re: Loop innerhalb von Perl
Antworten
Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 22:46.
Re: Loop innerhalb von Perl
Jou, so geht's natürlich. Dass ich da nicht selber draufgekommen bin.
Aber grundsätzlich geht es wohl nicht, dass ich eine Variable mit anspreche. In diesem Fall habe ich nämlich einen Link, in dem auch noch der Username vorkommen soll. Ich meine, dass man das auch weglassen kann. Aber nur Interesse halber. Geht so etwas?
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 23:16.
Re: Loop innerhalb von Perl
wenn es mit den Feldern nicht zu überschneidungen kommt wie zb: aus db 1 wird die Id gebraucht, aus db 2 ein name, dabei wird bei Abfrage der 2ten db die Id der ersten überschrieben weil das Feld genauso heißt.
praktisch könntest du sowas bauen:
get "Id==1","navi"; #Aufruf aus der 1ten db
get "Id==6","user"; #würdest du nun die Id des ersten brauchen, wäre sie mit 6 überschrieben
Lösung:
get "Id==1","navi";
$idgesichert=$_id;
get "Id==6","user";
out "Id aus 1: $idgesichert, Id aus 2: $_id";
Ergebnis:
Id aus 1: 1, Id aus 2: 6
du kannst auch eine andere db mit get in while (get_next())
aufrufen. Nur immer darauf achten, das die Variablen, die du brauchst nicht überschrieben bzw umbenannt werden.
In deinem Beispiel wäre es in etwa so:
get "Rubrik==User sort=Nr","link";
while (get_next("link"))
{
get "User==...","dbname";
out <<EOF;
<tr><td width="100%" bgcolor="#FFFFFF"><font face="Verdana" size="1"><a href="http://$Link&User=$User" target="$target">$Name</a></font></td>
</tr>
EOF
}
out "</table>";
So, ich geh jetzt schlafen.
Sander
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 1.Juni.2001, 02:21.
Re: Loop innerhalb von Perl
Alle Werte aus einer Abfrage werden automatisch im Hash %db gesichert, also:
get "Id==1","navi";
get "Id==6","user";
out "Id aus 1: $navi{Id}[0], Id aus 2: $_id = $user{Id}[0]";
ein eigenes sichern ist nicht notwendig... macht man 2 abfragen auf dieselbe db geht das auch:
get "Id==1","navi","abfrage1";
get "Id==6","navi";
out "Id aus 1: $abfrage1{Id}[0]";
äh, moment mir fällt grade ein, dass das mit %db erst ab der beta geht, oder? weiss es grad selber nich...
Antworten
Beitrag von Oliver (172 Beiträge) am Freitag, 1.Juni.2001, 09:43.
Re: Loop innerhalb von Perl
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 1.Juni.2001, 13:49.
Re: Loop innerhalb von Perl
erklär mal bitte genauer, woher soll der user kommen,
Das ist die Ausgabe "Profil $namerein ändern", wie ist der Quelltext? Und eventuell ein Beispiellink?
Sander
Antworten
Beitrag von Oliver (172 Beiträge) am Freitag, 1.Juni.2001, 19:20.
Re: Loop innerhalb von Perl
Also, in meiner Community kann ich überall den Login-Namen über $namerein auswerfen.
Wenn sich also "Heini" eingeloggt hat, kann da z.B. folgender Begrüßungstext stehen:
"Willkommen $namerein in unserer Community" - was für Heini dann so aussieht:
"Willkommen Heini in unserer Community"
So habe ich mir nun gedacht, wenn ich die Navigationsleiste über bp generieren lasse, könnte ich diese Variable auch bei einem Link einbauen.
Die Datenbank zur Navigationsleiste hat folgende Felder:
Nr, Name, Link, target
entsprechend habe ich die Felder gefüllt z.B. mit:
1, Suche, www.baseportal....htx...search, _self
2, Alles, www.baseportal....htx...Alles, _self
...
6, Profil $namerein ändern, www.baseportal....htx...change, _self
...
D.h. nur bei dem Link Nr. 6 soll der Login-Name erscheinen.
Tut er aber nicht.
Anstelle:
...
> Profil Heini ändern
...
sieht er so aus:
...
> Profil $namerein ändern
...
Der Quelltext sieht so aus, wie du oben vorgeschlagen hast.
Ist das jetzt genauer erklärt?
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Samstag, 2.Juni.2001, 02:54.
Re: Loop innerhalb von Perl
Ne, das geht nicht, weil $namerein als Text und inhalt der Variable $Name gewertet wird.
Sander
Antworten
Beitrag von fb (406 Beiträge) am Sonntag, 3.Juni.2001, 05:17.
Re: Loop innerhalb von Perl
Ich misch mich mla auf die gefahr hin, daß ichs garnicht verstehe, ein :-)
Wenn Du eine Navigation mit hilfe von Perl progst kannst Du den Usernamen übergeben.
Dazu muss aber dann die Navigation beim aufruf jeder Seite die Parameter (variablen) verarbeiten soll neu aufgebaut werden, denn nur so kann die Navigation auch reagieren.
Ein lösungsansatz könnte sein das Du die Navigation als <include> einbaust.
Dann kannst Du auch Var übergeben.
Auf der seite dann etwa so:
...
...
...
<table>
<include src=Navigation&namerein=$namerein>
</table>
...
Datenbankinhalt ausgeben
<perl> oder <loop> oder <do actin=.. > oder was auch immer
...
</html>
Und sowas müsste dann im include (Navigation) template stehen:
<tr><td>
<a href="$Link&namerein=$namerein" target="$target">$Name</a>
</td></tr>
ungefähr Klar?
Auf diese weise hast Du $namerein in allen Templates zur verfügung.
fb
Antworten
Beitrag von Oliver (172 Beiträge) am Sonntag, 3.Juni.2001, 12:13.
Re: Loop innerhalb von Perl
Danke, ich werd's mal ausprobieren.
Allerdings muss ich dabei dann für jeden Navigationsbereich eingene Templates anlegen und diese anpassen, wenn ich den Bereich erweitern muss. Dies wollte ich eigentlich mit der Datenbank umgehen.
Trotzdem, ich werde es mal testen.
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Sonntag, 3.Juni.2001, 14:08.
Re: Loop innerhalb von Perl
Antworten
Beitrag von Oliver (172 Beiträge) am Montag, 4.Juni.2001, 16:57.
Re: Loop innerhalb von Perl
Danke, ich werd's mal ausprobieren.
Oliver ;-)
Antworten