Erreur php mysql

Fermé
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 - 8 juil. 2008 à 21:36
 jlfoot - 3 nov. 2008 à 22:10
bonjour,
j'ai une erreur mysql php qui marque : mysql_fetch_array(): supplied argument is not a valid MySQL result resource


ma base de donnee est test


voici le code :




<html>
<body><form name="forumulaire">
<p>pseudo : <input type="text" name="pseudo" size="20"></p>
<p>password : <input type="password" name="passe" size="20"></p>
</form>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
//Je crypte $passe avec la fonction "sha1"
$passe = sha1($passe);
$nbre = mysql_query("SELECT COUNT(*) AS exist FROM connexion WHERE pseudo='$pseudo'");
$donnees = mysql_fetch_array($nbre);
if($donnees['exist'] != 0) //si le pseudo existe
{
$quete = mysql_query("SELECT * FROM connexion WHERE pseudo='$pseudo'");
$infos = mysql_fetch_array($quete);
if($passe == $infos['passe'])
{
include("verification.php");
}
else //Si ce n'est pas le bon couple pseudo/mdp
{
echo 'Vous n\'avez pas rentré les bons identifiants';
}
}?>
</body>
</html>






merci de me repondre et surtout vous pouvez me faire des remarque :-)


salut

16 réponses

Ton erreur se trouve ci-dessous :

mysql_connect("localhost", "root", "");
mysql_select_db("test");

Ta base de donnée est en local "localhost"
Pas étonnant que tu as ce message d'accès à ta base de donné
Il faut mettre si tu es hébergé chez free par exemple
"sql.free.fr" lenomdelabase le mot de passe
et le nom de la base en bas "test" par le vrai nom et cela
devrait marcher
1
thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 18
8 juil. 2008 à 23:04
Quand on créé une connexion, il faut affecter cette connexion à une variable pour créer une référence en mémoire vers la connexion créée.

Il faut donc faire :

$link = @mysql_connect( /* les paramètres qui vont bien pour se connecter */);

Ce lien va servir à chaque appel/traitement vers la base de données.
Il faut ensuite passer la référence vers la connexion (cad $link) à chaque appel de fonction mysql.
Exemple:
@mysql_select_db("mabase", $link);

En l'occurence, tout est dans ton message d'erreur :
Etant donné qu'il n'y a pas de référence vers la connexion mysql en mémoire, elle est purement et simplement supprimée au bout d'un certain temps (qui varie en fonction du système d'exploitation)
La fonction mysql_fetch_array() ne trouve pas de connexion mysql, donc renvoie une erreur...

Bonne soirée !
1
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
8 juil. 2008 à 21:50
desole mais j'ai pas vraiment compris la parce que tu mais autre script par exemple les news ou le minichat ca marche comme des roulette alors que j'utilise une base de donnee

tu peus me redire
0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
9 juil. 2008 à 11:14
javais essayer mercie !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
9 juil. 2008 à 11:17
javais essayer mercie !!
0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
9 juil. 2008 à 12:34
voici le code :
<html>
<body><form name="forumulaire">
<p>pseudo : <input type="text" name="pseudo" size="20"></p>
<p>password : <input type="password" name="passe" size="20"></p>
</form>
<?php
$link = @mysql_connect("localhost", "root", "");
@mysql_select_db("test", $link);
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
//Je crypte $passe avec la fonction "sha1"
$passe = sha1($passe);
$nbre = mysql_query("SELECT COUNT(*) AS exist FROM connexion WHERE pseudo='$pseudo'");
$donnees = mysql_fetch_array($nbre);
if($donnees['exist'] != 0) //si le pseudo existe
{
$quete = mysql_query("SELECT * FROM connexion WHERE pseudo='$pseudo'");
$infos = mysql_fetch_array($quete);
if($passe == $infos['passe'])
{
include("verification.php");
}
else //Si ce n'est pas le bon couple pseudo/mdp
{
echo 'Vous n\'avez pas rentré les bons identifiants';
}
}?>
</body>
</html>


