Aller au contenu

Pb resultat de recherche à partir d'un formulaire


Sujets conseillés

Posté

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 !!!

Posté

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']."%'";

Posté (modifié)

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
Posté
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'

Posté

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

Posté
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

Posté

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).....

Posté

C'est logique si $_POST['nom'] n'est pas défini. le like '%%' donne tous les noms.

Posté

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'] :)

Posté

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']."%'");

Posté

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).....

Posté

Pardonne moi cette question idiote mais : lorsque tu fait un test, tu rempli bien ton formulaire à chaque fois n'est-ce-pas ?

On sait jamais... :)

Posté

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

Posté
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

Posté

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'] :)

Posté

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é
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

Posté

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 :)

Posté (modifié)
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

Veuillez vous connecter pour commenter

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



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