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   -
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";
        }
  }
      ?>

13 réponses

  1. 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.
    1
  2. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  3. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    merci pour la reponse
    mais j ai fait une erreur énorme
    je reviens plus tard pour l expliquer
    0
  4. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
  7. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
  8. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    euhhh
    tu es sur que c est la ligne 22 ?
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      21 ... mais bon.. en lisant le code ... et en comparant avec la ligne 13 de l'autre code.. tu aurais pu le deviner !
      0
  9. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
  10. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      J'ai oublié de remettre en effet la variable $sql
      0
  11. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    je suppose que cela se passe a la ligne 23
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
  12. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    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
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
  13. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    voila cela fonctionne super nickel
    un grand merci jordane
    0
  14. flexi2202 Messages postés 3640 Date d'inscription   Statut Membre Dernière intervention   190
     
    tout fonctionne bien jordane merci
    0