Formulaire de recherche

Résolu/Fermé
cedric - Modifié par cedric le 22/03/2011 à 15:23
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 - 7 avril 2011 à 16:25
Bonjour,


J'ai créer une bdd "projet siemens" et une table "ville" et son id "id_ville".

J'ai créer mon formulaire dans la page formulaire.php dont voice le code:


<html>
<title>Formulaire</title>
<body>
<center>

<form method="post" action="search.php">

Veuillez taper le nom de la ville :

<input type="text" name="Mot" size="15">

<input type="submit" value="Rechercher" alt="Lancer la recherche!">

</form>

<center>
</body>
</html>


Puis j'ai créer la page de résultat dans la page search.php dont voice le code:


<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=projet siemens', 'root', '', $pdo_options);

$reponse = $bdd->query('SELECT ville FROM ville');

while ($donnees = $reponse->fetch())
{
echo $donnees['ville'] . '<br />';
}

$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>



Ce que je veux c'est quand je rentre par exemple "AGEN" dans le moteur de recherche, je veux que ça m'affiche les infos relatives à AGEN qui sont dans la table "ville".

Mais ça ne marche pas. Quelqu'un saurait il pourquoi svp?

merci d'avance,

cedric

PS: désolé si il y a des erreurs de prog, je débute


29 réponses

j'ai mis ça comme code pour search.php:

<html>
<center>
<p>Les résultats obtenus sont les suivants:</p>
<?php

    // On se connecte à MySQL
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=projet siemens', 'root', '', $pdo_options);

$query = mysql_query("SELECT ville FROM ville WHERE ville = $nomville;");

while (mysql_fetch_array("SELECT ville FROM ville WHERE ville = $nomville;"))
    { 
echo  $query ;
	} 

?>
<center>
</html>


Mais j'ai les erreurs suivantes:

-Undefined variable: nomville

-Warning: mysql_fetch_array() expects parameter 1 to be resource, string given

Pourtant, $nomville est déclarer dans l'autre page, formulaire.php.
Mais pour mysql_fetch_array() je ne sais pas comment faire non plus.
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
Modifié par Aktayen le 25/03/2011 à 16:03
à moins que ton search.php soit inclus dans formulaire.html et qu'il le soit après que $nomVille soit déclaré, c'est normal que ça ne marche pas.

Pour récupérer les infos de ton formulaire tu dois utiliser la variable POST

exemple, si tu veux récupérer le "mot" qu'ils ont tappé tu dois êcrire
$_POST['Mot'];


De plus, imaginons le cas où qqn met "Agen", un autre "agen" ça sera pas pareil pour tout le monde et si tu as AGEN dans ta base, aucun des deux sera trouvé.

Donc il faut que tu utilises une fonction php, qui converti tout en majuscule/minuscule/premier lettre en maj le reste en minuscule, c'est à toi de voir selon ce qui est dans ta base.

pour ton while il y a des erreurs

$mot=strtolower($_POST['Mot']);  
$query = mysql_query("SELECT ville FROM ville WHERE ville = $mot");   

while ($i=mysql_fetch_array($query))   
    {    
      echo  $i['id_ville'] ;   
  }   




Après faut sécuriser ton $_POST pour pas qu'on puisse mettre du code dedans (html_entities je crois que c)
0
merci pour ta reponse! j'y suis presque!
mais j'ai l'erreur suivante:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\search.php on line 24

au niveau de la requète ça devrait être bon:

$mot=strtolower($_POST['mot']);   

$query = mysql_query("SELECT * FROM ville WHERE ville = $mot") ; 

while ($i=mysql_fetch_array($query))    
    {     
      echo  $i['id_ville'] ;    
  }   

je ne vois pas où est le problème?!?
j'ai regardé sur le net mais rien n'y fait.

désolé encore de demander ton aide.
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
26 mars 2011 à 00:03
cette veux dire que un de tes paramètres dans une fonction n'est pas bon.
C'est quoi la ligne 24?

Je vois que tu as mis une étoile à la place de 'ville', tu as raison ça devait faire une erreur, par contre c'est déconseillé les *, vaut mieux que tu mettes
SELECT id_ville, ville FROM ville etc..

C'est une question de sécurité.
0

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

Posez votre question
bonjour Aktayen,

la ligne 24 correspond à la ligne du while.
je vais chercher encore pour voir si je trouve la soluce au pb.
0
voici un graphique de ma bdd:
http://www.fufox.com/?d=3AB11217E4BC
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
4 avril 2011 à 18:59
je vois pas le fichier
0
peux tu me donner ton mail svp? je te l'envoie par mail.
pourtant moi le lien fonctionne.
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
5 avril 2011 à 15:30
contact@aktayen.fr
0
je t'es envoyer le mail
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
5 avril 2011 à 16:08
Bien reçu,

