Aller au contenu

Pb resultat de recherche à partir d'un formulaire


volubilis

Sujets conseillés

Bonjour,

Je suis debutant en php et mysql et J'ai fais une requete qui si j'en crois ce que j'ai lu à droite et a gauche devrait me ressortir des valeurs contenu dans une base de donnée sur mon serveur mais ca me ressort rien !

Extrait au dessus j'ai l etablissement de la connection a ma base

$reponse = mysql_query("SELECT * FROM artistes WHERE nom like '".$_POST['nom']."'"); 
while ($donnees = mysql_fetch_array($reponse) )
{

// on affiche les informations de l'enregistrement en cours
echo '<b>'.$donnees['nom'].' '.$donnees['type'].'</b>)';

}
?>
<?php
mysql_close();
?>

et mon formulaire de saisie

<form action="search.php" method="post">
<input type="text" name="nom" size="25" maxlength="40" value=" Recherchez sur le site">
<input type="submit" value="Go" style="background-color: #FF3810;">
</form>
</TD>

merci

c laborieux !!!

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Une question bête : J'imagine que tu mets une valeur dans la case "nom" pour ne pas envoyer " Recherchez sur le site" ? :)

As-tu essayé de faire un "echo $_POST['nom'];" en haut de search.php ?

Et tu devrais ajouter les caractères '%' de part et d'autre de $_POST['nom'] comme ceci:

echo "SELECT * FROM artistes WHERE nom like '%".$_POST['nom']."%'";

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Si tu fais ceci au dessus de ta requête :

echo "SELECT * FROM artistes WHERE nom like '".$_POST['nom']."'";

Et que tu colles ce qui est affiché dans phpMyadmin, est ce que la requete fonctionne?

Portekoi

Edit : Encore doublé :D

Modifié par Portekoi
Lien vers le commentaire
Partager sur d’autres sites

Edit : Encore doublé :D

:lol:

C'est assez courant d'oublier le wildcar % lors de l'utilisation de like ;)

like 'toto' ne retournera que les champs qui contiennent exactement 'toto' (peu importe la casse) mais pas ceux qui contiennent 'toto est sage'

Lien vers le commentaire
Partager sur d’autres sites

Tu as une version de php inférieure à la 4.1.0 ? :blush:

Essaies en remplaçant $_POST['nom'] par $HTTP_POST_VARS['nom'] et dis-nous ce que cela donne ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

echo "SELECT * FROM artistes WHERE nom like '%".$_POST['nom']."%'";

<{POST_SNAPBACK}>

j'ai essayé echo "SELECT * FROM artistes WHERE nom like '%".$_POST['nom']."%'";

avant ca

$reponse = mysql_query("SELECT * FROM artistes WHERE nom like '%".$_POST['nom']."%'");

et voila ce qu'il me retourne SELECT * FROM artistes WHERE nom like '%%

apres ca

$reponse = mysql_query("SELECT * FROM artistes WHERE nom like '%".$_POST['nom']."%'");

j'ai le meme message et tout mes noms qui apparaissent

Lien vers le commentaire
Partager sur d’autres sites

voila ce que j'ai maintenant

mysql_select_db("db0184601"); // Sélection de la base coursphp

echo "SELECT * FROM artistes WHERE nom like '%".$HTTP_POST_VARS['nom']."%'";

$reponse = mysql_query("SELECT * FROM artistes WHERE nom like '%".$HTTP_POST_VARS['nom']."%'");

et toujours ce message

SELECT * FROM artistes WHERE nom like '%%'billy crawford concert)boney m concert)billy crawford interview)tryo interview)magic system interview)hocus pocus festival)salif keita festival)the pretenders festival)enrico macias festival)renaud festival).....

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

en theorie il doit l'etre puisque je le rentre à partir de mon formulaire !

<{POST_SNAPBACK}>

Visiblement, tu as loupé le post dans lequel Dan te demande d'ecrire le même code en remplacant $_POST['nom'] par $HTTP_POST_VARS['nom'] :)

Lien vers le commentaire
Partager sur d’autres sites

non c bon à moins que j'ai rater qq chose, je suis sur Php que depuis hier desolé si je vous parais dure de la feuille !

