8768 sujets

Développement web côté serveur, CMS

Bonjour,
Je développe actuellement un système d'alerte trafic pour une compagnie de bus.
Les utilisateurs peuvent s'y abonner et recevoir une notification par mail et/ou SMS lorsqu'une nouvelle alerte est publiée.

J'enregistre les abonnements aux alertes dans une table (clients_alertes).
J'aimerais effectuer une vérification : que si l'utilisateur est abonné à une alerte il ne puisse pas s'y abonner une seconde fois.

Exemple:
upload/1604501978-66749-capture.png

Le client (client_ID) n°7 est abonné à la ligne (ligne_ID) n°4, 19 et encore 4.

Je n'arrive pas trouver la requête pour vérifier cela.

J'ai essayé COUNT mais pas la bonne solution.

Voici un extrait du code :
Je viens d'essayer cette requête "basique" cela fonctionne que si l'on ajoute la même alerte à la suite. (logique par rapport à fetch();)


$ReqVerification = $bdd->prepare("SELECT ligne_ID FROM clients_alertes WHERE client_ID = ?");
$ReqVerification->execute(array($_SESSION['ID_client']));
$RetourLigne = $ReqVerification->fetch();

  if($RetourLigne == $ligne) {
$ReqAjouterAlerte = $bdd->prepare("INSERT INTO clients_alertes(client_ID, ligne_ID, mail, sms) VALUES(?, ?, ?, ?)");
$ReqAjouterAlerte->execute(array($_SESSION['ID_client'], $ligne, $mail, $sms));


Voilà, j'espère être clair, merci
Modérateur
Bonjour,

Il me semble que dans ton SELECT, il suffit d'ajouter un test pour $ligne.
$ReqVerification = $bdd->prepare("SELECT * FROM clients_alertes WHERE client_ID = ? AND ligne_ID = ?");
$ReqVerification->execute(array($_SESSION['ID_client'], $ligne));
$RetourLigne = $ReqVerification->fetch();

  if(!$RetourLigne) {
$ReqAjouterAlerte = $bdd->prepare("INSERT INTO clients_alertes(client_ID, ligne_ID, mail, sms) VALUES(?, ?, ?, ?)");
$ReqAjouterAlerte->execute(array($_SESSION['ID_client'], $ligne, $mail, $sms));


Amicalement,
Modifié par parsimonhi (04 Nov 2020 - 17:04)
Meilleure solution
parsimonhi a écrit :
Bonjour,

Il me semble que dans ton SELECT, il suffit d'ajouter un test pour $ligne.
$ReqVerification = $bdd->prepare("SELECT * FROM clients_alertes WHERE client_ID = ? AND ligne_ID = ?");
$ReqVerification->execute(array($_SESSION['ID_client'], $ligne));
$RetourLigne = $ReqVerification->fetch();

  if(!$RetourLigne) {
$ReqAjouterAlerte = $bdd->prepare("INSERT INTO clients_alertes(client_ID, ligne_ID, mail, sms) VALUES(?, ?, ?, ?)");
$ReqAjouterAlerte->execute(array($_SESSION['ID_client'], $ligne, $mail, $sms));


Amicalement,


Wow, parfait, je te remercie