J'ai un formulaire page 1 qui demande une adresse à l'utilisateur.
En page 2, je récupère l'adresse saisie par l'utilisateur et je vérifie si celle-ci est présente ou non dans ma BDD mysql.
Par contre cela ne fonctionne que si l'utilisateur renseigne exactement l'adresse présente en BDD.
Je voudrais un système qui soit moins exclusif -> Ex : si l'utilisateur saisi 'rue de bercy'' ou '80 rue de Bercy' ou '77 rue de Bercy, Paris' soit validé grâce à ma bdd avec 'rue de bercy'
J'ai pensé à modifier ma requête SQL avec LIKE '%?%' mais sans succès.
Avez-vous des idées SVP ?
Mon code :
<?php
try
{
$adresse = htmlspecialchars($_POST['adresse']);
$bdd = new PDO('mysql:host=mydatabase;dbname=xxx;charset=utf8', 'xxxx', '12345', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
$requete = $bdd->prepare("SELECT * FROM mydatabase WHERE rue = :adresse ");
$requete->bindValue(':adresse', $adresse, PDO::PARAM_STR);
$requete->execute();
if ($donnees = $requete->fetch())
{
echo $donnees['rue'];
}
else
{
echo "L'adresse n'existe pas " . '<br />'. "Veuillez la ressaisir SVP".'<br />';
}
} catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
SELECT * FROM mydatabase WHERE rue LIKE '%:adresse%'
SELECT * FROM mydatabase WHERE rue LIKE %:adresse%
SELECT * FROM mydatabase WHERE rue LIKE '%':adresse%
SELECT * FROM mydatabase WHERE rue LIKE :adresse'%'
SELECT * FROM mydatabase WHERE rue '%?%'
philodick a écrit:
Bonjour,
Il faudrait voir ce que tu as essayé de faire, ceci devrait marcher :
$requete = $bdd->prepare("SELECT * FROM mydatabase WHERE rue LIKE :adresse ");
$requete->bindValue(':adresse', '%'.$adresse.'%', PDO::PARAM_STR);
J'ai essayé mais ça ne fonctionne pas : si je saisi 'abercy' ou 'bercyy' au lieu de 'bercy', ça affiche que ça n'existe pas
<?php
try
{
$adresse = htmlspecialchars($_POST['adresse']);
$bdd = new PDO('mysql:host=mydatabase;dbname=xxx;charset=utf8', 'xxxx', '12345', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ));
$requete = $bdd->prepare("SELECT * FROM mydatabase WHERE rue LIKE :adresse ");
$requete->bindValue(':adresse', '%'.$adresse.'%', PDO::PARAM_STR);
$requete->execute();
if ($donnees = $requete->fetch())
{
echo $donnees['rue'];
}
else
{
echo "L'adresse n'existe pas " . '<br />'. "Veuillez la ressaisir SVP".'<br />';
}
} catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
Vous-oubliez les majuscules aussi, si on rentre bercy, BERCY ou Bercy il faut aussi que ça match, pour cela faut que la recherche ne soit pas sensible a la casse:
Le code que je te donnais s'appuyait ce que tu as essayé de coder au départ : ça fonctionnera si ton mot est "compris" dans la donnée en table.
Ce que tu veux est beaucoup plus compliqué, tu veux recréer un moteur de recherche. Si tu es reparti pour recréer Google, bon courage !
Il faut commencer par définir un algorithme pour déterminer le niveau d'approximation souhaité...
Merci philodick. Par contre ça devrait donc marcher si je saisi 'bercyy' au lieu de 'bercy' non ?
coolswing a écrit:
Bonjour,
Vous-oubliez les majuscules aussi, si on rentre bercy, BERCY ou Bercy il faut aussi que ça match, pour cela faut que la recherche ne soit pas sensible a la casse:
Vous-oubliez les majuscules aussi, si on rentre bercy, BERCY ou Bercy il faut aussi que ça match, pour cela faut que la recherche ne soit pas sensible a la casse:
Vous me conseillez plutôt ElasticSearch mais c'est plutôt orienté recherche noSQL, je n'utiliserai pas ma bdd mysql et je devrait reformatter mes données.
Ou une vérification en Ajax (ici) ou en jQuery (ici ou + simple ici) ???
étant donné que je suis sur Wordpress je ne sais pas comment faire?
Directement dans ma page-personnalisee.php ou via un shortcode ?
Formulaire validation adresse
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.