Poblème Création d'un petit module recherche

Résolu/Fermé
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013 - 22 août 2009 à 04:09
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013 - 25 août 2009 à 11:41
Bonjour,
Voila comme dit dans le titre j'essaye de créer un petit module de recherche très simple.
Je débute un peu en php donc je rencontre quelque difficulté.

Donc j'ai pensé à quelques chose qui est peut être bon ou pas bon mais je n'arrive pas à l'appliquer. Je m'explique avec le code:

<?php

mysql_connect("localhost", "root", "xxx");
mysql_select_db("nom_db");

echo "<form method=\"get\">
<input name=\"$titre\" type=\"text\"/>
<input type=\"submit\" value=\"rechercher\" name=\"submit\" />
</form>";

$reponse = mysql_query("SELECT * FROM lien_film WHERE titre='$titre' ");

while ($donnees = mysql_fetch_array($reponse) )
{
?>

<p><?php echo $donnees['titre']; ?></p>

<?php
}
?>

Le but étant de trouvé un film répertorié dans ma base de donnée en entrant le titre dans le petit formulaire.
Donc dans un premier temps, on remplie le formulaire qui ne comporte qu'un seul champ: titre.

Si je suis mon idée , je voudrais que le titre écris et recherché par l'utilisateur soit égal à $titre

et ensuite je fini par recherché le titre = $titre dans ma base de donnée correspondant.

Mais je en vois pas ou ça bloque en faite.

Merci d'avance de votre aide.

