Formulaire de recherche

Résolu
cedric -  
Aktayen Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   -
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

cedric
 
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   Statut Membre Dernière intervention   20
 
à 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
cedric
 
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   Statut Membre Dernière intervention   20
 
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
cedric
 
bonjour Aktayen,

la ligne 24 correspond à la ligne du while.
je vais chercher encore pour voir si je trouve la soluce au pb.
0
cedric
 
voici un graphique de ma bdd:
http://www.fufox.com/?d=3AB11217E4BC
0
Aktayen Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   20
 
je vois pas le fichier
0
cedric
 
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   Statut Membre Dernière intervention   20
 
contact@aktayen.fr
0
cedric
 
je t'es envoyer le mail
0
Aktayen Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   20
 
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
cedric
 
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   Statut Membre Dernière intervention   20
 
essaye ça

$recherche_ville=mysql_query("SELECT id_ville FROM ville WHERE ville=$resultat");
0
cedric
 
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   Statut Membre Dernière intervention   20
 
essaye ça :
$recherche_liaison=mysql_query('SELECT num_liaison FROM alveole1 WHERE id_ville="'.$rrv['id_ville'].'"');
0
cedric
 
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   Statut Membre Dernière intervention   20
 
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
cedric
 
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   Statut Membre Dernière intervention   20
 
fait un test en mettant $mot ="AGEN" on verra si ça vient du formulaire l'erreur ou non
0
cedric
 
ça m'affiche bien agen. donc le pb vient de la requete?
0
Aktayen Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   20
 
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
cedric
 
oui il affiche toutes les villes.
dans la liste deroulante, les ville sont en majuscules.
0