Formulaire de recherche
Résolu
cedric
-
Aktayen Messages postés 189 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Formulaire de recherche
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Formulaire de reclamation instagram - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
29 réponses
j'ai mis ça comme code pour search.php:
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.
<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.
à 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
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
Après faut sécuriser ton $_POST pour pas qu'on puisse mettre du code dedans (html_entities je crois que c)
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)
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:
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.
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.
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
C'est une question de sécurité.
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é.
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.
la ligne 24 correspond à la ligne du while.
je vais chercher encore pour voir si je trouve la soluce au pb.
Bien reçu,
Alors pour répondre à ta question tu fais un premier select.
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..
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..
merci pour ta réponse ^^
j'ai testé:
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:
j'ai vérifié la syntaxe mais ça semble bon. et ça marche pas.
ou alors je me suis planté dans la syntaxe?
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?
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:
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
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
j'ai testé ça pour afficher ma sélection mais ça m'affiche toutes les villes:
pourtant
$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'?
Je pense que tu as un problème avec les quotes ^^
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 :
va afficher : salut - $mot
$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