PS: Je commence seulement par chercher le titre dans une seul base de donné mais mon but final et de faire en sorte de choisir de rechercher un titre dans la base de donné 1 ou 2 ( choix que l'on pourra faire avec un menu déroulant ) Donc si vous avez des idées n'hésitez surtout pas svp

A voir également:

36 réponses

william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 04:51
Salut je ne sais pas is mon code va t'aider mais essaye voir si t'as d'autres questions n'hésite pas


<html >
<head>
<title>Document sans titre</title>
</head>

<body>
<?php
$con = mysql_connect("localhost","root","");
if($con)
{
	$base = mysql_select_db(nomDeLaBase);
	if($base)
	{
		$bool = true;
	}
	else
	{
		echo '<script>alert("Erreur de selection de la BDD")</script>';
		$bool = false;
	}
{
else
{
	echo '<script>alert("Erreur de connection au Serveur MySQL")</script>';
	$bool = false;
}
	
if($bool && isset(btEnvoyer))
{
	$titreChercher = $_POST['titreFilm'];
	$req = mysql_query("SELECT * FROM lien_film WHERE titre = '".$titreChercher."'");
	if(mysql_num_rows($req) > 0)
	{
		$row = mysql_fetch_array($req);
		echo "Le titre <i><b>".$row['titre']."</b></i> Existe dans la base";
	}
}	
?>
<table width="288" border="1">
  <tr>
    <td><form id="form1" name="form1" method="post" action="">
      <label>Titre
      <input name="tittreFilm" type="text" id="tittreFilm" />
      </label>
        <label>
        <input type="submit" name="btEnvoyer" value="Rechercher" />
        </label>
    </form>
    </td>
  </tr>
</table>
</body>
</html>


1
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 05:08
Pour commencer merci d'avoir répondu.

Malheureusement, je rencontre un problème: J'ai remplacé dans

<?php
$con = mysql_connect("localhost","root","")
if($con) <=== line 11
{
$base = mysql_select_db(nomDeLaBase)

Root et mis un mdp ainsi que nomdeLaBase.

Mais il me dise : "Parse error: syntax error, unexpected T_IF in /mnt/147/sda/2/7/.../..../.../list_film2.php on line 11

Vu que je ne comprend pas tout ton code je ne sais pas quel est le problème
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 05:12
Ok
excuse moi j'ai oublier les " ; " sur le ligne
$con = mysql_connect("localhost","root","");

je iens de le corriger c'est bon
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 05:23
Hum oui en effet c'était le problème à la ligne 11 mais le meme probleme est survenu à la ligne 14 et j'ai remarqué qu'il n'y avait pas el point virgule non plus donc je les rajouté.
Par contre le même message revient à la ligne 24 mais la ca n'a pas l'air d'être un probleme de virgule:

<?php
$con = mysql_connect("localhost","dreamovies","1c1wloar");
if($con)
{
$base = mysql_select_db(lien_film);
if($base)
{
$bool = true;
}
else
{
echo '<script>alert("Erreur de selection de la BDD")</script>';
$bool = false;
}
{
else <=== line 24
{
echo '<script>alert("Erreur de connection au Serveur MySQL")</script>';
$bool = false;
}

if($bool && isset(btEnvoyer))
{
$titreChercher = $_POST['titre'];
$req = mysql_query("SELECT * FROM lien_film WHERE titre = '".$titreChercher."'");
if(mysql_num_rows($req) > 0)
{
$row = mysql_fetch_array($req);
echo "Le titre <i><b>".$row['titre']."</b></i> Existe dans la base";
}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 05:28
regarde juste avant le IF j'ai ouvert l'ccolade au lieu de la fermer
tu devrais avoir ça

}
if
{
...
}
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 05:29
dsl des erreurs je tape depuis le hier matin sur le clavier
mais c'est pas grave on eut continuer dac?
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 05:30
Moi y a pas de problème et je ne t'en veux pas pour ça ^^ tu prend deja la peine de m'aider. C'est deja beaucoup.
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 05:32
Ligne 30 également un problème :

else
{
echo '<script>alert("Erreur de connection au Serveur MySQL")</script>';
$bool = false;
}

if($bool && isset(btEnvoyer)) <===== line 30
{
$titreChercher = $_POST['titre'];
$req = mysql_query("SELECT * FROM lien_film WHERE titre = '".$titreChercher."'");
if(mysql_num_rows($req) > 0)
{
$row = mysql_fetch_array($req);
echo "Le titre <i><b>".$row['titre']."</b></i> Existe dans la base";
}
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 05:48
ok
comme tu le voie je n'ai pas verifier le code mais je sai squ'il va fonctionner.
essaie juste d'enlever $bool je trouve qu'il est de trop dans le code et laisse juste
if(isset(btEnvoyer))

dac?
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 13:01
Voila j'ai presque réussi mais par contre la recherche se fait par titre exacte. Au lieu de prendre tout les titre contenant le mot-clé marqué. Et de plus, ça ne trouve qu'un seul film sur les 41 que j'ai entré ( je les ai pas tous essayé bien sur )

<?php

mysql_connect("localhost", "root", "xxxx");
mysql_select_db("NomBdd");

echo "<form method=\"post\" action=\"list_film.php\">
<input name=\"titre\" type=\"text\"/>
<input type=\"submit\" value=\"rechercher\" name=\"submit\" />
</form>";

$titre = $_POST['titre'];
$reponse = mysql_query("SELECT * FROM lien_film WHERE titre='$titre' ");

while ($donnees = mysql_fetch_array($reponse) )
{
?>
<p><?php echo $donnees['titre']; ?></p>
<?php } ?>

Ce code est donc presque achevé mais il manque un petit truc. Saurais-tu me dire quoi ?

Ps: Désolé pour ton code mais je tentais deux manières différentes. Et ton code est pas a mon niveau j'ai encore un peu de mal ^^ Bref j'espère que tu m'en veux pas.
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 13:08
Rectification : Ca ne trouve que les films écrit seulement en lettre ( sans chiffre ) et en un seul mot.
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 13:09
ok ok
nous allons faire avec le tiens c'est deja tres bien
1. pour la recherche générique il te faut juste ajouter des caracteres générique '%' autour de la variable dans la requete SQL essaye ça voir

$reponse = mysql_query("SELECT * FROM lien_film WHERE titre=%'$titre'% ");

N.B ne laisse pas d'espace entre % et ta variable, le code signifie "RECHERCHE TOUS LES LIVRES DONC LE TITRE CONTIENS LE MOT (ou la lettre) $titre "
pour la recherche avec "LE TITRE COMMENCE PAR $titre il faut juste enlever le premier %"

cdlt
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 13:10
ohohoh
j'ai pas compris ton dernier post explique toi.
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 13:15
Ben par exemple :
Le film Outlander sera trouvé car il est en un seul mot
Alors que le film 2046 qui est en un seul "bloc" ne sera pas trouvé
Tout comme un film tel que Iron-man, Casino Royal ou 3 amis ne sera pas trouvé.
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 13:19
je vois
fais la recherche générique c'est la bonne dans ce cas précis ton problème sera résolu

tu fais une gestion de bibliothèque? car moi je ss entrain de faire une mais pas en php, j'utilise un autre langage, pour le moment je ss entrain de modéliser le diagramme de classes
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 14:30
Non je ne fais pas une gestion de bibliothèque. En faite je créer un site qui diffuse des film et épisode de série en streaming. Donc c'est pour ca qu j'ai besoin d'un module recherche.

Par contre en insérant %

J'ai un probleme a la ligne 23:

$titre = $_POST['titre'];
$reponse = mysql_query("SELECT * FROM lien_film WHERE titre=%'$titre'% ");

while ($donnees = mysql_fetch_array($reponse) ) <=== line 23
{
?>
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 14:34
essaye ça

à la place de = met plus tot LIKE
$reponse = mysql_query("SELECT * FROM lien_film WHERE titre LIKE %'$titre'% ");
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 14:40
Merci beaucoup ! ca fonctionne niquel.

Je voudrais juste savoir , en ajoutant un champ dans le formulaire sous forme de liste déroulante dans lequel j'aurais le choix entre des recherches dans les séries ou dans les films, comment faire pour changer la base de donné dans laquel ca recherche:

Si film selectionné alors ca affiche ca

$reponse = mysql_query("SELECT * FROM lien_film WHERE titre LIKE %'$titre'% ");

Si Série alors :

$reponse = mysql_query("SELECT * FROM list_serie WHERE titre LIKE %'$titre'% ");
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
22 août 2009 à 14:42
hé là pas trop vite je ne te comprend pas
tu veux un changement de BDD ou un changement Table
cdlt.
0
kepsylis Messages postés 29 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 7 février 2013
22 août 2009 à 14:47
oups Table pardon
0