Christian Kruse: /(CGI) Ist 0 (null) wirklich nichts?

Beitrag lesen

你好 agapanthus,

Hmm...

if  (defined  $query->param('sizelimit')) {
Liefert auch TRUE, wenn das Feld leer ist. Es ist defined, aber leer.

Mit folgendem Code geht es

if  ($query->param('sizelimit') ne "") {
    $sizelimit=$query->param('sizelimit');
}else{
    $sizelimit=20;
}

Du solltest dir darüber klar sein, dass du so warnings produzieren wirst
wg. des Vergleichs mit undefinierten Werten. Nämlich immer dann, wenn das
Feld nicht übermittelt wurde. Eine korrekte Abfrage könnte zum Beispiel so
aussehen:

  
if(defined $query->param('sizelimit') && length($query->param('sizelimit')) > 0) {  
  $sizelimit = $query->param('sizelimit');  
}  
else {  
  $sizelimit=20;  
}  

Oder, verkürzt:

  
$sizelimit = defined $query->param('sizelimit') && length($query->param('sizelimit')) ? $query->param('sizelimit') : 20;  

Zu dem Rest haben andere ja schon geschrieben.

再见,
 克里斯蒂安

--
Neue AMD64-Hardware | Personal Avatars
Sobald dir ein Gedanke kommt, lache über ihn.
http://wwwtech.de/