squallio
Messages postés4Date d'inscriptionsamedi 20 mars 2010StatutMembreDernière intervention16 avril 2010
-
14 avril 2010 à 18:22
squallio
Messages postés4Date d'inscriptionsamedi 20 mars 2010StatutMembreDernière intervention16 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,
JulSoft
Messages postés354Date d'inscriptiondimanche 3 juin 2001StatutMembreDernière intervention11 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.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 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']) ...)