volubilis Posté 7 Décembre 2005 Posté 7 Décembre 2005 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>)'; }?><?phpmysql_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 !!!
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 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']."%'";
Portekoi Posté 7 Décembre 2005 Posté 7 Décembre 2005 (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é Modifié 7 Décembre 2005 par Portekoi
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 Edit : Encore doublé 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'
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 J'ai essayé la commande echo mais voila ce qu'il me retourne SELECT * FROM artistes WHERE nom like '%%' ) )
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 Tu as une version de php inférieure à la 4.1.0 ? Essaies en remplaçant $_POST['nom'] par $HTTP_POST_VARS['nom'] et dis-nous ce que cela donne Dan
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 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
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 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).....
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 C'est logique si $_POST['nom'] n'est pas défini. le like '%%' donne tous les noms.
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 en theorie il doit l'etre puisque je le rentre à partir de mon formulaire !
NorSeb Posté 7 Décembre 2005 Posté 7 Décembre 2005 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']
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 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']."%'");
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 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).....
NorSeb Posté 7 Décembre 2005 Posté 7 Décembre 2005 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...
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 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
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 norseb fais un essai si tu veux sur mon site www.volubilis.net en haut a droite
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 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
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 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']
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 j'ai remis avec '%".$_POST['nom']."%'"); apres mon like et j'ai la liste de tout mes artistes qui ressort !! c couillon ca doit etre un detail idiot
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 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.
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 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
Dan Posté 7 Décembre 2005 Posté 7 Décembre 2005 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
volubilis Posté 7 Décembre 2005 Auteur Posté 7 Décembre 2005 (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é 7 Décembre 2005 par volubilis
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant