hoi, ik krijg steeds deze error

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in (website)

maar ik snap er niets van ik kan de fout in de code niet vinden kan iemand mij helpen

//CODE//
<?php
require_once('bin.php');
require_once('config.php');
$lang= $_POST['lang'];
$user= $_POST['user'];
$pass = $_POST['pass'];
$ip= $_SERVER['REMOTE_ADDR'];



if ($_POST['action'] == '1'){


$link = mysql_connect("localhost", "$db_user", "$db_pass");
mysql_select_db("$db_name", $link);

$result = mysql_query("SELECT * FROM users_systemen WHERE username = '$user' AND password = '$pass'", $link);
$num_rows = mysql_num_rows($result);
if (($num_rows == '1')){
session_start();
$_SESSION['username'] = '$user';
$_SESSION['acces'] = 'TRUE';
$_SESSION['time'] = time();
if (($lang == 'default')){
$lang = $row_users['language'];
header("Location:index3.php?lang='$lang'");
exit();
}
else if (($lang == $row_users['language'])){
header("Location:index3.php?lang='$lang'");
exit();
} else {
$query2 = "UPDATE users_systems SET language = '$lang' WHERE username = '$user'";
$execute = mysql_query($query2);
header("Location:index3.php?lang='$lang'");
exit();
}
} else {
$login = "failure";
}

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Identificeer u zelf</title>
<style type="text/css">
<!--
.style1 {
font-size: 14px;
font-weight: bold;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.style2 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
<script type="text/JavaScript">
<!--
function MM_popupMsg(msg) { //v1.0
alert(msg);
}
//-->
</script>
</head>

<?php if ($login == "failure"){?><body onload="MM_popupMsg('Acces Denied')"><?php } else {?><body><?php } ?>
<form action="index2.php" method="post" name="loginform">
<table width="547" border="0">
<tr>
<td colspan="2"><div align="center" class="style1">Login</div></td>
</tr>
<tr>
<td width="154"><span class="style2">Username:</span></td>
<td width="299"><label>
<input name="user" type="text" class="style2" id="user" size="30" maxlength="30" />
</label></td>
</tr>
<tr>
<td><span class="style2">Password:</span></td>
<td><label>
<input name="pass" type="password" class="style2" id="pass" size="30" maxlength="30" />
</label></td>
</tr>
<tr>
<td><span class="style2">interface Language</span></td>
<td><label>
<select name="lang">
<option value="default">User default</option>
<option value="NL">Nederlands</option>
<option value="EN">English</option>
</select>
</label></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><label>
<input type="submit" value="Login" name="submit">
</label></td>
</tr>
</table>
<input name="Date" type="hidden" id="Date" value="<?php echo date('dmy-Gis'); ?>" />
<input name="ip" type="hidden" id="ip" value="<?php echo $ip; ?>" />
<input name="action" type="hidden" id="action" value="1" />
</form>
</body>
</html>
//EIND CODE//
Zie dit topic, ook daar ontbrak de foutafhandeling. Dat is de basis van ieder goed script, vergeet dan niet!
ja maar hoe moet het dan wel ik snap dit dus niet. ik heb op http://www.php.net gekeken maar wat daar staat neem ik over en nog steeds de error
Variabelen horen buiten de quote's!


<?php
$link = mysql_connect("localhost", "$db_user", "$db_pass");
mysql_select_db("$db_name", $link);

$result = mysql_query("SELECT * FROM users_systemen WHERE username = '$user' AND password = '$pass'", $link);
$num_rows = mysql_num_rows($result);
?>


Word bijvoorbeeld:


<?php
$link = mysql_connect("localhost", $db_user, $db_pass);
mysql_select_db($db_name, $link);

$result = mysql_query("SELECT * FROM users_systemen WHERE username = ".$user." AND password = '".$pass."', ".$link) OR DIE(mysql_error());
$num_rows = mysql_num_rows($result);
?>


En dit moet je ook doen bij je query2.

Je maakt $result aan, geweldig. Maar je hebt geen flauw idee of dit is gelukt, dat is dus niet zo geweldig. Even een if-else-je doet wonderen:
<?
if($result){ // TRUE, dus de query is gelukt
// doe iets met $result
}
else { // query is mislukt, $result heeft geen inhoud en is onbruikbaar
echo mysql_error();
}
?>
Zo moeilijk is het allemaal niet!
Frank wat ik me nou de hele tijd afvraag is waarom jij de controle met een if en else statement doet, om te kijken of een query is uitgevoerd? Je kunt toch beter gewoon meteen naar de mysql_query(); or die(mysql_error()); achter plakken. Het scheelt regels en het maakt het overzichtelijker! Of heb jij hiervoor een bepaalde reden?
ik heb gedaan wat remy heeft geschreven en die code verandert nu krijg ik alleen dit

You have an error in your SQL syntax near ' Resource id #4' at line 1

en ik heb users_system genomen en niet users_systemen wat remy schreef dus dat is het niet
Ja het is toch niet altijd wenselijk om je hele script te killen?
Denk bijvoorbeeld aan OOP?
Maar zowiezo, je wilt toch zelf regelen wat er precies gebeuren moet..

[edit]
Antwoord voor Remy!
[/edit]
@Remy: die() (of 'sterf') hoort niet thuis in een goed php-script, zo ga je in het dagelijks leven ook niet met elkaar om. Of roep jij ook de hele dag tegen vrienden, familie, de bakker, slager, etc. ook dat ze kunnen sterven wanneer er iets niet gaat zoals jij verwacht? Lijkt mij niet. Zo ga je op een website ook niet met je vrienden, familie, de bakker, slager, etc. om, die geef je een fraaie melding wanneer iets onverwachts gebeurt.

Komt nog eens bij dat het mislukken van een query of een query zonder resultaten, helemaal niet onverwacht is. Het is de gewoonste zaak van de wereld dat dingen mislukken of geen resultaat opleveren, anticipeer daar dan ook op.
Ik zal jullie commentaar in mijn volgende scripts mee opnemen! Bedankt!

Reageren