[php&mysql] Een select waar niets uit komt

Pagina: 1
Acties:

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 22:45

Snow_King

Konijn is stoer!

Topicstarter
Hoi,

Ik ben bezig met het vernieuwen van de system specs pagina maar kom er even niet uit.

Ik maak een cookie en ga er van uit dat er met het cookie niets mis is, deze is al helemaal getest en is ok.

Zo maak ik de cookie
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 


$userid = "1";
$username = "Snow_King";
$userpass = "dit is een md5hash van mijn pw";
$hash = md5($userid.$username.$userpass.$secretword); 

Setcookie("userid", $userid, Time()+3600); 
Setcookie("username", $username, Time()+3600); 
Setcookie("userpass", $userpass, Time()+3600); 
Setcookie("userhash", $hash, Time()+3600); 

?>


Ik fake dus de mysql query door bij het maken van de cookie even in het script iets anders dan 1 in te vullen.

even het script
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php 

include("inc/top.php"); 

//Gegevens uit cookie lezen 
$id = $HTTP_COOKIE_VARS["userid"]; 
$hash = $HTTP_COOKIE_VARS["userhash"]; 

//Gegevens uit MySQL Database halen 

$result = mysql_query("SELECT nick, pw FROM usr WHERE id='$id'"); 


while ( $row = mysql_fetch_array($result) ){ 
    $nick = $row["nick"]; 
    $pw = $row["pw"]; 

if(!empty($row)){ 

//Hash maken van de MySQL stuff 
$userhash = md5($id.$nick.$pw.$secretword); 

//Cookie hash met MySQL Hash vergelijken 
if($hash == $userhash) {  
echo(" 
        <tr bgcolor='#00084a'> 
            <td colSpan='2' class='bottombalk'>Hoi $nick, welkom op de system specs pagina!</td> 
        </tr> 
"); 
} else {  

echo(" 
        <tr bgcolor='#00084a'> 
            <td colSpan='2' class='bottombalk'>Jij hebt met je cookie geknoeid! FOEI!</td> 
        </tr> 
"); 
}
} else { 
echo(" 
        <tr bgcolor='#00084a'> 
            <td colSpan='2' class='bottombalk'>Hoi, je bent niet ingelogd.</td> 
        </tr> 
"); 
} 
} 


include("inc/bot.php"); 

?> 


Als iemand dus geen cookie op zijn hdd heeft of stiekem $userid in zijn cookie heeft veranderd is dus output van de mysql query leeg, das logisch.
if(!empty($row)){
daar check ik dus of de array leeg is, maar als de geselecte rij helemaal niet bestaat, dan krijg ik dus niet de melding van je bent niet ingelogd, heel raar.

Ik heb al van alles geprobeerd met isset, if($row == "") , if($nick == "") noem maar op, maar niets werkt.
Wie - o - wie weet het?
Het gaat er dus om dat als er geen rij bestaat met id nummer x dat er dan een melding komt van je bent niet ingelogd.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 20:27
Er van uit gaan dat je wel een db connectie hept?

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 22:45

Snow_King

Konijn is stoer!

Topicstarter
Sybr_E-N schreef op 16 september 2002 @ 22:11:
Er van uit gaan dat je wel een db connectie hept?
die staat in top.php, als ik een geldige id invoer krijg ik dit:
Hoi Snow_King, welkom op de system specs pagina!

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
de query:
code:
1
SELECT nick, pw FROM usr WHERE id='$id'

Je gaat er hier vanuit dat id een string is, maar ik neem aan dat dit een nummer is (is meestal zo bij ID's :))... probeer het eens zonder die quotes?

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Snow_King
  • Registratie: April 2001
  • Laatst online: 22:45

Snow_King

Konijn is stoer!

Topicstarter
_Mo_ schreef op 16 september 2002 @ 22:13:
de query:
code:
1
SELECT nick, pw FROM usr WHERE id='$id'

Je gaat er hier vanuit dat id een string is, maar ik neem aan dat dit een nummer is (is meestal zo bij ID's :))... probeer het eens zonder die quotes?
ik select mij id's altijd zo, werkt altijd!
maarja ik probeer eens zonder

edit:

Won't work :(

Verwijderd

Nooit met php gewerkt. Wel ooit forum software geschreven in perl met een MySQL backend, dus als ik achterlijke dingen zeg moeten jullie het maar zeggen. Maar als ik deze code zou debuggen zou ik eerst $row eens printen, kijken of ie idd niet leeg is...

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Snow_King schreef op 16 september 2002 @ 22:15:
[...]


ik select mij id's altijd zo, werkt altijd!
maarja ik probeer eens zonder

edit:

Won't work :(
Humm... heb je de query al bekeken? Als je 'm maakt bedoel ik?
Oh ja, probeer ook het volgende eens na de query:
PHP:
1
2
3
4
    if( !$result)
    {
        echo mysql_error();
    }

Als de query niet zou lukken, krijg je tenminste wat meer info

Op zich wel grappig wat je hier doet:
PHP:
1
2
3
4
5
6
    $nick = $row["nick"];
    $pw = $row["pw"];

    if(!empty($row)){
        //...
    }

Je gebruikt $row dus eerst, en daarna ga je nog eens kijken of er wel wat in zit :) Is in principe een overbodige test, aangezien mysql_fetch_array() false teruggeeft als er geen rij beschikbaar is, en in dat geval kom je daar niet eens.

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Snow_King
  • Registratie: April 2001
  • Laatst online: 22:45

Snow_King

Konijn is stoer!

Topicstarter
ik heb het gevonden..

ik doen nu dit
PHP:
1
2
3
4
5
6
7
8
$result = mysql_query("SELECT nick, pw FROM usr WHERE id='$id'");

$tmp = mysql_num_rows($result); 
if(!empty($tmp)){ 

while ( $row = mysql_fetch_array($result) ){ 
    $nick = $row["nick"]; 
    $pw = $row["pw"];

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 01-01 15:26

PrinsEdje80

Holographic, not grated...

Is niet echt netjes. Kun je niet mooier:
PHP:
1
2
3
$tmp = mysql_num_rows($result);  
if($tmp !=0)){ //wat ook gewoon kan is:
if($tmp) {

Used to be Down Under... Foto gallery

Pagina: 1