Schrift
[thread]12006[/thread]

Prüfen ob Variable leer ist



<< >> 6 Einträge, 1 Seite
Gast Gast
 2008-06-12 20:58
#110999 #110999
Nabend,
habe in meinem CGI Script eine Suchfunktion.
Wenn ich jedoch keinen Begriff eingebe, werden mir alle Daten angezeigt.
JEtzt wollte ich überprüfen lassen ob die VAr leer ist. Wenn sie es ist soll ne andere Sub ausgeführt werden .
Das Problem ist nun das ich keine define benutzen kann. Zumindest funktioniert es nicht.Ich glaube das Liegt daran
Code (perl): (dl )
$suche = $query->param("search")



Hier mal der Source, wie ich dachte das es geht.
Code (perl): (dl )
1
2
3
4
5
6
7
8
print "Content-type: text/html\n\n";
$query = CGI->new(); 

$suche = $query->param("search");
if(!defined $suche)
{
&nix;
}



MFG
GwenDragon
 2008-06-12 21:45
#111002 #111002
User since
2005-01-17
14806 Artikel
Admin1
[Homepage]
user image
CGI schreibt:
Quote
If a value is not given in the query string, as in the queries ``name1=&name2='' or ``name1&name2'', it will be returned as an empty string. This feature is new in 2.63.

If the parameter does not exist at all, then param() will return undef in a scalar context, and the empty list in a list context.


Ich weiß ja nicht, wie du das Skript aufrufst.

Ist wohl besser so:
Code (perl): (dl )
if(length( $suche )==0) {
Linuxer
 2008-06-12 22:15
#111004 #111004
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Code (perl): (dl )
1
2
3
4
# $suche muss definiert und nicht leer sein
if ( defined $suche and $suche ne '' ) {
  # tu was mit $suche
}
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Gast Gast
 2008-06-12 22:19
#111005 #111005
@GwenDragon

Vielen Dank, funktioniert :)

MFG
GwenDragon
 2008-06-12 22:52
#111006 #111006
User since
2005-01-17
14806 Artikel
Admin1
[Homepage]
user image
Ja, mit ne ist es noch kürzer ;)

Eigentlich müsste meins korrekter so lauten:

Code (perl): (dl )
if(defined($suche) and length($suche)==0) {
pq
 2008-06-13 12:15
#111014 #111014
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
wenn ein parameter nicht aus einem formular übergeben wird, liefert CGI::param undef.
wird er übergeben, aber steht nicht drin, ist es der leere string. du musst beide sachen abfragen.
Code (perl): (dl )
1
2
3
4
5
6
if (defined $suche and length $suche) {
    ....
}
else {
    nix();
}


subroutinen in perl ruft man übrigens nicht mit einem vorangestellten '&' auf, das stammt aus
perl4-zeiten und findet sich leider da draussen noch in vielen skripten. am besten mal ein
aktuelleres buch besorgen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 6 Einträge, 1 Seite



View all threads created 2008-06-12 20:58.