Comment afficher un pop up newsletter avec condition
Résolu
flexi2202
Messages postés
3640
Date d'inscription
Statut
Membre
Dernière intervention
-
flexi2202 Messages postés 3640 Date d'inscription Statut Membre Dernière intervention -
flexi2202 Messages postés 3640 Date d'inscription Statut Membre Dernière intervention -
bonjour a tous
j ai une page avec un pop up newsletter qui s affiche lorsque l utilisateur se connecte a mon site
et donc si il le souhaite il peux s y inscrire ou fermer le pop up
j ai crée une table neuw pour enregistrer les utilisateurs qui désirent s abonner
je souhaiterais que quand il est déjà inscrit il reçoit une autre pop up en lui disant vous êtes déjà inscrit a la newsletter
j ai tente de modifier le code que j ai par ceci mais cela ne fonctionne pas
je n ai plus le pop up et je n ai pas non plus le message comme quoi il est enregistre(je changerais ce message par une pop up plus tard
voici mon code
je ne sais pas si j ai bien indiquer les erreurs avec pdo pour la requête
en début de code j ouvre la session de cette façon
session_start();
puis ce code en bas de page
j ai une page avec un pop up newsletter qui s affiche lorsque l utilisateur se connecte a mon site
et donc si il le souhaite il peux s y inscrire ou fermer le pop up
j ai crée une table neuw pour enregistrer les utilisateurs qui désirent s abonner
je souhaiterais que quand il est déjà inscrit il reçoit une autre pop up en lui disant vous êtes déjà inscrit a la newsletter
j ai tente de modifier le code que j ai par ceci mais cela ne fonctionne pas
je n ai plus le pop up et je n ai pas non plus le message comme quoi il est enregistre(je changerais ce message par une pop up plus tard
voici mon code
je ne sais pas si j ai bien indiquer les erreurs avec pdo pour la requête
en début de code j ouvre la session de cette façon
session_start();
puis ce code en bas de page
<?php
require_once 'config.php';
$mail = $_POST['mail'];
try{
$stmt = $pdo->prepare("SELECT * FROM neuw WHERE mail=?");
$stmt->execute([$mail]);
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
echo " Les datas : " ;
print_r($datas);
}
$mail = $stmt->fetch();
if ($mail) {
echo "le nom d'utilisateur existe déjà";
} else {
// le nom d'utilisateur n'existe pas
if(empty($_SESSION['story'])) {
$_SESSION['story'] = TRUE;
require_once "myModal.php";
}
}
?>
13 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
si ton programme n'affiche rien, ajoute des echo. -
bonjour merci pour l aide
j avais fait une erreur ce n est pas mail mais email
je viens de mettre deux echo mais cela n affiche rien
<?php require_once 'config.php'; $email = $_POST['email']; try{ $stmt = $pdo->prepare("SELECT * FROM neuw WHERE email=?"); $stmt->execute([$email]); echo $email; echo $_POST['email']; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } $email = $stmt->fetch(); if ($email) { echo "le nom d'utilisateur existe déjà"; } else { // le nom d'utilisateur n'existe pas if(empty($_SESSION['story'])) { $_SESSION['story'] = TRUE; require_once "myModal.php"; } } ?> -
merci pour la reponse
mais j ai fait une erreur énorme
je reviens plus tard pour l expliquer -
désolé , désolé
en fait je me suis mal explique
je pense que cela arrive quand on a trop la tête dans le guidon
comme on dit
je souhaiterais vérifier que l email de la session en cours se trouve oui ou non dans une autre table -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
voila je reviens avec mon code modifie
je récupère donc ma variable mail et je regarde si elle existe dans ma table neuw
mais cela ne me retourne rien
<?php session_start(); echo $_SESSION['email'] ; require_once 'config.php'; $email = $_SESSION['email']; $stmt = $pdo->prepare("SELECT * FROM neuw WHERE email=?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user) { echo"email existe"; } else { echo"email n'existe pas"; } ?>-
Bonjour
Ou est passé le try/catch pourtant bien utile pour détecter les éventuelles erreurs PDO ?
Ensuite, quand tu dis que ça ne retourne rien... c'est à dire ?
Tu as une page blanche ou un des deux echo s'affiche ?
<?php //démarrage SESSION session_start(); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // Include pour la connexion à la bdd require_once 'config.php'; //récupération PROPRE des variables AVANT de les utiliser $email = !empty($_SESSION['email']) ? $_SESSION['email'] : NULL; //préparation de la requête et des variables $sql = "SELECT * FROM neuw WHERE email=?"; $datas = [$email]; //exécution de la requête try{ $stmt = $pdo->prepare(); $stmt->execute($datas); $user = $stmt->fetch(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } if (!empty($user)) { echo "email existe"; } else { echo "email n'existe pas"; }
Si ce code ne t'affiche rien... c'est que dans ta bdd tu n'as pas de ligne correspondant à l'email que tu envoies....
A la limite, il faudrait déjà tester la requête DIRECTEMENT dans ta bdd ( via phpmyadmin par exemple ) pour être sûr qu'elle fonctionne et te retourne bien ce que tu attends...
-
-
merci jordane pour le rappel des erreurs de pdo
et surtout pour l aide
en fait cela ne me retourne que le premier echo de ma table de connexion
mais aucun des deux autres echo
echo "email existe"; echo "email n'existe pas";
ma base de donnée fonctionne bien lorsque je fais ce code
<?php try { // On se connecte à MySQL $bdd = new PDO('mysql:host=localhost;dbname=id60_phil;charset=utf8', 'id_ari', 'Ssa+'); } catch(Exception $e) { // En cas d'erreur, on affiche un message et on arrête tout die('Erreur : '.$e->getMessage()); } $res = $bdd->query('select count(*) as nb from neuw'); $data = $res->fetch(); $nb = $data['nb']; ?> <strong>le nombre d inscrit est de </strong><?php echo $nb; ?><br /><br /> <?php // Si tout va bien, on peut continuer // On récupère tout le contenu $reponse = $bdd->query('SELECT *FROM neuw'); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch()) { ?> <strong></strong><?php echo $donnees['email']; ?> <br /> <?php } $reponse->closeCursor(); // Termine le traitement de la requête ?>
avec le code que tu m as fais j ai une erreur
Notice: Undefined variable: pdo in /storage/ssd4/760/16000760/public_html/nosignal/user.php on line 22
Fatal error: Uncaught Error: Call to a member function prepare() on null in /storage/ssd4/760/16000760/public_html/nosignal/user.php:22 Stack trace: #0 {main} thrown in /storage/ssd4/760/16000760/public_html/nosignal/user.php on line 22 -
euhhh
tu es sur que c est la ligne 22 ? -
jordane j ai beau comparer les lignes mais franchement c est le brouillard
$res = $bdd->query('select count(*) as nb from neuw');
avec cette lignetry{-
Donc non c'était bien la 22 dans le code que je t'ai donné...
En gros la ligne de code qui fait le prépare de la Requête.
Dans le code qui fonctionne tu utilises $bdd
Dans le code que je t'ai fourni en inspirant de celui que tu nous avais montré tu as mis $pdo
Donc si tu fais la modification pour utiliser la bonne variable ça devrait mieux fonctionner.
-
-
ben dis donc
c était vraiment mais vraiment bien cache ,
car j ai pourtant cherche
merci pour la correction mais
de nouveau une erreur
Warning: PDO::prepare() expects at least 1 parameter, 0 given in /storage/ssd4/760/16000760/public_html/nosignal/user.php on line 22
Fatal error: Uncaught Error: Call to a member function execute() on boolean in /storage/ssd4/760/16000760/public_html/nosignal/user.php:23 Stack trace: #0 {main} thrown in /storage/ssd4/760/16000760/public_html/nosignal/user.php on line 23 -
je suppose que cela se passe a la ligne 23
-
bonjour jordane
ah cela va mieux quand on a dormi
voici donc la bonne ligne$stmt = $pdo->prepare($sql);
et voici donc le résultat
email n'existe pas
donc cela semble bon -
voila cela fonctionne super nickel
un grand merci jordane -
tout fonctionne bien jordane merci