Comment afficher un pop up newsletter avec condition [Résolu]

Signaler
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
-
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
-
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

Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021
869
bonjour,
si ton programme n'affiche rien, ajoute des echo.
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
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";
        }
		}
      ?>
Messages postés
16154
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 juin 2021
869
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.
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
merci pour la reponse
mais j ai fait une erreur énorme
je reviens plus tard pour l expliquer
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
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
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
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";
} 

 ?>
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
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...
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
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
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
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é....
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
euhhh
tu es sur que c est la ligne 22 ?
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
21 ... mais bon.. en lisant le code ... et en comparant avec la ligne 13 de l'autre code.. tu aurais pu le deviner !
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
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{
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
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.
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
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
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
J'ai oublié de remettre en effet la variable $sql
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
je suppose que cela se passe a la ligne 23
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
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
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
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
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
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)
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
voila cela fonctionne super nickel
un grand merci jordane
Messages postés
2937
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
24 juin 2021
138
tout fonctionne bien jordane merci