Avatar billede syswatch Novice
02. januar 2003 - 10:27 Der er 30 kommentarer og
2 løsninger

if($result < 1) virker ikke....

$query = "SELECT * FROM users WHERE ($nick == $bruger) AND ($password == $pass)";
   
$result = mysql_query($query);

if($result < 1) {

while($row = mysql_fetch_array($result)){
extract($row);

print "bla bla bla";
}else{

while($row = mysql_fetch_array($result)){
extract($row);


print "bla bla";
}

Hvorfor kan man ikke gøre sådan ?
Avatar billede nicklasb Nybegynder
02. januar 2003 - 10:29 #1
$query = "SELECT * FROM users WHERE nick='$bruger' AND password='$pass'";
Avatar billede syswatch Novice
02. januar 2003 - 10:31 #2
Sorry...
Det jeg mener er at hvor kan man ikke skrive sin if sætning som jeg har gjort.. ?
Avatar billede mjl Nybegynder
02. januar 2003 - 10:31 #3
'1' i citationstegn
Avatar billede syswatch Novice
02. januar 2003 - 10:35 #4
Nu ser det sådan her ud:

$query = "SELECT * FROM users WHERE ($nick == '$bruger') AND ($password == '$pass')";
   
$result = mysql_query($query);

if($result < '1') {

while($row = mysql_fetch_array($result)){      <----- ??????
extract($row);

}else{

}

Men den kommer med denne fejl ved den linie med pilen:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\login.php on line 20
Avatar billede chries Nybegynder
02. januar 2003 - 10:42 #5
hvorfor vil du bruge < ? den returner true false.

if($result)

eller

if($result == TRUE )

er da meget bedre. Desuden kan du ikke være sikker på at sand er 1. Den kan lige så godt være -5. Det er defineret som 0 for falsk, alt andet er sand.
Avatar billede syswatch Novice
02. januar 2003 - 10:44 #6
chries...
Det ved jeg ikke hvorfor jeg brugte den, men jeg bruger bare dit forslag istedet. Men jeg forstår ikke den brokker sig over min:

while($row = mysql_fetch_array($result)){
Avatar billede nicklasb Nybegynder
02. januar 2003 - 10:51 #7
fordi du har glemt at slutte din start {

Altså der skal stå:

while($row = mysql_fetch_array($result)){
extract($row);

print "bla bla bla";
}
} else......

og den der if-sætning.. Der kan du bare skrive; if($result < "1") {
eller denne vil være det samme;if($result == "0") {
Avatar billede chries Nybegynder
02. januar 2003 - 10:52 #8
$result må være blevet konveret i type eller sådan noget. Det her er fra manualen:

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

    mysql_free_result($result);
?>
Avatar billede nicklasb Nybegynder
02. januar 2003 - 10:54 #9
du kan jo også prøve at søge på alle { først.. Så er der 4.. Og hvis du så prøver at søge på } er der kun 2.. Der skal være de samme, hvis ikke at resultaterne går over en if-sætning.. Altså hvor resultatet kan slutte med to forskellige ting, og du derfor har sat den ind i en if-sætning..
Avatar billede syswatch Novice
02. januar 2003 - 11:00 #10
Ok... Nu virker det sådan set næsten:

$query = "SELECT * FROM users WHERE (nick LIKE '$bruger') AND (password LIKE '$pass')";
   
$result = mysql_query($query);

if($result == TRUE) {

while($row = mysql_fetch_array($result)){
extract($row);

print "Hejsa";

}
}else{
print "farvel";
}
}

Hvis man taster rigtigt brugernavn og password viser den fint Hejsa, men taster man forkert viser den ingenting........ hvorfor viser den så ikke farvel ??????
Avatar billede nicklasb Nybegynder
02. januar 2003 - 11:02 #11
hvofor lukker du også den sidste to gange??
Avatar billede nicklasb Nybegynder
02. januar 2003 - 11:03 #12
hvorfor lukker du også den sidste to gange?? Den skal se således ud:

$query = "SELECT * FROM users WHERE (nick LIKE '$bruger') AND (password LIKE '$pass')";
   
$result = mysql_query($query);

if($result == TRUE) {

while($row = mysql_fetch_array($result)){
extract($row);

print "Hejsa";

}
}else{
print "farvel";
}
Avatar billede syswatch Novice
02. januar 2003 - 11:04 #13
Arh... se lige bort fra den....
Men hvordan skal man skrive det hvis man vil have den til at skrive farvel hvis nu resultatet ikke er == TRUE ?
Avatar billede nicklasb Nybegynder
02. januar 2003 - 11:04 #14
du kan også prøve at tælle i den sidste jeg skrev.. Nu er der lige mange {'er og }'er.. (3 stk.)
Det er godt lige at tjekke det igennem hver gang ;)
Avatar billede nicklasb Nybegynder
02. januar 2003 - 11:06 #15
du kunne fx skrive: } elseif ($result == FALSE) {
Avatar billede chries Nybegynder
02. januar 2003 - 11:11 #16
$query = "SELECT * FROM users WHERE (nick LIKE '$bruger') AND (password LIKE '$pass')";
   
$result = mysql_query($query);

if($result == TRUE)
{
    $num_rows = mysql_num_rows($result);
   
    if( $num_rows != 0 )
    {
        while($row = mysql_fetch_array($result))
        {
            extract($row);
            print "fundet bruger(e)";
        }
    }
    else
    {
        print "farvel - nul bruger fundetr";       
    }
}
else
{
    print "farvel - qeury error";
}
Avatar billede chries Nybegynder
02. januar 2003 - 11:14 #17
eller hvis bruger er unqie


$query = "SELECT * FROM users WHERE (nick LIKE '$bruger') AND (password LIKE '$pass')";
   
$result = mysql_query($query);

if($result == TRUE)
{
    if( $row = mysql_fetch_array($result) )
    {
        extract($row);
    }
    else
    {
        print "farvel - nul bruger fundetr";       
    }
}
else
{
    print "farvel - qeury error";
}
Avatar billede fumes Nybegynder
02. januar 2003 - 11:24 #18
if($result == TRUE)

kan skrives som

if($result)

så vil den jo checke på om den er true - alternativt hvis den skal negeres

if(!$result)

Desuden bruger jeg normalt mysql_fetch_object istedet, personligt synes jeg det giver mere læsbar kode idet man jo bare referer til variablerne i objektet som:

$result->værdi1
$result->værdi2

osv.
Avatar billede syswatch Novice
02. januar 2003 - 11:28 #19
Fumes: Det virker også fint, men hvis nu resultatet bliver FALSE så skriver den ikke det der står i else sætningen, men hvorfor.... Nu får i sku hele koden:

<?

if (@$submit){

    mysql_connect("localhost","1","2");
    mysql_select_db("3") or die("Error opening database ..");

    $query = "SELECT * FROM users WHERE (nick LIKE '$bruger') AND (password LIKE '$pass')";
   
    $result = mysql_query($query);

        while($row = mysql_fetch_array($result)){
    extract($row);

    if($result) {

        print "<BR><BR><BR><BR><BR>";
        print "<CENTER>";
        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>QUICKIES<br><br>Hej $nick";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

        print "<BR>";

        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";

        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>MEDLEMS LOGIN<BR>";
        print "<BR>";
        print "<form action=login.php method=post>";
        print "Brugernavn:<br>";
        print "<input name=bruger type=text size=15 maxlength=15 CLASS=felter><br>";
        print "Password:<br>";
        print "<input name=pass type=password size=15 maxlength=15 CLASS=felter><br>";
        print "<INPUT NAME=submit TYPE=SUBMIT VALUE=Login CLASS=felter>";

        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";
       
        print "<br>";
   
        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>MedLEMs Funktioner";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";
       
        }else{


        print "<BR><BR><BR><BR><BR>";
        print "<CENTER>";
        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>QUICKIES";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

        print "<BR>";

        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";

        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>MEDLEMS LOGIN<BR>";
        print "<BR>";
        print "<form action=login.php method=post>";
        print "Brugernavn:<br>";
        print "<input name=bruger type=text size=15 maxlength=15 CLASS=felter><br>";
        print "Password:<br>";
        print "<input name=pass type=password size=15 maxlength=15 CLASS=felter><br>";
        print "<INPUT NAME=submit TYPE=SUBMIT VALUE=Login CLASS=felter>";

        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

        print "<br>";

        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>Du har indtastet forkert brugernavn eller password.<br><br>Klik tilbage for at prøve igen.<br>";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

       
        }       
    }
  }

?>
Avatar billede chries Nybegynder
02. januar 2003 - 11:34 #20
<?

if (@$submit){

    mysql_connect("localhost","1","2");
    mysql_select_db("3") or die("Error opening database ..");

    $query = "SELECT * FROM users WHERE (nick LIKE '$bruger') AND (password LIKE '$pass')";
   
    $result = mysql_query($query);

    if($row = mysql_fetch_array($result)) {
        extract($row);

        print "<BR><BR><BR><BR><BR>";
        print "<CENTER>";
        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>QUICKIES<br><br>Hej $nick";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

        print "<BR>";

        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";

        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>MEDLEMS LOGIN<BR>";
        print "<BR>";
        print "<form action=login.php method=post>";
        print "Brugernavn:<br>";
        print "<input name=bruger type=text size=15 maxlength=15 CLASS=felter><br>";
        print "Password:<br>";
        print "<input name=pass type=password size=15 maxlength=15 CLASS=felter><br>";
        print "<INPUT NAME=submit TYPE=SUBMIT VALUE=Login CLASS=felter>";

        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";
       
        print "<br>";
   
        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>MedLEMs Funktioner";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";
       
        }else{


        print "<BR><BR><BR><BR><BR>";
        print "<CENTER>";
        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>QUICKIES";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

        print "<BR>";

        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";

        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>MEDLEMS LOGIN<BR>";
        print "<BR>";
        print "<form action=login.php method=post>";
        print "Brugernavn:<br>";
        print "<input name=bruger type=text size=15 maxlength=15 CLASS=felter><br>";
        print "Password:<br>";
        print "<input name=pass type=password size=15 maxlength=15 CLASS=felter><br>";
        print "<INPUT NAME=submit TYPE=SUBMIT VALUE=Login CLASS=felter>";

        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

        print "<br>";

        print "<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>";
        print "<TR>";
        print "<TD><IMG SRC=links-oben.gif BORDER=0></TD></TR>";
        print "<TR><TD HEIGHT=100 BGCOLOR=#574C3D>";
        print "<FONT SIZE=1 COLOR=#FFFFFF>";
        print "<CENTER>Du har indtastet forkert brugernavn eller password.<br><br>Klik tilbage for at prøve igen.<br>";
        print "</TD></TR>";
        print "<TR>";
        print "<TD><IMG SRC=links-unten.gif BORDER=0></TD></TR>";
        print "</TABLE>";

       
        }       
    }
?>
Avatar billede nicklasb Nybegynder
02. januar 2003 - 11:34 #21
hvorfor if [(@$submit){] ?? Hvorfor ikke bare [if ($submit){] ??
Avatar billede tipsen Nybegynder
02. januar 2003 - 11:38 #22
hmm - nogle misforståelser skal vist korrigeres her!

For et SELECT-statement vil mysql_query returnere false, hvis noget går galt og hvis det går godt returneres et resultatsæt (ressource), hvorfra de udvalgte poster kan pilles ud! Dvs. funktionen vil ikke på noget tidspunkt returnere true!!!
Avatar billede syswatch Novice
02. januar 2003 - 11:41 #23
Chries.... takker for dit svar.
Det virker som det skal nu, men kan du ikke lige smide et svar så du kan få point.
Tipsen... ok.... man lærer hver dag. :-)
Avatar billede chries Nybegynder
02. januar 2003 - 11:45 #24
et resultat sæt svarer vel også til true, da den ikke er 0 eller undefined ? :-)
Avatar billede tipsen Nybegynder
02. januar 2003 - 11:45 #25
Eksempel på pæn/korrekt kode:


if (isset($submit) && !empty($submit)) {
  mysql_connect('localhost','user','pass') or die(mysql_error());
  mysql_select_db('navnpådb') or die(mysql_error());
  $sql = "SELECT * FROM users WHERE nick LIKE '$bruger' AND password LIKE '$pass'";
  $result = mysql_query($query) or die(mysql_error());
  //antager at der ikke kan være flere brugere med samme nick/pass
  if(mysql_num_rows($result) == 1) {
    $row = mysql_fetch_array($result);
    print_r($row);
    mysql_free_result($result);
  } else {
    echo "Nick eller pass er forkert - Bliv *oprettet* som bruger";
  }
}
Avatar billede chries Nybegynder
02. januar 2003 - 11:46 #26
sårn næsten da ? :-)
Avatar billede tipsen Nybegynder
02. januar 2003 - 11:47 #27
Hvis man kører ovennævnte mener jeg ikke man overhovedet får nogle advarsler/fejl fra php mht. "skrammelkode"
Avatar billede syswatch Novice
02. januar 2003 - 11:48 #28
chries, smider du lige et svar....
Så deler vi lidt point mellem dig og tipsen...
Avatar billede tipsen Nybegynder
02. januar 2003 - 11:49 #29
chries: I dette tilfælde, kan du skrive som du gør ovenfor og det vil fungere (vist endda uden advarsler), men jeg synes ikke det er "pæn" programmeringsstil.
Avatar billede tipsen Nybegynder
02. januar 2003 - 11:51 #30
Desuden er det meget dumt, at udskrive så meget ren html med php - det vil være hurtigere at hoppe ud af php og så bare have det som ren HTML!
Avatar billede tipsen Nybegynder
02. januar 2003 - 11:56 #31
-og også nemmere at overskue :-)
Avatar billede syswatch Novice
02. januar 2003 - 11:58 #32
Jeg takker mange gange for jeres indlæg, har delt lidt point imellem jer, og vil forsøge at lave en pæn og ren kode.... :-)

Ses måske i et nyt spørgsmål en dag.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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