Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 11h21   #1
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Par défaut Problème de script PHP/MySQl

Bonjour à tous, je me présente, je suis jeune développeur, infographiste & webdesigner, j'ai un petit problème avec un script que j'ai pu glâner sur le net, script mis en oeuvre pour un petit projet, créer un moteur de recherche qui va chercher des données au sein d'une BDD.

Alors voici mon problèlme, le script fonctionne plus ou moins bien, sauf que à l'affichage, une erreur PhP apparaît :

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\php form\lebontest.php on line 225.

Alors voilà, après maintes heures de recherches, je m'en remet à vous, si quelqu'un pourrais essayer de voir où se trouve mon erreur...
Je suis navré d'en devoir arriver là, mais je suis un peu desespéré.

Mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
mysql_connect('localhost','root','');
mysql_select_db('tests');
//On determine l'expression a rechercher
if(isset($_GET['recherche']))
{
        $rec = htmlentities($_GET['recherche']);
}
else
{
        $rec = 'php MYSQL';
}
//On determine le type de recherche
if(isset($_GET['type']))
{
        if($_GET['type']=='un')//Un des mots
        {
                $type = 1;
        }
        elseif($_GET['type']=='tout')//Tout les mots
        {
                $type = 2;
        }
        else//L'expression exacte
        {
                $type = 3;
        }
}
else
{
        $type = 1;//type par defaut: L'expression exacte
}
//On determine si on doit surligner les mots dans les resultats
if(!isset($_GET['surligner']) or $_GET['surligner']!='true')
{
        $surligner = false;
}
else
{
        $surligner = true;
}
//On dertermine les identifiants, les noms et les informations des utilisateur
$req = 'SELECT id, username, email FROM forumusers WHERE ';
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" OR';
        }
        $req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" AND';
        }
        $req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
        $req .= 'email LIKE "%'.$rec.'%"';
}
//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc';
$requete = mysql_query($req);
//Le formulaire de recherche
?>
<form action="" method="get">
Expression &agrave; rechercher: <input type="text" name="recherche" value="<?php echo $rec; ?>" /><br />
Type de recherche: <input type="radio" name="type" value="un"<?php if($type==1){echo 'checked="checked"';} ?> /> Un des mots <input type="radio" name="type" value="tout"<?php if($type==2){echo 'checked="checked"';} ?> /> Tout les mots <input type="radio" name="type" value="exacte"<?php if($type==3){echo 'checked="checked"';} ?> /> Expression exacte<br />
Mettre en gras les mots recherch&eacute;s: <input type="checkbox" name="surligner" value="true" <?php if($surligner){echo 'checked="checked"';} ?> /><br />
<input type="submit" value="Rechercher" />
</form>
<h2>R&eacute;sultats</h2>
<table>
        <tr>
                <th>Identifiant</th>
                <th>Nom</th>
                <th>Informations</th>
        </tr>
<?php
//On affiche les resultats
// LIGNE 225
 while($dnn = mysql_fetch_array($requete))
{
?>
        <tr>
                <td><?php echo $dnn['id']; ?></td>
                <td><?php echo $dnn['username']; ?></td>
                <td><?php
if($surligner)//Si il faut surligner les mots, on les surligne
{
        if($type==3)
        {
                echo preg_replace('#('.preg_quote($rec).')#i', '<strong>$1</strong>', $dnn['email']);//On surligne l'expression exacte
        }
        else
        {
                echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '<strong>$1</strong>', $dnn['email']);//On surligne les mots cles de la recherche
        }
}
else
{
        echo $dnn['email'];//On ne surligne pas
}
?></td>
        </tr>
<?php
}
?>
</table>


