Comment afficher un pop up newsletter avec condition

Résolu/Fermé
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - Modifié le 12 mai 2021 à 14:13
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 13 mai 2021 à 10:37
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
<?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";
        }
  }
      ?>
A voir également:

13 réponses

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
12 mai 2021 à 14:54
bonjour,
si ton programme n'affiche rien, ajoute des echo.
1
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
12 mai 2021 à 15:07
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";
        }
		}
      ?>
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
12 mai 2021 à 16:17
je pensais plutôt à
echo "je suis passé par ici";

qui te permet de suivre quelle partie de code est exécutée, et de découvrir où et quand ton code ne fait pas ce que tu imagines.
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
12 mai 2021 à 16:59
merci pour la reponse
mais j ai fait une erreur énorme
je reviens plus tard pour l expliquer
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
12 mai 2021 à 18:11
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 00:21
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";
} 

 ?>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 mai 2021 à 00:54
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...
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 01:09
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 mai 2021 à 01:11
Ah oui... forcément ...

Le message d'erreur est plutôt limpide ... et pour t'aider à comprendre.. il suffit de comparer la ligne 13 du code qui fonctionne ... avec la ligne 22 du code que je t'ai donné....
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 01:17
euhhh
tu es sur que c est la ligne 22 ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 mai 2021 à 01:19
21 ... mais bon.. en lisant le code ... et en comparant avec la ligne 13 de l'autre code.. tu aurais pu le deviner !
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 01:23
jordane j ai beau comparer les lignes mais franchement c est le brouillard

$res = $bdd->query('select count(*) as nb from neuw');

avec cette ligne
try{
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 mai 2021 à 01:31
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.
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 01:35
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 mai 2021 à 01:44
J'ai oublié de remettre en effet la variable $sql
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 01:47
je suppose que cela se passe a la ligne 23
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 mai 2021 à 02:12
Warning: PDO::prepare() expects at least 1 parameter, 0 given in /storage/ssd4/760/16000760/public_html/nosignal/user.php on line 22

Ligne 22
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
Modifié le 13 mai 2021 à 10:34
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
13 mai 2021 à 10:31
As tu, comme je te l'ai demandé, testé la requête DIRECTEMENT en bdd ?
As tu vérifié que ta variable $email contenait bien la bonne valeur ? (Il faudra en faire un var_dump)
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 10:36
voila cela fonctionne super nickel
un grand merci jordane
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
13 mai 2021 à 10:37
tout fonctionne bien jordane merci
0