Problème PHP / SQL
Résolu/Fermé
richard_10
Messages postés
23
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
31 mars 2012
-
Modifié par richard_10 le 30/06/2011 à 15:29
richard_10 Messages postés 23 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 31 mars 2012 - 2 juil. 2011 à 02:55
richard_10 Messages postés 23 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 31 mars 2012 - 2 juil. 2011 à 02:55
Bonjour,
Je suis entrain de programmer un moteur de recherche pour mon site, et puis dès que je suis arrivé à l'endroit où je dois passer par une recherche approximative dans un champ, sa ne veut pas marché. Concrètement, voilà ce que j'ai pu réalisé:
Cette fonction ne renvoie absolument rien.Toutefois, ma base de données contient bien des résultats qui vont avec cette recherche.Merci pour votre aide.
Je suis entrain de programmer un moteur de recherche pour mon site, et puis dès que je suis arrivé à l'endroit où je dois passer par une recherche approximative dans un champ, sa ne veut pas marché. Concrètement, voilà ce que j'ai pu réalisé:
$req=$bdd->prepare("SELECT champ FROM TABLE WHERE champ LIKE '% :champ %' "); $req->execute(array("champ" => $_POST["motclef"] )); $resultats=$req->fetchAll(); return $resultats;
Cette fonction ne renvoie absolument rien.Toutefois, ma base de données contient bien des résultats qui vont avec cette recherche.Merci pour votre aide.
A voir également:
- Problème PHP / SQL
- Easy php - Télécharger - Divers Web & Internet
- Logiciel sql - Télécharger - Bases de données
- Php natif - Forum PHP
- Requête sql pix - Forum Python
- Sql replace plusieurs valeurs - Forum Programmation
10 réponses
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
1 juil. 2011 à 10:06
1 juil. 2011 à 10:06
$req=$bdd->prepare("SELECT champ FROM TABLE WHERE champ LIKE :champ "); $req->execute(array("champ" => '%' . $_POST["motclef"] . '%' )); $resultats=$req->fetchAll(); return $resultats;
il faut mettre les % en dehors de la requete
richard_10
Messages postés
23
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
31 mars 2012
3
30 juin 2011 à 14:31
30 juin 2011 à 14:31
Merci pour ta réponse,
Oui, j'avais essayé cela plusieurs fois, j'ai même réaliser toutes les combinaisons possibles. Mais bon, aucun résultat.Merci encore.
Oui, j'avais essayé cela plusieurs fois, j'ai même réaliser toutes les combinaisons possibles. Mais bon, aucun résultat.Merci encore.
Utilisateur anonyme
30 juin 2011 à 14:36
30 juin 2011 à 14:36
Désolé, oups, j'avais pas vu, ce n'est pas champ = qu'il faut mettre, mais champ like...
$req=$bdd->prepare("SELECT champ FROM TABLE WHERE champ like '%:champ%' ");
richard_10
Messages postés
23
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
31 mars 2012
3
30 juin 2011 à 14:49
30 juin 2011 à 14:49
C'est déjà édité dans le message ...Cependant, rien ne vas :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
si tu utilise un PDO pour la connexion à la base de données j'ai ça :
si tu utilise un PDO pour la connexion à la base de données j'ai ça :
$req = $bdd->query(" SELECT champ FROM table WHERE champ LIKE ' %".$_POST['motclef']."%' "); while($resultats = $req->fetch()) { // traitement des données }
richard_10
Messages postés
23
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
31 mars 2012
3
Modifié par richard_10 le 30/06/2011 à 15:59
Modifié par richard_10 le 30/06/2011 à 15:59
Salut et merci pour vos réponses. C'étais une faute de frappe neo, et là tout est édité.et bien , j'ai vérifié la valeur de l'index POST avant d'accéder à la fonction et sa donne bien une valeur ( que j'ai saisi ).J'ai tout esseyer. Toujours rien , je vais vous montrer ma requête :
function rech_pub() { global $bdd; $req=$bdd->prepare("SELECT id_publication, intitule_publication FROM publication WHERE intitule_publication LIKE '%:initule_publication%' "); $req->execute(array("intitule_publication" => $_POST["rech"])); $pub=$req->fetchAll(); return $pub; }
vous pouvez nous dire ce qui s'affiche si vous faites ceci à la place ?
Merci
function rech_pub() { global $bdd; dump($bdd); $req=$bdd->prepare("SELECT id_publication, intitule_publication FROM publication WHERE intitule_publication LIKE '%:initule_publication%' "); dump($req); $req->execute(array("intitule_publication" => $_POST["rech"])); $pub=$req->fetchAll(); dump($pub); return $pub; }
Merci
richard_10
Messages postés
23
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
31 mars 2012
3
30 juin 2011 à 21:57
30 juin 2011 à 21:57
Bonsoir,
Sa donne une erreur de syntaxte :
Fatal error: Call to undefined function dump() in C:\Program Files\EasyPHP-5.3.6.0\www\Model\recherche.php on line 23
Merci pour votre soutien
Sa donne une erreur de syntaxte :
Fatal error: Call to undefined function dump() in C:\Program Files\EasyPHP-5.3.6.0\www\Model\recherche.php on line 23
Merci pour votre soutien
richard_10
Messages postés
23
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
31 mars 2012
3
1 juil. 2011 à 16:29
1 juil. 2011 à 16:29
Salut maka,
Merci pour ta réponse qui est en effet utile. Et bien oui, tout marche là grâce à toi.Merci encore ainsi que tous les autres qui ont soutenu ce message.
Merci pour ta réponse qui est en effet utile. Et bien oui, tout marche là grâce à toi.Merci encore ainsi que tous les autres qui ont soutenu ce message.
richard_10
Messages postés
23
Date d'inscription
mercredi 18 juillet 2007
Statut
Membre
Dernière intervention
31 mars 2012
3
2 juil. 2011 à 02:55
2 juil. 2011 à 02:55
Salut neo ,oui j'avais déjà essayer cela, mais sa ne marchait pas.En revanche, la solution proposée par maka fonctionne à fond. Merci neo pour ton temps
Utilisateur anonyme
30 juin 2011 à 14:26
30 juin 2011 à 14:26
Bonjour,
essayez sans les espaces entre % et :champ et le % qui suit
essayez sans les espaces entre % et :champ et le % qui suit
$req=$bdd->prepare("SELECT champ FROM TABLE WHERE champ='%:champ%' ");