merci beaucoup. (je me permet de vous indiquer la ligne mentionnée dans lanl'erreur, à savoir la 225)

Merci et à bientot !

Luky
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h29   #2
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

as tu vérifié la fiabilité de ta requête ? si non fais un :


et exécutes ta requête dans phpmyadmin
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h44   #3
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
je viens de faire
tout en bas de mon script, et ce message s'affiche

"SELECT id, nom, infos FROM utilisateurs WHERE infos LIKE "%homme%" AND 1=1 order by id asc"

mais toujours sour le même mesage d'erreur par contre
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h51   #4
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
et cette requête dans phpmyadmin te renvoie des résultats ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h57   #5
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
comment ça ? ou puis-je effectuer cette requête dans phpmyadmin ?

pas dans l'editeur de commandes SQL quand même ...
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h01   #6
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
oui,

c'est uniquement pour vérifier qu'elle ne renvoie pas d'erreur

ton mysql_fetch_array ne reçoit pas de resource apparemment ce qui signifie peut être que ta requête te renvoie autre chose qu'une ressource...
peut être reçoit il false 'given boolean'
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h08   #7
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Alors, sous phpmyadmin, la requête me renvoi vers les bons resultats, alors je ne vois vraiment pas d'ou peut venir cette erreur.....

H.E.L.P !
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h11   #8
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
dans le code que tu donnes :

tu as cette requête :

Code :
SELECT id, username, email FROM forumusers WHERE...
et quand tu l'as affiché tu as

Code :
SELECT id, nom, infos FROM utilisateurs WHERE infos LIKE "%homme%" AND 1=1 order by id asc
est ce normal ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h20   #9
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Oui je pense car a ce que je comprend le message qu eme donne l'erreur, c'est la concaténation de :
Code :
1
2
3
4
5
6
7
8
9
10
$req = 'SELECT id, nom, infos FROM utilisateurs WHERE ';
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' infos LIKE "%'.$mot.'%" OR';
        }
        $req .= ' 1=0';
}
il me semble, mais je peux me tromper, toujours est-il que je ne comprend pas pour l'erreur me parle de données booléennes, alors que dans ma BDD il n'y a que des "TEXT/INT/VARCHAR" .....

et j'oubliais, la je développe en local... sur Wamp si sa peut aider...

en tout cas merci à toi syl2095
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h24   #10
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
et si tu fais un echo $requete, tu reçois bien un resource #id ... ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h28   #11
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Apparement pas, si je fait un

en fin de script, rien ne se passe, rien ne s'affiche.....
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h31   #12
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
et en commentant les tests comme ça :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
/*
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" OR';
        }
        $req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" AND';
        }
        $req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
        $req .= 'email LIKE "%'.$rec.'%"';
}
//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc';*/
 
$requete = mysql_query($req);
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h39   #13
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
j'essaie ça après manger, en tout cas un grand merci.... reste dans le coin si sa en te dérange pas, que je poste ma reponse ....

j'espère que ce code fonctionnera ...
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h10   #14
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Me revoilà, alors, j'ai donc essayé la modification de script comme tu me l'a conseillé, et là, l'erreur est la même, sauf qu'elle est identifié en ligne 126
soit, une ligne en dessous.

--------------------------------------------
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" OR';
        }
        $req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" AND';
        }
        $req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
        $req .= 'email LIKE "%'.$rec.'%"';
}
//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc';*/
$requete = mysql_query($req);


résultat :


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\php form\lebontest.php on line 226
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h14   #15
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
au temps pour moi !

comme ça :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
 
$req = 'SELECT id, nom, infos FROM utilisateurs';
 
/*
if($type==1)
{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" OR';
        }
        $req .= ' 1=0';
}
elseif($type==2)
{//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//En separre lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' email LIKE "%'.$mot.'%" AND';
        }
        $req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
        $req .= 'email LIKE "%'.$rec.'%"';
}
//Les utilisateur seront ranges par identifiant en ordre croissant
$req .= ' order by id asc';*/
$requete = mysql_query($req);
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h23   #16
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Même résultat.

mais bizarrement, la ligne est toujours la 226
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h26   #17
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Code php :
1
2
3
 
$requete = mysql_query($req);
echo $requete;

te donne quoi ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h28   #18
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Ah un changement de ligne, la 228, à savoir :
Code :
1
2
3
4
5
6
 
<?php
//On affiche les resultats
while($dnn = mysql_fetch_array($requete))
{
?>
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 14h43   #19
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
à tout hasard, es tu bien connecté à la base ?

Code php :
1
2
3
 
 
mysql_connect("localhost", "root", "") or die("Impossible de se connecter : " . mysql_error());

sinon

quelle est la structure de ta table utilisateurs ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 15h00   #20
Invité régulier
 
lucas bonomi
Inscription : décembre 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : lucas bonomi
Âge : 21
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2010
Messages : 86
Points : 7
Points : 7
Envoyer un message via MSN à lukyVJ Envoyer un message via Skype™ à lukyVJ
Il semble bien que je soit connecté à ma base de donnée :

Code :
1
2
mysql_connect('localhost','root','');
mysql_select_db('tests');
pour la structure de la table utilisateur, je te donne le 'code' SQL, ou un simple screenshot suffira ?
lukyVJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h56.


 
 
 
 
Partenaires

Hébergement Web