Beitrag von Tini (0 Beiträge) am Dienstag, 7.Dezember.2004, 15:28.
perl-Problem wenn Sonderzeichen oder Leerzeichen im Texfeld sind
Hallo,
mir nachfolgendem Formular mit perl hole ich alle Inhalte aus dem Feld Rubrik. Ist der Rubrikname öfter vorhanden, wird es aber nur 1x angezeigt.
Mein Problem:
Das Funktioniert nur, wenn im Feld "Rubrik" nur 1 Wort ohne Sonderzeichen steht.
Ich kriege es einfach nicht hin, wenn ein Leerzeichen oder Sonderzeichen vorhanden sind :-(
Tini
out <<EOF;
<tr><td>
<form action="http://...template2" method="post" enctype="multipart/form-data">
<input type=hidden name="cmd=" value="search">
EOF
get "Rubrik==*", "daten2", "erghash";
while(get_next("erghash")) {
push @opRubrik, $Rubrik if index("@opRubrik", "$Rubrik")<0;
}
foreach my $opRubrik(sort @opRubrik){
# $a_opRubrik .= $opRubrik eq $frubrik ? "<option selected value=$opRubrik>$opRubrik" : "<option value=$opRubrik>$opRubrik";
$a_opRubrik .= "<option value=$opRubrik>$opRubrik";
}
my $sl = "selected" if $frubrik eq "";
out<<EOF;
<select name="frubrik=">
<option $sl value='*'>Alle
$a_opRubrik
</select>
<input type="submit" value="suchen">
</form>
EOF
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 7.Dezember.2004, 15:54.
Re: perl-Problem wenn Sonderzeichen oder Leerzeichen im Texfeld sind
so gehts besser
get "Rubrik==*", "daten2", "erghash";
while(get_next("erghash")) {
$opRubrik{$Rubrik}++
}
## achtung foreach hat keys dazu bekommen
foreach my $opRubrik(sort keys %opRubrik){
# $a_opRubrik .= $opRubrik eq $frubrik ? "<option selected value=$opRubrik>$opRubrik" : "<option value=$opRubrik>$opRubrik";
$a_opRubrik .= "<option value=$opRubrik>$opRubrik";
}
my $sl = "selected" if $frubrik eq "";
Antworten
Beitrag von Mattias (110 Beiträge) am Mittwoch, 8.Dezember.2004, 10:07.
Re: perl-Problem wenn Sonderzeichen oder Leerzeichen im Texfeld sind
Das Problem hatte ich auch, wobei ich festgestellt habe, dass es anscheinend mit den Sonderzeichen jetzt doch funzt, nur beim Leerzeichen läuft nichts. Ich speichere deshalb die Leerzeichen als Unterstriche ab:
Bei der Eingabe: $_put{text} =~ s/\ /_/g;
und bei der Ausgabe: $text =~ s/_/\ /g;
Da der Unterstrich im Normalfall äußerst selten verwendet wird, ist das Problem damit vom Tisch.
Antworten
Beitrag von Tini (0 Beiträge) am Mittwoch, 8.Dezember.2004, 18:01.
Re: perl-Problem wenn Sonderzeichen oder Leerzeichen im Texfeld sind
Dank an Sander & Matthias.
Werde ich umgehend probieren.
Tini
Antworten
Beitrag von Tini (0 Beiträge) am Mittwoch, 8.Dezember.2004, 19:44.
Re: perl-Problem wenn Sonderzeichen oder Leerzeichen im Texfeld sind
Antworten
Beitrag von Claus (4645 Beiträge) am Mittwoch, 8.Dezember.2004, 21:11.
Re: perl-Problem wenn Sonderzeichen oder Leerzeichen im Texfeld sind
Antworten
Beitrag von Tini (0 Beiträge) am Donnerstag, 9.Dezember.2004, 20:15.
Re: perl-Problem wenn Leerzeichen im Texfeld sind
Hallo Claus,
leider nicht :-(
Ich möchte ja nichts ersetzen.
Wenn ich z.B. den Rubriknamen "Spaß & Unterhaltung" habe,
soll er auch so erkannt werden, aber alles, was nach dem Leerzeichen
kommt, wird nicht erkannt.
Dank Sander klappt das mit den Sonderzeichen, aber leider nicht mit den Leerzeichen.
Tini
<perl>
out <<EOF;
<tr><td>
<form action="http://...template2" method="post" enctype="multipart/form-data">
<input type=hidden name="cmd=" value="search">
EOF
get "Rubrik==*", "daten2", "erghash";
while(get_next("erghash")) {
$opRubrik{$Rubrik}++
}
foreach my $opRubrik(sort keys %opRubrik){
# $a_opRubrik .= $opRubrik eq $frubrik ? "<option selected value=$opRubrik>$opRubrik" : "<option value=$opRubrik>$opRubrik";
$a_opRubrik .= "<option value=$opRubrik>$opRubrik";
}
my $sl = "selected" if $frubrik eq "";
out<<EOF;
<select name="frubrik=">
<option $sl value='*'>Alle
$a_opRubrik
</select>
<input type="submit" value="suchen">
</form>
EOF
</perl>
Antworten
Beitrag von hempelr (1976 Beiträge) am Freitag, 10.Dezember.2004, 08:09.
Re: perl-Problem wenn Leerzeichen im Texfeld sind
mhm - das ist nicht ganz trivial, und ich umgehe solche Sachen aus gegebenen Gründen. Leerzeichen in Suchwerten sind nicht (nagut nur mit Bocksprüngen) nutzbar, auf alle Fälle wenns auf Gleichheit abgefragt werden soll.
Sinnvoller sehe ich die Abfrage auf "Beginnt mit", da funktionierts einwandfrei, allerdings muss man dann darauf achten, dass das erste Wort bwpw. in ner Rubrikenliste eineiendeutig im mathematischen Sinne ist, sonst wird nicht richtig gefiltert.
Beispiel:
Rubriken:
Spaß und Unterhaltung
Spaßmacher
Haus und Hof
Hauswirtschaft
wäre nicht eineindeutig, es würde hier bei "beginnt mit 'Spaß'" sowohl Spaß und Unterhaltung als auch Spaßmacher geholt werden, ebenso bei Haus Haus und Hof und Hauswirtschaft
Es ist in sonem Falle ganz wichtig, die richtige Begrifflichkeit zu finden, sollte aber mit nem guten Synonymwörterbuch oder nem Thesaurus in ner Textverarbeitung kein Problem sein ;-)
Übrigens - Vergleichsoperatoren fürs Filtern von Datensätzen:
http://baseportal.de/baseportal/doku/baseportal.pl?htx=/doku/wiki&kennung=45
hoffe, das hat es dir etwas klarer gemacht.
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 13.Dezember.2004, 19:22.
Re: perl-Problem wenn Leerzeichen im Texfeld sind
Antworten
Beitrag von hempelr (1976 Beiträge) am Dienstag, 14.Dezember.2004, 08:38.
Re: perl-Problem wenn Leerzeichen im Texfeld sind
na sag ich ja, nur mit "Bocksprüngen" - bei kombinierten Abfragen auf mehrere Felder wird das so ziemlich unübersichtlich, deshalb mein Hinweis auf das "beginnt mit" und die Eineindeutigkeit des ersten Wortes im Suchbegriff....
Antworten
Beitrag von Barbara (59 Beiträge) am Donnerstag, 23.Dezember.2004, 16:52.
perl-Problem wenn Leerzeichen im Texfeld sind
Hallo liebe Könner,
ich habe gerade im Forum gelesen, man solle eine Abfrage, wenn Leerzeichen mit Feld sind, wie folgt aufbauen:
<perl>
get ["MA_Bearbeitung", "==", $Altbestand 2003], "Kundeninfos2";"holen";
while (get_next "holen"){
mod "Id==$_id",["MA_Bearbeitung","Versuch"],"Kundeninfos2";
}
</perl>
Dann wird folgender Fehlercode ausgegeben:
[ Fehler: Fehlerhafter Perl Code in :
syntax error at (eval 826) line 2, near "$Altbestand 2003" ]
Wenn ich zwischen Altbestand und 2003 einen Unterstrich setze oder den Leerschritt wegmache, passiert garnichts.
Kann mir vielleicht jemand helfen?
Liebe Grüße,
Barbara
Antworten
Beitrag von hempelr (1976 Beiträge) am Donnerstag, 23.Dezember.2004, 17:17.
Re: perl-Problem wenn Leerzeichen im Texfeld sind
setz mal die Variable auch noch in Doppelquotes, also so:
get ["MA_Bearbeitung", "==", "$Altbestand 2003"], "Kundeninfos2";"holen";
(Hintergrund: Leerzeichen ist wieder "frei", deshalb sucht er ne Variable Namens $Altbestand und kann mit 2003 nix anfanggen...)
Antworten