Page 1 sur 1
selection dans bdd pour envoi mail
Posté : 29 nov. 2016, 21:52
par cite carter
Bonjour à tous
je voudrais sélectionner certaines lignes dans ma base de donnée selon des critères de certaines colonnes afin de viser à qui envoyer une newsletter.
J'ai une colonne âge, et une ville et je voudrais pouvoir envoyer juste aux majeurs ou aux majeurs d'une certaine ville etc...
et ceci juste en sélectionnant sur des input type="radio"
Pour l'instant j'envoie à toute la base avec la requête SELECT et je ne trouve pas comment pour insérer les conditions dans la requête.
Merci de bien vouloir m'aider.
Re: selection dans bdd pour envoi mail
Posté : 30 nov. 2016, 09:29
par Spols
Ajoute une clause WHERE à ta requète
par exemple WHERE field_age >= 18
tu peux aussi inclure des AND pour avoir plusieurs conditions
Re: selection dans bdd pour envoi mail
Posté : 30 nov. 2016, 19:43
par cite carter
Oui ça je sais faire, je que je voudrais c'est qu'en cliquant sur des cases ( input type="radio" ) ça me rajoute automatiquement les WHERE et AND à la requête.
Re: selection dans bdd pour envoi mail
Posté : 01 déc. 2016, 00:08
par Spols
Qu'arrive tu à faire, qu'as tu essayé ?
ou bloque tu ?
Nous pouvons t'aider à y parvenir, mais pas le faire à ta place
Re: selection dans bdd pour envoi mail
Posté : 01 déc. 2016, 21:34
par cite carter
Sur mon formulaire d’envois de newsletter j'ai ajouté les input dont j'ai besoin qui correspondent aux colonnes de ma bdd et j'essaie de récupérer les choix, s'il y en a, comme ceci:
Code : Tout sélectionner
$Query = 'SELECT * FROM maBdd WHERE categorie = \'adh\'';
if ($_POST['age']) {
$Query.= ' AND age = '.$_POST['age'].'';
}
if ($_POST['ville']) {
$Query.= ' AND ville='.$_POST['ville'].'';
}
$reponse = $bdd->query($Query);
$nbremail = 0;
$envoimail = 0;
while ($donnees = $reponse->fetch())
{
$nbremail += 1;
echo $donnees['mail'];
résultat actuel:
Si je ne fait pas de choix particulier, le formulaire envois bien à toute la catégorie "adh".
Si je fait un choix d'age ou autre, j'ai un message d'erreur:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column '18 ans' in 'where clause'' in /home/monsite/public_html/envoie.php:29 Stack trace: #0 /home/monsite/public_html/envoie.php(29): PDO->query('SELECT * FROM n...') #1 {main} thrown in /home/monsite/public_html/envoie.php on line 29
la ligne 29 est celle-ci:
Re: selection dans bdd pour envoi mail
Posté : 01 déc. 2016, 21:41
par tof73
$Query.= ' AND age = "'.$_POST['age'].'"';
si age contient bien une chaine de caractères. si c'est un nombre, il faut changer la valeur du champ dans le formulaire html pour mettre autre chose que "18 ans", "18" par exemple.
Re: selection dans bdd pour envoi mail
Posté : 02 déc. 2016, 16:19
par cite carter
Ok, mais dans le cas d'une ville sans choisir l'age, j'ai le même message d'erreur.
Re: selection dans bdd pour envoi mail
Posté : 02 déc. 2016, 18:57
par Patriboom
Je te suggère de lire ta requête et la vérifier avec phpMyAdmin (ou l'équivalent).
Pour ce faire, ajoute à la ligne 28 une commande affichant ta requête
echo 'Voici ma requête: ' . $Query;
Analyse le résultat et corrige au besoin.
Tu sais sans doute récupérer les données d'une série de input radio.
Elles seront dans $_POST["Name_du_input"];
Tu peux les voir en faisant
var_dump($_POST);
Re: selection dans bdd pour envoi mail
Posté : 02 déc. 2016, 21:36
par cite carter
Super, l' echo m'a bien servi, merci
avant:
apres:
et voilà ça fonctionne.
Re: selection dans bdd pour envoi mail
Posté : 02 déc. 2016, 22:54
par Patriboom
Félicitations!
N'oublie pas de passer le sujet en « Résolu »