contenu de mon fichier search.php

echo "SELECT * FROM artistes WHERE nom like '%".$HTTP_POST_VARS['nom']."%'";

$reponse = mysql_query("SELECT * FROM artistes WHERE nom like '%".$HTTP_POST_VARS['nom']."%'");

Lien vers le commentaire
Partager sur d’autres sites

et toujours ce message

SELECT * FROM artistes WHERE nom like '%%'billy crawford concert)boney m concert)billy crawford interview)tryo interview)magic system interview)hocus pocus festival)salif keita festival)the pretenders festival)enrico macias festival)renaud festival).....

Lien vers le commentaire
Partager sur d’autres sites

Si dans ton formulaire de recherche tu as bien:

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

cela signifie que tu définis 'post' comme méthode pour celui-ci.

Les variables seront donc accessibles dans le fichier défini comme action, soit dans $HTTP_POST_VARS[] soit dans $_POST[].

Ce dernier tableau $_POST[] n'existe que dans les versions de php >= 4.1.0

Tu as quelle version de Php ?

Le fait que la requête te donne tous les noms vient de "like '%%' " , ce caractère % signifiant 'tout caractère'. Ta requête est donc bonne et mysql fonctionne correctement. C'est juste ta variable $_POST['nom'] qui n'est pas définie.

Utilises-tu bien la même casse (majuscule/minuscule) pour "nom" partout dans ton programme ?

Dan

Lien vers le commentaire
Partager sur d’autres sites

Si dans ton formulaire de recherche tu as bien:

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

cela signifie que tu définis 'post' comme méthode pour celui-ci.

Les variables seront donc accessibles dans le fichier défini comme action, soit dans $HTTP_POST_VARS[] soit dans $_POST[].

Ce dernier tableau $_POST[] n'existe que dans les versions de php >= 4.1.0

Tu as quelle version de Php ?

Dan

<{POST_SNAPBACK}>

la 5.0.5 de chez nexlink je crois

Lien vers le commentaire
Partager sur d’autres sites

Utilises-tu bien la même casse (majuscule/minuscule) pour "nom" partout dans ton programme ?

Parce que $_POST['nom'] est différent de $_POST['Nom'] :)

Lien vers le commentaire
Partager sur d’autres sites

Essaies simplement de faire une ligne dans search.php, tout au début:

die("name = -".$_POST['name']."-
");

Si cela t'affiche simplement "name = --" c'est que ta variable $_POST[] ne passe pas.

Tu peux aussi essayer de débugger le tableau $_POST[] en remplaçant cette ligne par:

print_r($_POST);
exit;

Donne-nous les deux résultats complets. ;)

Lien vers le commentaire
Partager sur d’autres sites

Essaies simplement de faire une ligne dans search.php, tout au début:

die("name = -".$_POST['name']."-
");

Si cela t'affiche simplement "name = --" c'est que ta variable $_POST[] ne passe pas.

Tu peux aussi essayer de débugger le tableau $_POST[] en remplaçant cette ligne par:

print_r($_POST);
exit;

Donne-nous les deux résultats complets. ;)

<{POST_SNAPBACK}>

ca me donne bien name = --

pour le deuxieme test voila ce que j'obtiens

Array ( [david] => benabar )

benabar etant le nom entre dans ma recherche

Lien vers le commentaire
Partager sur d’autres sites

2 choses: la première, essaie de "quoter" correctement sinon ca met le souk dans ton post et le rend quasi illisible ;)

la deuxième... tu n'as pas de $_POST['nom'] de défini ... mais tu as un $_POST['david'] égal à "benabar"

Donc cette zone s'appelle "david" et pas "nom" ...

Et dans mon post précédent c'était $_POST['nom'] et pas $_POST['name'] qu'il fallait lire :)

Lien vers le commentaire
Partager sur d’autres sites

Donc cette zone s'appelle "david" et pas "nom" ...

<{POST_SNAPBACK}>

je la modifie ou cette zone pour qu'elle soit nom et pas david, je vois pas pourquoi il a pris mon prenom !!!!

Modifié par volubilis
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...