Problème "fetch" dans un fichier dauthentification
cs_namoun
Messages postés10Date d'inscriptionmardi 16 août 2011StatutMembreDernière intervention29 août 2011
-
16 août 2011 à 13:02
yaosteph
Messages postés5Date d'inscriptionlundi 13 juin 2011StatutMembreDernière intervention20 octobre 2011
-
15 oct. 2011 à 17:04
Salut tout le monde. j ai un problème au niveau de la création d'un espace d'authentification sur mon site web et on me génère toujours l erreur suivante :
[b]Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Al_omrane_web_site_\GestionConges.php on line 43/b
mon code source est le suivant:
<?php
include('connexion.php');
?>
<!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=utf-8" />
<title>Connection</title>
</head>
<?php
//Si lutilisateur est connecte, on le deconecte
if(isset($_SESSION['username']))
{
//On le deconecte en supprimant simplement les sessions username et userid
unset($_SESSION['username'], $_SESSION['userid']);
?>
Vous avez bien été déconnecté.
[Accueil.php Accueil]
<?php
}
else
{
$ousername = '';
//On verifie si le formulaire a ete envoye
if(isset($_POST['username'], $_POST['password']))
{
//On echappe les variables pour pouvoir les mettre dans des requetes SQL
if(get_magic_quotes_gpc())
{
$ousername = stripslashes($_POST['username']);
$username = mysql_real_escape_string(stripslashes($_POST['username']));
$password = stripslashes($_POST['password']);
}
else
{
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
}
//On recupere le mot de passe de lutilisateur
$req = mysql_query('select user_pwd,id_user from user where user_name="'.$username.'"');
$dn = mysql_fetch_array($req);
//On le compare a celui quil a entre et on verifie si le membre existe
if($dn['password']==$password and mysql_num_rows($req)>0)
{
//Si le mot de passe es bon, on ne vas pas afficher le formulaire
$form = false;
//On enregistre son pseudo dans la session username et son identifiant dans la session userid
$_SESSION['username'] = $_POST['username'];
$_SESSION['userid'] = $dn['id'];
?>
Vous avez bien été connecté. Vous pouvez accéder à la demande de congès.
[demande_conges.php demande congegrave;s]
<?php
}
else
{
//Sinon, on indique que la combinaison nest pas bonne
$form = true;
$message = 'La combinaison que vous avez entré n\'est pas bonne.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '
'.$message.'
';
}
//On affiche le formulaire
?>
<form action="GestionConges.php" method="post">
Veuillez entrer vos identifiants pour vous connecter:
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 16 août 2011 à 13:25
Le message te dit qu'il faut fournir une ressource, à savoir un résultat de requete qui soit correct. Ce qui n'a pas l'air d'être le cas..
Donc à voir.. avant ton erreur.
S.
//On recupere le mot de passe de lutilisateur
$req = mysql_query('select user_pwd,id_user from user where user_name="'.$username.'"');
$dn = mysql_fetch_array($req);
cs_namoun
Messages postés10Date d'inscriptionmardi 16 août 2011StatutMembreDernière intervention29 août 2011 16 août 2011 à 16:04
Merci cod57 pour ton aide . je viens de faire ces rectifications , je n obtient plus le meme message d erreur mais plutot
" No database selected"
alors que je suis sure que j ai établi la cnnexion avec la base de données
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 16 août 2011 à 16:16
Rha !! Les single-quotes ou double-quotes.. c'est la plaie..
Rien de tel que d'opter intégralement pour les single-quotes avec des backslashes pour échapper dans une chaine de caractères..
Mais tu as remarqué que l'erreur était avant ton fetch..
S.
cs_namoun
Messages postés10Date d'inscriptionmardi 16 août 2011StatutMembreDernière intervention29 août 2011 16 août 2011 à 16:45
quand j ai remplacé "mysql_query" avec "PDO::query" et j'ai enlevé le die... j'ai une erreur:
Fatal error: Non-static method PDO::query() cannot be called statically in C:\wamp\www\Al_omrane_web_site_\GestionConges.php on line 42
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 16 août 2011 à 17:55
Salut Cod57,
Qu'est ce qui te choque au juste dans la requête (message du mardi 16 août 2011 à 14:00:00) ?
Même si j'aurai plutôt tendance à l'écrire comme toi elle est syntaxiquement valide, non ?
@namoun
N'oublies pas non plus de supprimer toutes les fonctions mysql_* (mysql_real_escape_string(), ...)
Pour ce genre de requête préfère les requêtes préparées (voir la doc des méthodes PDO prepare() et PDO execute()
Et si je peux me permettre un conseil : ne recopie jamais du code trop facilement donné sans le comprendre.
Comprendre par soi même est le meilleur moyen d'avancer.