Problème avec mysql_fetch_assoc
Résolu/Fermé
Nicke
Messages postés
83
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
7 novembre 2009
-
3 juin 2009 à 19:23
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 3 juin 2009 à 22:06
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 3 juin 2009 à 22:06
3 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 juin 2009 à 20:08
3 juin 2009 à 20:08
c'est l'argument de mysql_fetch_assoc qui pose problème dans le cas ou tu as une seulle valeur
donc l'errue est avant
il nous faudrait le code de la requette
donc l'errue est avant
il nous faudrait le code de la requette
Nicke
Messages postés
83
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
7 novembre 2009
13
3 juin 2009 à 21:36
3 juin 2009 à 21:36
$mots = explode(" ", $recherche); //séparation des mots
$nombre_mots = count ($mots); //compte le nombre de mots
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
{
$valeur_requete .= '' . $and_ou_or . ' titre LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou de OR au début de la boucle
$selection_recherche = mysql_query("SELECT *
FROM recherche
WHERE ".$valeur_requete." AND WHERE forum_id='".$forum."' ORDER BY id DESC"); //requête avec le résultat de la boucle dedans
}
else
{
$mots = explode(" ", $recherche); //séparation des mots
$nombre_mots = count ($mots); //compte le nombre de mots
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
{
$valeur_requete .= '' . $and_ou_or . ' titre LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete, $and_ou_or); //suppression de AND ou de OR au début de la boucle
$selection_recherche = mysql_query("SELECT * FROM forum_topic WHERE ".$valeur_requete." ORDER BY id DESC"); //requête avec le résultat de la boucle dedans
}
$nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
if ($nombre_resultats == 0) //s'il n'y a pas de résultat
{
echo 'Votre recherche n\'a donné aucun resultat veuillez réitérer. <a href="recherche.php>Recommencer</a>';
}
else //il y a au moins un résultat
{
while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
{
$auteur = mysql_query("SELECT *FROM forum_membres WHERE membre_id='".$topic_createur."' ORDER BY id DESC");
echo '<strong>Nom du topic :</strong> ' . $resultats['topic_titre'] . '<br />
<strong>Auteur</strong> ' . $auteur['membre_pseudo'] . '<br />';
}
echo '<a href="recherche.php">recommencer</a>';
$nombre_mots = count ($mots); //compte le nombre de mots
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
{
$valeur_requete .= '' . $and_ou_or . ' titre LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou de OR au début de la boucle
$selection_recherche = mysql_query("SELECT *
FROM recherche
WHERE ".$valeur_requete." AND WHERE forum_id='".$forum."' ORDER BY id DESC"); //requête avec le résultat de la boucle dedans
}
else
{
$mots = explode(" ", $recherche); //séparation des mots
$nombre_mots = count ($mots); //compte le nombre de mots
$valeur_requete = '';
for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
{
$valeur_requete .= '' . $and_ou_or . ' titre LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
}
$valeur_requete = ltrim($valeur_requete, $and_ou_or); //suppression de AND ou de OR au début de la boucle
$selection_recherche = mysql_query("SELECT * FROM forum_topic WHERE ".$valeur_requete." ORDER BY id DESC"); //requête avec le résultat de la boucle dedans
}
$nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
if ($nombre_resultats == 0) //s'il n'y a pas de résultat
{
echo 'Votre recherche n\'a donné aucun resultat veuillez réitérer. <a href="recherche.php>Recommencer</a>';
}
else //il y a au moins un résultat
{
while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats
{
$auteur = mysql_query("SELECT *FROM forum_membres WHERE membre_id='".$topic_createur."' ORDER BY id DESC");
echo '<strong>Nom du topic :</strong> ' . $resultats['topic_titre'] . '<br />
<strong>Auteur</strong> ' . $auteur['membre_pseudo'] . '<br />';
}
echo '<a href="recherche.php">recommencer</a>';
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 juin 2009 à 22:06
3 juin 2009 à 22:06
un peu compliqué ton code
essayes comme ça:
essayes comme ça:
$and_ou_or="AND"; //je suppose que ça tu le récupéres par un choix du formulaire de recherche $mots = explode(" ", $recherche); //séparation des mots $nombre_mots = count ($mots); //compte le nombre de mots $requete = "SELECT * FROM recherche WHERE "; for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois { if($nombre_mots_boucle ==0){ $requete.= "titre LIKE '%".$mots[$nombre_mots_boucle]."%'"; }else{ $requete.= " ".$and_ou_or." titre LIKE '%".$mots[$nombre_mots_boucle]."%'"; } } $selection_recherche = mysql_query($requete) or die ("Pb avec la requette: ".$requete." ".mysql_error()); $nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche if ($nombre_resultats == 0) //s'il n'y a pas de résultat { echo 'Votre recherche n\'a donné aucun resultat veuillez réitérer. <a href="recherche.php>Recommencer</a>'; } else //il y a au moins un résultat { while($resultats = mysql_fetch_array($selection_recherche) ) //boucle affichant les résultats { // $auteur = mysql_query("SELECT *FROM forum_membres WHERE membre_id='".$topic_createur."' ORDER BY id DESC"); //ça c'est pas bon ! echo '<strong>Nom du topic :</strong> ' . $resultats['topic_titre'] . '<br />'; } echo '<a href="recherche.php">recommencer</a>'; //si tu veux afficher l'auteur correspondant à chaque titre il faut que tu fasses une requette en utilisant un autre champ