Probleme moteur de rechercher

Résolu/Fermé
Valitox - 15 mars 2012 à 21:02
 Nanou - 4 avril 2012 à 05:16
Bonjour,

Je suis en train de faire un moteur de recherche pour mon siteweb et ça fait deux jours que j'ai pas trouvé l'erreur, quelqu'un peut m'aider?
Merci d'avance

Voici l'erreur

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.0\www\mg\recherche\recherche.php on line 86

et voici mon la page recherche.php

<?php
mysql_connect('localhost','root','');
mysql_select_db('dico');
//On determine l'expression a rechercher
if(isset($_GET['recherche']))
{
$rec = htmlentities($_GET['recherche']);
}
else
{
$rec = 'Artiste titre';
}
//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, artiste, titre FROM parole 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 .= ' titre 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 .= ' titre LIKE "%'.$mot.'%" AND';
}
$req .= ' 1=1';
}
else
{//ayant l'expression exacte dans leurs informations
$req .= 'titre 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 à 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és: <input type="checkbox" name="surligner" value="true" <?php if($surligner){echo 'checked="checked"';} ?> /><br />
<input type="submit" value="Rechercher" />
</form>
<h2>Résultats</h2>
<table>
<tr>
<th>Identifiant</th>
<th>Artiste</th>
<th>Titre</th>
</tr>
<?php
//On affiche les resultats
while($dnn = mysql_fetch_array($requete))
{
?>
<tr>
<td><?php echo $dnn['id']; ?></td>
<td><?php echo $dnn['artiste']; ?></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['titre']);//On surligne l'expression exacte
}
else
{
echo preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '<strong>$1</strong>', $dnn['titre']);//On surligne les mots cles de la recherche
}
}
else
{
echo $dnn['titre'];//On ne surligne pas
}
?></td>
</tr>
<?php
}
?>
</table>

3 réponses

Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 102
15 mars 2012 à 21:13
ta requête me semble fort mal présentée : https://www.php.net/manual/fr/function.mysql-fetch-array.php

il semble manquer le 2eme argument
1
Merci pour le lien j'ai bien lu ce qui est écrit ... "il me semble manquer le 2eme argument" qu'est-ce que tu veux dire par ca? Tu peux clarifier un peu stp
0
Le message d'erreur retourné par PHP signifie visiblement que tu as un souci de syntaxe dans la requête SQL $req. Je te propose de modifier cette ligne de ton code :
$requete = mysql_query($req);

par celle-ci :
$requete = mysql_query($req)or die(mysql_error());
0
Merci à vous ReDloG et Templier Nocturne j'ai résolu le probleme au fait grace à vos aides encore merci beaucoups les gars
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 102
15 mars 2012 à 23:42
ben :

Liste de paramètres

result

La ressource de résultat qui vient d'être évaluée. Ce résultat vient de l'appel à la fonction mysql_query().


result_type

Le type de tableau à récupérer. C'est une constante qui peut prendre les valeurs suivantes : MYSQL_ASSOC, MYSQL_NUM, et MYSQL_BOTH.


il te faut donc deux arguments : result et result type


donc ta requête devrait ressembler à :
ligne 86>> while($dnn = mysql_fetch_array($requete, MYSQL_BOTH))
1
Bah il affiche toujours la même erreur à la ligne 86

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.0\www\mg\recherche\recherche.php on line 86
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 102
15 mars 2012 à 21:03
c'est quelle ligne la 86 ?
0
ligne 86>> while($dnn = mysql_fetch_array($requete))
0
votre table est isolée de la base Mr esaaye de la relier avec n'importe quelle autre table
0