Une erreur mysql_fetch_assoc()

Résolu
squallio Messages postés 4 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 16 avril 2010 - 14 avril 2010 à 18:22
squallio Messages postés 4 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 16 avril 2010 - 16 avril 2010 à 08:34
Bonjour à tous est à toutes.

Je vous expose mon probléme avec ce script :







Rechercher un poste












Le slogan par la !










Menu Général


[index.php Accueil]






Menu Connecxion


[ Deconnectez-vous !]
[pwd_lost.php Mot de passe perdu ?]
[change_pwd.php Changer mot de passe.]






Menu Recherche


[recherche.php Rechercher un poste.]
[ajout.php Ajouter un poste.]
[modifier.php Modifier un poste.]






Rechercher un poste de travail.



----

Rechercher par systéme d'exploitation,

----, Rechercher par imprimante:

----, Rechercher par login:

----,
----






[recherche.php Nouvelle recherche]



1 résultat trouvé dans la base.




Informations poste

ID |
N° du poste |
N° d'écran |
N°prise |
Bâtiment |
Etage |
Porte |
os |





Informations imprimante

ID |
Nom imprimante |
Bâtiment |
Etage |
Couloir |
Marque |





Informations utilisateurs

ID,
Login,
Password,
Nom utillisateur,
Prenom utillisateur,
Email,
Service,
Rang,

3 réponses

JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
15 avril 2010 à 15:09
Perso j'utilise systématiquement
"or die(mysql_error()) après mes requetes.

Si certains vont me huer (problèmes de sécurité à cause de l'exposition de la structure de ma requete lors d'une erreur), ça me rend d0'innombrables services.

Exemple:
<?php
[...]
$resultat = mysql_query($requete,$link)or die(mysql_error());
?>
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
14 avril 2010 à 18:59
Salut,

A vrai dire je n'ai que parcouru, mais :
expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-5.3.2\www\recherche.php on line 156

=> la fonction attend une ressource et tu lui passes un bit ... sans doute un false.
On remonte donc :
$resultat=mysql_query($requete) <== retourne sous doute false
...
$requete= "SELECT * FROM `info_poste`,`imprimante`,`utilisateurs` WHERE (`info_poste.os` LIKE "%$mot1%") OR (`imprimante.nom_im` LIKE "%$mot2%") OR (`utilisateurs.login_utilisateur` LIKE "%$mot3%")";
}
... on arrête de remonter histoire de ne pas se prendre la tête ... c'est tellement plus simple de profiter de l'affichage des erreurs de PHP qu'il serait dommage de s'en passer, un petit :
//execute la recherche
  if (false $resultat mysql_query($requete)) {
    die('erreur de la requête $requete :
'.$requete.'
l\'erreur est :
'.mysql_error());


Ce que je cherche à te montrer là n'est pas de la fainéantise (même si pour le coup je suis suis fatigué et n'ai pas pris le temps de lire intégralement le code) mais simplement un reflex de débogage qui fait gagner beaucoup de temps.

D'après le peu que j'ai lu, tu sembles avoir pas mal "d'erreur" dans ton code :
- tu ne testes pas les données POST provenant de l'utilisateur
- foreach($tab_mots as $mot)
{
$requete= "SELECT * FROM `info_poste`,`imprimante`,`utilisateurs` WHERE (`info_poste.os` LIKE "%$mot1%") OR (`imprimante.nom_im` LIKE "%$mot2%") OR (`utilisateurs.login_utilisateur` LIKE "%$mot3%")";
}
=> la variable $requete sera toujours égale au dernier élément du tableau $tab_mots, ce qui ne semble pas être ton but
- etc ... etc ...

Bref, commence par ce reflex qui consiste à entrer dans un contexte de débogage, en étudiant les messages d'erreur, en affichant les contenus des variables incriminées (echo, print_r, var_dump, ...) et en "blindant" le script de test (if (isset($_POST['trucBidule']) ...)


Cordialement,

Kohntark -
0
squallio Messages postés 4 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 16 avril 2010
16 avril 2010 à 08:34
Mon code est plein de faute est effectivement il me faut utiliser :

<?php
[...]
$resultat = mysql_query($requete,$link)or die(mysql_error());
?>


Mon erreur est corrigé c'était vraiment un oubli minable :)

<?php mysql_select_db('NomDeMaTable'); ?>


d'autre part je vais changé de tactique pour faire ce que je souhaite et si vous voulez ( est si c'est fonctionnel ) je viendrai le posté ici.

Merci pour vos réponses !
0
Rejoignez-nous