[RESOLU] selection dans bdd pour envoi mail

Eléphanteau du PHP | 49 Messages

29 nov. 2016, 21:52

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.

Code : Tout sélectionner

$reponse = $bdd->query('SELECT * FROM newsletter');
Merci de bien vouloir m'aider.

Mammouth du PHP | 1967 Messages

30 nov. 2016, 09:29

Ajoute une clause WHERE à ta requète

par exemple WHERE field_age >= 18
tu peux aussi inclure des AND pour avoir plusieurs conditions
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 49 Messages

30 nov. 2016, 19:43

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.

Mammouth du PHP | 1967 Messages

01 déc. 2016, 00:08

Qu'arrive tu à faire, qu'as tu essayé ?
ou bloque tu ?

Nous pouvons t'aider à y parvenir, mais pas le faire à ta place
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 49 Messages

01 déc. 2016, 21:34

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:

Code : Tout sélectionner

$reponse = $bdd->query($Query);

Mammouth du PHP | 688 Messages

01 déc. 2016, 21:41

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

Eléphanteau du PHP | 49 Messages

02 déc. 2016, 16:19

Ok, mais dans le cas d'une ville sans choisir l'age, j'ai le même message d'erreur.

Mammouth du PHP | 881 Messages

02 déc. 2016, 18:57

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);
Soyez artisans de paix

Eléphanteau du PHP | 49 Messages

02 déc. 2016, 21:36

Super, l' echo m'a bien servi, merci
avant:

Code : Tout sélectionner

$Query.= ' AND age = '.$_POST['age'].'';
apres:

Code : Tout sélectionner

$Query.= ' AND age = \''.$_POST['age'].'\'';
et voilà ça fonctionne.

Mammouth du PHP | 881 Messages

02 déc. 2016, 22:54

Félicitations!
N'oublie pas de passer le sujet en « Résolu »
Soyez artisans de paix