Recherche php/mysql qui ne marche pas

Résolu/Fermé
olivierrobins Messages postés 225 Date d'inscription lundi 17 janvier 2011 Statut Membre Dernière intervention 26 janvier 2012 - 23 mars 2011 à 09:54
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 23 mars 2011 à 12:34
Bonjour,

Je suis en train de créer une section "annuaire" sur un site pour un client, et j'ai un petit souci. J'ai fait un petit champ de formulaire pour pouvoir rechercher un terme dans les entrées de la base de données, et écrit le code php sur une page de résultats mentionnée dans le "action" du formulaire. Et ça ne me retourne aucun résultat. Ce qui est très bizarre, c'est que hier ça marchait, et je n'arrive pas à trouver ce que j'ai bien pu modifier pour que ça ne marche plus.

La page qui liste automatiquement toutes les entrées de la base de données (mise en page encore minable, c'est normal, je travaille d'abord sur le php et me pencherai sur le CSS quand ça marchera):
http://www.espritbains.com/annuaire_or_index.php

Si vous faites une recherche pour n'importe quel terme de cette page (construction, robins, contact, rue, ...) aucun résultat ne s'affichera, et je ne sais pas pourquoi.

extrait (forumlaire + php) de la page principale (codes d'accès sql remplacés par xxxx):
<p>
<form id="recherche_annuaire" method="POST" action="annuaire_or_search_results.php">
<input type="text" name="recherche" />
<input type="submit" name="submit" value="Recherche" style="padding:2px;" />
</form>
</p>
		
<?php


function tronquer($texte,$n)
{
	if (strlen($texte) > $n) 
	{     
		$texte = substr($texte, 0, $n);     
		$position_espace = strrpos($texte, " ");     
		$texte = substr($texte, 0, $position_espace);     
		$texte .= '...'; 
		return $texte;
	}
	else return $texte;
}


try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=xxxxxxxx;dbname=xxxxxxxxxx', 'xxxxxxxxxx', 'xxxxxxxxx', $pdo_options);
    
    $reponse = $bdd->query('SELECT * FROM membres');

    while ($donnees = $reponse->fetch())
    {
        echo '<div class="entree_annuaire">';
		echo '<h2 class="entree_annuaire_societe">' . $donnees['societe'] . '</h2>';
		echo '<p class="entree_annuaire_description">' . '</p>';
		echo 'Catégorie: ' . $donnees['categorie'] . '<br />';
		echo tronquer($donnees['description'],5);
		echo 'Adresse: <br />' . $donnees['numero_rue'] . ', ' . $donnees['rue'] . '<br />';
		echo $donnees['cp'] . ' ' . $donnees['ville'] . '<br />';
		echo $donnees['pays'] . '<br />';
		echo 'N° de téléphone' . $donnees['telephone'] . '<br />';
		echo 'N° de fax' . $donnees['fax'] . '<br />';
		echo 'Adresse e-mail' . $donnees['email'] . '<br />';
		echo '<img src="' . $donnees['logo_url'] . '" />' .'<br /></div>';
    }
    
    $reponse->closeCursor();
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>


Et extrait (php) de la page de résultats:
<?php

  //récupération du terme recherché:
	$recherche = $_POST['recherche'];
	
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=xxxxxxxx;dbname=xxxxxxxx', 'xxxxxxxx', 'xxxxxxxx', $pdo_options);
    
    $reponse = $bdd->query("SELECT * FROM membres WHERE categorie OR societe OR description OR ville OR pays LIKE '%".$recherche."%'");

    while ($donnees = $reponse->fetch())
    {
        echo 'Catégorie: ' . $donnees['categorie'] . '<br />';
		echo 'Société: ' . $donnees['societe'] . '<br />';
		echo 'Description: ' . $donnees['description'] . '<br />';
		echo 'Adresse: <br />' . $donnees['numero_rue'] . ', ' . $donnees['rue'] . '<br />';
		echo $donnees['cp'] . ' ' . $donnees['ville'] . '<br />';
		echo $donnees['pays'] . '<br />';
		echo 'N° de téléphone' . $donnees['telephone'] . '<br />';
		echo 'N° de fax' . $donnees['fax'] . '<br />';
		echo 'Adresse e-mail' . $donnees['email'] . '<br />';
		echo '<img src="' . $donnees['logo_url'] . '" />' .'<br />';
    }
    
    $reponse->closeCursor();
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>


L'erreur est probablement relativement bête et simple, mais je ne vois pas ce que ça peut être.

Merci d'avance, et si vous avez besoin d'infos supplémentaires dites-le moi.

Olivier

A voir également:

2 réponses

JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
23 mars 2011 à 12:12
Salut ...

Dans ta requete, essaye avec ça ... '%$recherche%'
0
olivierrobins Messages postés 225 Date d'inscription lundi 17 janvier 2011 Statut Membre Dernière intervention 26 janvier 2012 49
23 mars 2011 à 12:19
Merci, mais malheureusement ça n'a pas fonctionné (la page de résultats est toujours vide).
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 23/03/2011 à 12:24
Sinon, je suis pas sure que la syntaxe de ta requete soit correcte, alors essaye avec celle si pour voir ...

WHERE categorie LIKE '%$recherche%' OR societe LIKE '%$recherche%' OR description LIKE '%$recherche%' OR ville LIKE '%$recherche%' OR pays LIKE '%$recherche%' 
0
olivierrobins Messages postés 225 Date d'inscription lundi 17 janvier 2011 Statut Membre Dernière intervention 26 janvier 2012 49
23 mars 2011 à 12:31
Ahhh super, ça fonctionne!! Mille mercis, je sens que j'aurai encore passé de longues heures à me gratter la tête pour trouver le problème.

Bonne journée,
Olivier
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 23/03/2011 à 12:34
à toi de même :)
0