Avatar billede lillholm Nybegynder
23. maj 2005 - 17:52 Der er 1 kommentar og
1 løsning

if saetning!

Jeg har et script der gaar ind i min mysql database og hiver en stribe vaerdier ud.

----Kode-----
#!/usr/bin/perl

use DBI;

$user          = "blah";
$password      = "blahblah";
$database      = "webmin";
$hostname      = "localhost";
$port          = "3306";
$dsn            = "DBI:mysql:database=$database;host=$hostname;port=$port";
print "Connecting to mysql database...\n";
$dbh = DBI->connect($dsn, $user, $password);
$getallow = $dbh->prepare("select HTTPallow from users order by userid");
$getallow->execute;

while ( @allow = $getallow->fetchrow_array ) {

if (@allow == '1') {

print @allow," <<=== well... det her er(maaske) 1\n";
}}

$dbh->disconnect;
--------------------------
--------output------------
Connecting to mysql database...
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
0 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
1 <<=== well... det her er(maaske) 1
------------------------------------

Som man kan se er der kun en vaerdi der er 0 men den brude ikke blive skrevet med.... nogen der har en forklaring paa det og hvad jeg skal goere for at det virker ???
Avatar billede breum Nybegynder
23. maj 2005 - 19:32 #1
foreach $allow (@allow)
{
if ($allow eq "1")
        {
        print "$allow <<=== well... det her er helt sikkert 1\n";\n";
        }
}
Avatar billede xohp Nybegynder
09. juni 2005 - 10:12 #2
ehm da det er meningen at man skal loope ned igennem databasen's rows har foreach ikke den effekt man ønsker i dette tilfælde... eneste grund til at der anvendes en array er jo fordi fetchrow_array hiver de felter i eens select i den aktive række ind i en array, for hver gang den køres så hopper den en række ned...

perl kan heldigvis klare at man bruger array definitionen på begge sider af = tegnet
og da der kun hentes een kolonne ville jeg selv skrive:

while (($allow) = $getallow->fetchrow_array ) {
  if ($allow) {
    print("$allow er sand\n");
  }
}

da perl ikke har faste typer for boolean, string, integers og floats, behøves quotes og ne eq osv. ikke hvis ikke man ikke absolut vil checke på string, og hvad angår boolean så er 0 falsk og alt andet er true, derfor ingen grund til at udvide checket mere end nødvendigt når man bare vil checke om noget er sat til 0 eller 1
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester