Message d'erreur

Eléphanteau du PHP | 16 Messages

24 mai 2009, 20:13

Bonjour,
Je viens de migre de serveur en passeur d'un serveur OVH avec un php4.X.X sous redhat 7.2 vers un VDS sivit sous Debian et un php 5.X.X, j'ai depuis un problème qui se pose, une erreur sur un de mes scripts voyez par vous même :

Code : Tout sélectionner

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web/perroquet.biz/ftp/www/annuaire/gestadmin/index.php on line 18
La ligne 18 correspond à ceci :

Code : Tout sélectionner

// Si les identifiants sont correctes if($row = mysql_fetch_array($result)) -------->Ligne 18 { // On ouvre une session session_start(); // On envoie les infos dedans $_SESSION['sess_email'] = $row['email_adm']; $_SESSION['sess_pass'] = $row['pass_adm']; // On fait une redirection vers la page profil header('location: ./espace.php?'.link_session()); } else { $error = 'E-mail et/ou mot de passe invalides'; } } else { $error = 'Identifiant non valides'; } }
j'ai mis la suite de la ligne 18 car je pense que la suite doit être impactée aussi, merci de bien vouloir m'aider à résoudre celà.

++

ViPHP
ViPHP | 2291 Messages

24 mai 2009, 20:15

Pourrais tu montrer la requete stp :idea:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 16 Messages

24 mai 2009, 20:22

Pourrais tu montrer la requete stp :idea:
Salut,
Merci pour ta rapidité et ton aide, voici la requête :

Code : Tout sélectionner

// Requete qui verifie le bon mail et pass $query = 'SELECT * FROM '.ADMIN_TABLE.' WHERE email_adm=\''.$email.'\' AND pass_adm=MD5(\''.$pass.'\')'; $result = mysql_query($query); // execute

Mammouth du PHP | 991 Messages

24 mai 2009, 20:27

Il faudrait que tu testes la requete dans PHPmydamin (en remplaçant les variables par leur valeur)

As tu testé si les variables sont corrects ? (correspondent bien a ta base de donnée)

Bye Hawk
DevOps, Symfony4, Hoa

ViPHP
ViPHP | 2291 Messages

24 mai 2009, 20:28

Bête idée peut-être mais regarde si les short_open_tag sont activer :!:
et / ou es tu certain des noms des champs :?:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 16 Messages

24 mai 2009, 21:06

Bête idée peut-être mais regarde si les short_open_tag sont activer :!:
et / ou es tu certain des noms des champs :?:
Je viens de vérifier et Short_open_tag est activé, pour ce qui est de la requête tout fonctionnait à merveille, et j'ai tout importé sans difficulté, le reste du script fonctionne à merveille, merci de votre aide, si qq un a une soluce je suis preneur !!

Mammouth du PHP | 991 Messages

24 mai 2009, 21:11

Les variables sont corrects ?

essaye cette syntaxe :
	$query = 'SELECT * FROM '.ADMIN_TABLE.' WHERE email_adm="'.$email.'" AND pass_adm=MD5("'.$pass.'")';
    $result = mysql_query($query); // execute
Bye Hawk

fait un echo $query; voir si tout est en ordre
DevOps, Symfony4, Hoa

Eléphanteau du PHP | 16 Messages

24 mai 2009, 21:38

:cry: :cry: toujours le même problème ligne 18, merci encore

ViPHP
ViPHP | 2291 Messages

24 mai 2009, 21:50

Remplace ADMIN_TABLE par le nom en dure et dis ns quoi :?:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphanteau du PHP | 16 Messages

24 mai 2009, 22:02

Remplace ADMIN_TABLE par le nom en dure et dis ns quoi :?:
Toujours le même problème :shock: merci encore

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mai 2009, 22:17

Plusieurs fois, des éléments très importants ont été avancés :
Il faudrait que tu testes la requete dans PHPmydamin (en remplaçant les variables par leur valeur)
fait un echo $query; voir si tout est en ordre
Tu as un problème, disant que le retour de l'exécution de la requête est invalide. En clair, cela signifie qu'il y a eu une erreur lors de l'exécution de la requête. Le problème est donc d'ordre SQL.

Pour commencer, fait afficher la requête, pour être sûr et certain du SQL qui est exécuté.
Ensuite, si tu ne vois pas apparaitre l'erreur, exécute là dans phpMyAdmin et lit le message d'erreur SQL affiché.

Si ces 2 étapes te montrent une erreur, mais que tu ne comprend pas, colle nous ici ces 2 éléments (requête SQL et code d'erreur SQL)

NB : quand tu fais un code PHP qui exécute du code SQL, il est de bon ton de vérifier le retour de l'exécution
$str_requete = "SELECT id, nom FROM client";
$o_result = mysql_query($str_requete);

if($o_result === false)
{
    echo "Une erreur est survenue. Merci d'en informer l'administrateur";
    // Ce if ne fonctionne que si tu développes sur ton poste.
    // Il ne sera exécuté que pendant le développement. Très important pour ne pas montrer tes erreurs une fois le site en production
    if( $_SERVER['HTTP_HOST'] == '127.0.0.1' )
    {
         echo "Erreur MySQL : ". mysql_error();
    }
}
else
{
    // Traitement normal
    while($a_result = mysql_fetch_assoc($o_result))
    {
        // ...
    }
}
Et, quand tu développes, tu peux même utiliser mysql_error() pour voir quel est le message d'erreur retourné par un mysql_query() quand il a échoué
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 991 Messages

24 mai 2009, 22:18

met : $result = mysql_query($query) or die(mysql_error());

et avant un : echo $query;

edit : Zut Grilled
DevOps, Symfony4, Hoa