Beitrag von Gert (6 Beiträge) am Mittwoch, 29.Dezember.2004, 15:50.
Tabellenausgabe
Antworten
Beitrag von Peter Pan (1 Beitrag) am Mittwoch, 29.Dezember.2004, 16:17.
Re: Tabellenausgabe
Antworten
Beitrag von Gert (6 Beiträge) am Donnerstag, 30.Dezember.2004, 17:46.
Re: Tabellenausgabe
Habe es mit dem Quelltext hier versucht aber es funktioniert leider nicht. Kann sich das nochmal jemand ansehen bitte, irgendwas scheint nicht zu stimmen. Hab schon etliche Konstellationen ausprobiert aber es führt immer wieder zu Fehlermeldungen...
Antworten
Beitrag von richard (1187 Beiträge) am Donnerstag, 30.Dezember.2004, 17:52. WWW: posaunenchor-rhoden.de
Re: Tabellenausgabe
Was funktioniert nicht?
Wann kommen welche Fehlermeldungen?
Link zu Deiner Seite?
Antworten
Vorneweg mal soviel.
Du mußt Deine Anführungszeichen aufräumen.
Was per out ausgegeben wird steht zwischen Anführungszeichen mit ; am Ende.
Wenn innerhalb dieses Bereichs, also wischen den doppelten Anführungszeichen, weitere eingesetzt werden sollen, müssen das andere sein, zum Beispiel einfache wie '. Bsp.: (width='200')
Antworten
Beitrag von Gert (6 Beiträge) am Donnerstag, 30.Dezember.2004, 18:19.
Re: Tabellenausgabe
Der Quelltext der Seite sieht nach Berücksichtigung der Antwort von Peter Pan so aus:
<head>
</perl>
$aa = $begriff;
$bb = $ortschaft;
my $i = 0;
if ($bb eq "alle Ortschaften")
{
get "Id==*", "verzeichnis";
}
else
{
get "ort==$bb", "verzeichnis";
}
</perl>
<body>
out"
<table border="0" width="700">
while(get_next("verzeichnis"))
{
out<<EOF
<tr>
<td>$name</td>
<td>$vorname</td>
<td>$strasse</td>
<td>$hn</td>
<td>$plz</td>
<td>$ort</td>
</tr>
EOF;
}
out "</table>";
</perl>
</body>
Folgende Fehlermeldungen erscheinen:
Can't modify numeric gt (>) in scalar assignment at (eval 22) line 5, at EOF ]
Search pattern not terminated at (eval 24) line 22. ]
Antworten
Beitrag von Gert (6 Beiträge) am Donnerstag, 30.Dezember.2004, 18:23.
Re: Tabellenausgabe
Der Quelltext der Seite sieht nach Berücksichtigung der Antwort von Peter Pan so aus:
<head>
</perl>
$aa = $begriff;
$bb = $ortschaft;
my $i = 0;
if ($bb eq "alle Ortschaften")
{
get "Id==*", "verzeichnis";
}
else
{
get "ort==$bb", "verzeichnis";
}
</perl>
<body>
out"
<table border="0" width="700">
while(get_next("verzeichnis"))
{
out<<EOF
<tr>
<td>$name</td>
<td>$vorname</td>
<td>$strasse</td>
<td>$hn</td>
<td>$plz</td>
<td>$ort</td>
</tr>
EOF;
}
out "</table>";
</perl>
</body>
Folgende Fehlermeldungen erscheinen:
Can't modify numeric gt (>) in scalar assignment at (eval 22) line 5, at EOF ]
Search pattern not terminated at (eval 24) line 22. ]
Antworten
Beitrag von Claus (4645 Beiträge) am Freitag, 31.Dezember.2004, 12:08.
Re: Tabellenausgabe
Antworten
Beitrag von Claus (4645 Beiträge) am Freitag, 31.Dezember.2004, 12:11.
Re: Tabellenausgabe/Sorry, Tippfehler
Antworten
Beitrag von hempelr (1976 Beiträge) am Freitag, 31.Dezember.2004, 13:42.
Re: Tabellenausgabe
Sorry, dass ich noch mal im alten Jahr meckern muss, aber es ist momentan wieder mal so, dass wahrscheinlich manche Neulinge unter den Forumsteilnehmern nicht so richtig lesen können oder aber der Meinung sind, Denken macht müd und tut weh...
Lest doch erst mal die Doku - solche Sachen wie hier sind weiss gott nix was unter die Kategorie "jeder hat mal angefangen" fällt - grundlegende Syntaxfehler zumal noch klar die Fehlerzeilen da stehen.
Und wer schon was mit Perl machen will, der sollte sich wenigstens ein paar Grundkenntnisse aneignen - nur hoffen ist nicht ausreichend, auch selber tun und lernen hilft manchmal weiter ....
Aber zu deinem "Problem":
erster Fehler in Zeile 5 - na dann schaun mer mal: Gezählt werden vom Interpreter alle Zeilen die jeweils zwischen <perl> und </perl> stehen, wobei Blockbegrenzungen (die geschw. Klammern) und Leerzeilen nicht mit gezählt werden.
Somit wäre hier der Fehler um die Zeilen
---schnipp
out"
<table border="0" width="700">
while(get_next("verzeichnis"))
{
---schnapp
zu suchen.
Da gehen wir dann mal in die Doku um zu sehen, wie die richtige Syntax von out ist: http://baseportal.de/baseportal/doku/wiki&kennung=93
und siehe da - wir werden fündig: out als Befehl und dann in Quotes(Anführungszeichen - je nach Sinn und gewünschtem Ergebnis einfache oder doppelte) auf der g l e i c h e n Zeile die Ausgaben, abgeschlossen mit einem StrichPunkt(Semikolon).
Problem Quotes innerhalb der Ausgabe - Doku lesen!
dann wird aus diese fehlerhaften Zeile folgendes:
---schnipp
out "<table border=\"0\" width=\"700\">";
while(get_next("verzeichnis"))
{
---schnapp
Weiter, Fehler in Zeile 22 - gut das ist nicht eindeutig, aber wieder mal die Doku hergenommen und siehe man kann leider nix finden.
Das kommt von dem blöden WIKI - es verschluckt die EOFs, deshalb erkläre ich es hier nochmal:
Wenn man langen HTML-Text oder was auch immer, ausgeben möchte, kann man das in sogenannten HERE-Docs vornehmen.
Die Funktionsweise ist an den Umgang mit Daten von Dateiinhaltenauf Betriebssystemebene angelehnt und recht einfach, wenn man die einzigen zwei wichtige Regeln beachtet.
Ein HERE-Doc wird von Begrenzern (das sind ganz normale Alphanumerische Namen, die den Namenskonventionen von Variablen im wesentlichen entsprechen, also keine Sonderzeichen, nicht mit Zahl beginnen, keine internen Funktionsnamen und Schlüsselwörter) "eingerahmt", alles was zwischen diesen steht, wird so ausgegeben, wie es dort steht, es werden keine Funktionen oder ähnliches interpretiert.
Das Gerüst eines HERE-Dokuments sieht so aus:
BEGRENZER
Die Grundlegenden Regeln sind:
a) HERE-DOC einleiten und dem Perl-Interpreter bekannt machen in der folgenden Art und Weise:
- Wohin sol dass HERE-DOC ausgegeben werden [Befehl oder Variablenname]
in unserem Falle in den Befehl out, der das wiederum an den Webserver zur Aufbereitung als HTML-Text ausgibt, denkbar wäre auch, die Ausagaben in eine Variable zu machen)
- Einleitungszeichen, damit Perl weiss, das folgende soll einfach nur ausgegeben werden [ die Zeichen <<]
- unmittelbar an die Eileitungszeichen den Begrenzernamen des HERE-DOCs [ üblicherweise EOF für End Of File - es geht aber auch anderes, wie HEREDOC oder GIBAUS oder was auch immer nach den Namenskonventionen]
- dann der Befehlsbegrenzer, also ein Strichpunkt
Dann beginnt man das HERE-DOC auf einer neuen Zeile
Alles was man hier reinschreibt wird einfach ausgegeben, Zeilenumbrüche werden als solche erkannt, Sonderzeichen sind möglich.
Perl-Funktionen muss man interpolieren, das ist aber dann schon ziemlich kompliziert und nur was für Fortegeschrittenere.
b) Ende des HERE-DOCs und dem Perl-Interpreter bekannt machen, dass jetzt wieder richtiges Perl losgeht, was er bitte interpretieren möchte
- die genau identische Zeichenfolge wie bei der Einleitung und zwar an den Anfang einer neuen Zeile, ganz alleine, ohne weitere Zeichen, einzig ein New-Line muss unmittelbar hinter diesen Namen, schon ein Leerzeichen führt zur Fehlermeldung!
Wichtig: der HERRDOC-Namen allein am Anfang einer Zeile ohne weitere Zeichen
Beispiele:
---schnipp
das steht dann in Variable
und das ist die zweite Zeile, für HTML ist aber ein <br>
erforderlich
ENDE
---schnapp
---schnipp
gib das aus
EOF
---schnapp
Man kann sich als Eselsbrücke auch die Syntax so ins Deutsche übersetzt vorstellen:
out <<EOF; gib aus (out) alles folgende(<<) bis zur Zeichenfolge EOF (EOF)
Sinnvoll ist der Einsatz mit Variablen, um beispielsweise an einer Stelle im HTML-Text je nach Situation im Programm unterschiedliche Sachen auszugeben. Man erspart sich somit oft unnötig dopelten HTML-Text.
So, wenn du nun das durchgearbeitet hast, dann kannst du deine Fehler auch selber korrigieren.
Die Zeile
out<<EOF
wird zu out<<EOF;
die Zeile
EOF;
wird zu
und du wirst sehen, es wird dann laufen.....
Viele Grüße und guten Rutsch an alle
Ruben
Antworten
Beitrag von richard (1187 Beiträge) am Freitag, 31.Dezember.2004, 15:11. WWW: posaunenchor-rhoden.de
Re: Tabellenausgabe
Um hier mal wieder etwas Übersicht rein zu bekommen, schlage ich die nachstehende Version mal als neuen Ausgangspunkt vor.
Wenn es nicht funktioniert bitte mal das Ergebnis und die Fehlermeldungen mitteilen.
-------------- neu -----------------
<html><head></head>
<perl>
$aa = $begriff;
$bb = $ortschaft;
my $i = 0;
if ($bb eq "alle Ortschaften")
{
get "Id==*", "verzeichnis";
}
else
{
get "ort==$bb", "verzeichnis";
}
</perl>
<body><table>
<perl>
while(get_next("verzeichnis"))
{
out "<tr><td>$name</td><td>$vorname</td><td>$strasse</td><td>$hn</td><td>$plz</td><td>$ort</td></tr>";
}
</perl>
</table></body></html>
Antworten
Beitrag von richard (1187 Beiträge) am Freitag, 31.Dezember.2004, 15:17.
Re: Tabellenausgabe
Antworten
Beitrag von hempelr (1976 Beiträge) am Samstag, 1.Januar.2005, 10:19.
Re: Tabellenausgabe
Ein gesundes, erfolgreiches Jahr wünsche ich allen.
Hab mal fix die Fehler im DOKU-WIKI Kapitel out rausgemacht, jetzt müsste es richtig lesbar sein.
Antworten
Beitrag von Gert (6 Beiträge) am Donnerstag, 30.Dezember.2004, 18:55.
Re: Tabellenausgabe
Danke das ist auf jedenfall schonmal gut zu wissen, aber funktionieren tut es leider immer noch nicht.
Antworten
Beitrag von richard (1187 Beiträge) am Donnerstag, 30.Dezember.2004, 19:27. WWW: posaunenchor-rhoden.de
Re: Tabellenausgabe
Na, dann stell das Ergebnis doch mal wieder hier rein. Natürlich nur die geänderten Stellen. Und natürlich die Fehlermeldungen.
Antworten
Beitrag von Gert (6 Beiträge) am Sonntag, 2.Januar.2005, 20:08.
Re: Tabellenausgabe / Danke an alle
Antworten