[RESOLU] moteur de recherche

Petit nouveau ! | 5 Messages

16 mars 2015, 12:52

bonjour, étant débutant je viens vers vous, car je bloque !!!

je dois réaliser un moteur de recherche sur une base de donnée concernant des villes.
Ma page n'affiche pas le résultat, même quand la ville recherché est enregistrée dans ma BdD.
Il y a 2 tables utilisées pour cette recherche : villes (ville_id, ville_nom) et user_search (user_id, ville_id).
J'ai besoin de user_search pour enregistrer qui à fait quoi comme recherche.
<?php
	//traitement de la requête et récupération des variables
	if(isset($_GET['submit_form']))
	{
		$ville_nom = $_GET['ville_nom'];
		//requête
		if(empty($ville_nom))
		{
			$message ='<p class="error">Vous devez saisir le nom d\'une ville.</p>';
		}
		else
		{
			//recherche de la ville avec LIKE
				$result = $mysqli->query('SELECT ville_nom FROM user_search INNER JOIN villes WHERE user_search.ville_id = villes.ville_id LIKE "%'.$ville_nom.'%"');
				$row = $result->fetch_array();
				//$row[0] contient la valeur retournée par le count() de Mysql
					if($row[0] > 0)
					{
						$message = '<p class="error">Un résultat.</p>';
					}
					else
					{
						$message = '<p class="error">Aucun résultat.</p>';
					}
		}
	}
?>
<p>bonjour <?php echo $user_nom; ?>, <br><br> faites votre recherche.</p>

<div>
<hr/><?php if(isset($message)) echo $message ?><hr/>

</div>

<div>
  <form method="get">
  	<input type="search" name="ville_nom" />
    <input type="submit" name ="submit_form" value="Rechercher" />
    </form>
</div>
Merci à l'âme charitable qui pourra me venir en aide. :priere:

Mammouth du PHP | 2278 Messages

16 mars 2015, 13:11

Bjr,
IL serait utile de joindre la structure des tables.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 5 Messages

16 mars 2015, 13:19

Merci, voici mes deux tables concernées

table villes
ville_ id INT(11) AUTO-INCREMENT
ville_nom VARCHAR(15)

table user_search
user_id tinyint(250) AUTO-INCREMENT
ville_id int(11)

Mammouth du PHP | 688 Messages

16 mars 2015, 15:52

quel est le contenu de ces tables ?

phpmyadmin indique qu'une requete de ce type : SELECT ville_nom FROM user_search INNER JOIN villes WHERE user_search.ville_id = villes.ville_id LIKE "%'.$ville_nom.'%"
est valide ?

Petit nouveau ! | 5 Messages

16 mars 2015, 16:16

oui, phpadmin m'indique que la requête est valide.

la table "villes" contient le nom de ville (paris, lille, marseille,...) avec un id (id 1 paris, id 2 lille...)
et la table "user_search" contient l'id de l'utilisateur qui c'est identifié sur la page précédente et la recherche qu'il a effectué.

J'ai créée un formulaire de recherche où l'utilisateur indique la ville qu'il veut rechercher. Ensuite il est indiqué le nom de la ville trouvé ou l'absence de résultat.

Avec mon code actuel, il m'est juste indiqué deux choses "Vous devez saisir le nom d'une ville." (normal quand rien n'est saisi) ou "Aucun résultat" (même quand la ville se trouve dans la BdD.)

Je me répète, je suis un débutant en PHP et j'ai beaucoup de mal à m'en sortir.
Help me

Petit nouveau ! | 5 Messages

16 mars 2015, 18:38

up svp

Petit nouveau ! | 5 Messages

16 mars 2015, 21:44

Bon, en fin de compte j'ai opté pour une requête avec COUNT, ça à l'air de fonctionner.

Si quelqu'un a une solution à mon problème avec LIKE, je suis preneur pour ne pas me coucher totalement idiot :lol:


Le PHP c'est bien, mais c'est compliqué quand on débute !!!