Recherche php/mysql qui ne marche pas [Résolu/Fermé]

Signaler
Messages postés
225
Date d'inscription
lundi 17 janvier 2011
Statut
Membre
Dernière intervention
26 janvier 2012
-
Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
-
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

2 réponses

Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
225
Salut ...

Dans ta requete, essaye avec ça ... '%$recherche%'
Messages postés
225
Date d'inscription
lundi 17 janvier 2011
Statut
Membre
Dernière intervention
26 janvier 2012
49
Merci, mais malheureusement ça n'a pas fonctionné (la page de résultats est toujours vide).
Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
225
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%' 
Messages postés
225
Date d'inscription
lundi 17 janvier 2011
Statut
Membre
Dernière intervention
26 janvier 2012
49
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
Messages postés
2465
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
225
à toi de même :)