Alors pour répondre à ta question tu fais un premier select.

$resultat = "resultat du formulaire";
$recherche_ville=mysql_query(SELECT id_ville FROM ville WHERE ville='$resultat');
$rrv=mysql_fetch_array($recherche_ville);

$recherche_liaison=mysql_query(SELECT num_liaison FROM alveole1 WHERE id_ville="$rrv['id_ville']");
echo 'ville : '.$resultat.'<br\>';
while($rrl=mysql_fetch_array($recherche_liaison)){

echo 'num laison : '.$rrl['num_liason'].'<br \>';
}


Tu as un code plus court pour faire une seule requète, mais je trouve que c'est beaucoup plus lisible comme ça..

J'ai pas fais gaffe aux côtes, faudra mettre tout ça en forme..
0
merci pour ta réponse ^^
j'ai testé:

$resultat = $_POST['mot'] ;
$recherche_ville=mysql_query(SELECT id_ville FROM ville WHERE ville='$resultat');
$rrv=mysql_fetch_array($recherche_ville);

$recherche_liaison=mysql_query(SELECT num_liaison FROM alveole1 WHERE id_ville="$rrv['id_ville']");
echo 'ville : '.$resultat.'<br\>';
while($rrl=mysql_fetch_array($recherche_liaison))
{
echo 'num laison : '.$rrl['num_liason'].'<br \>';
}

mais j'ai cette erreur de syntaxe:

Parse error: syntax error, unexpected T_STRING in C:\wamp\www\3.php on line 25

c'est cette ligne:

$recherche_ville=mysql_query(SELECT id_ville FROM ville WHERE ville='$resultat');


j'ai vérifié la syntaxe mais ça semble bon. et ça marche pas.
ou alors je me suis planté dans la syntaxe?
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
6 avril 2011 à 12:29
essaye ça

$recherche_ville=mysql_query("SELECT id_ville FROM ville WHERE ville=$resultat");
0
l'erreur a disparu mais y en a une autre maintenant en ligne 28:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

à cette ligne:

$recherche_liaison=mysql_query("SELECT num_liaison FROM alveole1 WHERE id_ville=$rrv['id_ville']");


j'ai essayé de mettre id_ville=$rrv['id_ville'] entre guillemets mais ça change rien.
encore une erreur de syntaxe... ça va jamais finir lol
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
6 avril 2011 à 21:43
essaye ça :
$recherche_liaison=mysql_query('SELECT num_liaison FROM alveole1 WHERE id_ville="'.$rrv['id_ville'].'"');
0
j'ai testé ça pour afficher ma sélection mais ça m'affiche toutes les villes:

$mot = $_GET['mot'];
$req="SELECT ville FROM ville WHERE ville LIKE '%$mot%' ";
$res = mysql_query($req) ;
while ($ville=mysql_fetch_array($res))
{
echo $ville['ville'];
}

mysql_free_result ($res);


pourtant
LIKE '%$mot%' 
c'est bien pour dire 'comme la sélection'?
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
Modifié par Aktayen le 7/04/2011 à 11:22
Je pense que tu as un problème avec les quotes ^^
$mot = $_GET['mot'];  
$recherche_ville=mysql_query("SELECT ville FROM ville WHERE ville LIKE \"%$mot%\" ");  

while ($resultat_ville=mysql_fetch_array($recherche_ville))  
{  
echo $resultat_ville['ville'];  
}  



Petite explication sur les quotes :


entre les doubles quotes tu peux mettre des variables php, elles seront interprétés mais ce n'est pas le cas avec les simple quotes.

ex :
$mot="salut - "; 
echo "$mot"; 
echo '$mot'; 

va afficher : salut - $mot
0
j'ai re-essayé mais même avec la variable $mot entre les % et les " " ça ne change rien.
pourtant ça devrait être bon! ou alors c'est au niveau de ma requête ou du while?
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
7 avril 2011 à 11:46
fait un test en mettant $mot ="AGEN" on verra si ça vient du formulaire l'erreur ou non
0
ça m'affiche bien agen. donc le pb vient de la requete?
0
Aktayen Messages postés 189 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 17 décembre 2015 19
7 avril 2011 à 14:23
Ce qu'il faudrait aussi c'est de garder une norme, genre mettre la ville en majuscule ou minuscule car à mon avis ça va poser problème au niveau de la recherche.
Tu m 'as bien dis qu'il affiché toutes les villes?
0
oui il affiche toutes les villes.
dans la liste deroulante, les ville sont en majuscules.
0