ca ne marche quand meme pas :-(

erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\inscription\connexion.php on line 14

repondez moi mercie
0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
9 juil. 2008 à 12:44
enfait je crois que j'avais oublierde mettre ma base de donnee :-0
salut
0
thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 18
9 juil. 2008 à 13:02
Précédemment énoncé, je le répète un peu plus fort :
Il faut ensuite passer la référence vers la connexion (cad $link) à chaque appel de fonction mysql

Toutes les fonctions qui commençent par mysql_ ... doivent recevoir la référence de la connexion active.
0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
10 juil. 2008 à 11:20
salut
un peu plus fort... euh
j'ai que 10ans je comprend pas ce que tu me dis (cad &link)...
tu peut me faire un exemple
s'il te plait
A++++++
0
thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 18
10 juil. 2008 à 14:25
Bonjour benji,

Ton code modifié de manière à illustrer ce que je t'ai dit.
A vérifier, l'ordre des paramètres dans les différents appels de fonctions mysql.

A vérifier aussi l'appel dans ton formulaire...
<form name="">


Il faudrait au moins ceci pour qu'un formulaire fonctionne :
<form name="" action="traitements.php" method="post">


Où l'attribut action contient le fichier qui va faire les traitements nécessaires
et l'attribut method contient le mode de transmission des informations (GET ou POST principalement).
D'autres attributs existent, et peuvent être importants... mais ils varient en fonction du contexte de l'application que tu dois développer.

Pour information, le caractère arobase @ devant les fonctions mysql sert uniquement à ôter les messages d'erreur pouvant survenir à l'execution. Pour le développement, il est donc interressant de ne pas les mettre.
Dans un environnement de production, une seule référence à un système de fichiers peut être la source d'une faille de sécurité, c'est pourquoi on désactive ces messages d'erreurs (ou on utilise des handlers spécifiques développés pour gérer ce type d'erreurs, sans rien afficher à l'écran qu'un message à dimension humaine dy style : "Un problème est survenu lors de la récupération des données dans la base."

Ca ne risquait pas de marcher si ton serveur de base de données (mysql) n'était pas démarré.
Windows -> Services -> MySQL -> Start


L'âge est une variable que certains font varier de manière aléatoire. Par internet, les assertions ne sont pas des faits. Et la confiance reste l'histoire de rencontres dans le monde réel.
<html> 
<body><form name="forumulaire"> 
<p>pseudo : <input type="text" name="pseudo" size="20"></p> 
<p>password : <input type="password" name="passe" size="20"></p> 
</form> 
<?php 
$link = @mysql_connect("localhost", "root", ""); 
@mysql_select_db("test", $link); 
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']), $link); 
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']), $link); 
//Je crypte $passe avec la fonction "sha1" 
$passe = sha1($passe); 
$nbre = mysql_query($link, "SELECT COUNT(*) AS exist FROM connexion WHERE pseudo='$pseudo'"); 
$donnees = mysql_fetch_array($nbre, $link); 
if($donnees['exist'] != 0) //si le pseudo existe 
{ 
$quete = mysql_query($link, "SELECT * FROM connexion WHERE pseudo='$pseudo'"); 
$infos = mysql_fetch_array($quete,$link); 
if($passe == $infos['passe']) 
{ 
include("verification.php"); 
} 
else //Si ce n'est pas le bon couple pseudo/mdp 
{ 
echo 'Vous n\'avez pas rentré les bons identifiants'; 
} 
}?> 
</body> 
</html> 
0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
10 juil. 2008 à 19:07
mercie
0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
11 juil. 2008 à 11:45
mais cela mais toujours a la ligne 14 waring : mysql_feth...
0
thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 18
11 juil. 2008 à 14:29
1. Le nom de ton formulaire, tu dois faire les modifications au début de ton code (que j'ai reposté sans corriger à ce niveau, étant donné que les corrections sont évidentes)...
En l'état, cela ne risque pas de marcher... et ajoutes-y les attributs dont je t'ai parlé... name="" action="" et method="" ...

2. la documentation, ça peut servir des fois ... une complète, téléchargeable et gratuite se trouve sur ce site pas tip top, mais c'est pas mal pour commencer : http://www.nexen.net et tu cherches la doc mysql et la doc php.
Tu les télécharges, et tu les lis tranquillement....

3. après, tu sauras pourquoi ça ne marche pas, ton mysql_fetch_array()



0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
16 juil. 2008 à 11:32
je vais voir sur le site que tu ma donner :-)
et je vais le modifier =)
salut
0
benjy56 Messages postés 150 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 30 septembre 2009 95
23 juil. 2008 à 11:52
ça ne marche toujours pas :(
mais j'ai trouve un notre sujet http://www.commentcamarche.net/forum/affich 7542326 message d erreur#dernier
mercie quand meme.
0
Ton erreur se trouve ci-dessous :


remplace donc ceci :
mysql_connect("localhost", "root", "");
mysql_select_db("test");

par
mysql_connect("ladressedetabasededonnee", "lenomdelabasededonnee", "lemotdepassedelabasededonnee");
mysql_select_db("lenomdetabasededonnee");

cela devrait marcher. Toi seul et ton administrateur de réseau connait ces informations importantes pour te connecter à ta base de donnée
0