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 ?
Annonceindlæg fra Salesforce
02. januar 2003 - 10:29
#1
$query = "SELECT * FROM users WHERE nick='$bruger' AND password='$pass'";
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.. ?
02. januar 2003 - 10:31
#3
'1' i citationstegn
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
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.
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)){
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") {
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); ?>
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..
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 ??????
02. januar 2003 - 11:02
#11
hvofor lukker du også den sidste to gange??
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"; }
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 ?
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 ;)
02. januar 2003 - 11:06
#15
du kunne fx skrive: } elseif ($result == FALSE) {
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"; }
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"; }
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.
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>"; } } } ?>
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>"; } } ?>
02. januar 2003 - 11:34
#21
hvorfor if [(@$submit){] ?? Hvorfor ikke bare [if ($submit){] ??
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!!!
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. :-)
02. januar 2003 - 11:45
#24
et resultat sæt svarer vel også til true, da den ikke er 0 eller undefined ? :-)
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"; } }
02. januar 2003 - 11:46
#26
sårn næsten da ? :-)
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"
02. januar 2003 - 11:48
#28
chries, smider du lige et svar.... Så deler vi lidt point mellem dig og tipsen...
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.
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!
02. januar 2003 - 11:56
#31
-og også nemmere at overskue :-)
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.
Vi tilbyder markedets bedste kurser inden for webudvikling