(resolu) Inscription désinscription à une newsletter

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : (resolu) Inscription désinscription à une newsletter

Re: (resolu) Inscription désinscription à une newsletter

par brother » 25 févr. 2012, 14:48

Merci,

Je suis un idiot.....
Résultat .... No database... :oops:
Ca fonctionne, maintenant...

Cordialement

Re: Inscription désinscription à une newsletter

par Ryle » 25 févr. 2012, 12:56

Ce type de message d'erreur signifie que le résultat de l'exécution de ta requête sql n'est pas valide... donc que tu as eu une erreur lors de l'exécution. Il faut par conséquent vérifier que ta requête est correcte syntaxiquement (ce qui semble être le cas), et que ta table contact_news existe bien dans ta base de données, et que dans cette table tu as bien un champ mail...

Tu peux également utiliser la fonction mysql_error() pour connaitre les raisons de l'erreur retourné par mysql quand il a tenté d'exécuter ta requête.

Pour ta seconde question, il suffit de faire un DELETE en précisant que tu souhaites supprimer les enregistrements associés à l'email spécifié (ce qui est déjà le cas ici : "DELETE FROM contact_news WHERE mail='$email'" ).

(resolu) Inscription désinscription à une newsletter

par brother » 25 févr. 2012, 12:50

Bonjour,
Besoin d'un coup de pouce sur ce code, récupéré sur la toile... Dot voici le message d'erreur :
  • Warning: mysql_result(): supplied argument is not a valid MySQL result resource in
Cela correspond aux lignes
  • $sql = mysql_query("SELECT COUNT(*) AS nb FROM contact_news WHERE mail='$email'");
    if (mysql_result($sql,0,'nb') == 0)
et
  • $sql = mysql_query("SELECT COUNT(*) AS nb FROM contact_news WHERE mail='$email'");
    if (mysql_result($sql,0,'nb') == 0)

<?php     
if(isset($_POST['valider_news']))// on appuie sur le bouton "ok"     
{         // on verifie si l adresse est bonne        
 $motif = '`^[-_a-zA-Z0-9]+(.[-_a-zA-Z0-9]+)*@[-a-zA-Z0-9]+.[a-z]+(.[a-z]+)*$`';        
  $email = $_POST['mail'] ;         
  if (preg_match($motif, $email))// si l email est correct        
   {            
    require_once('connect.php');; // on se connecte a la bdd            
 // inscription            
       if ($_POST['action'] == "inscription") // si la variable $_POST['action'] est égale à inscription (valeur de value)            
        {                 // on vérifie si l'adresse email n'existe pas                 
        $sql = mysql_query("SELECT COUNT(*) AS nb FROM contact_news WHERE mail='$email'");                           
        if (mysql_result($sql,0,'nb') == 0)// si l'email n'est pas dans la table                 
        {
                             // on enregistre l'email dans la table "membre" de la bdd et on affiche un message 
   mysql_query("INSERT INTO contact_news (id_dossier, mail, id_utilisateur) VALUES (1, '$email', 1)");                          
                    
     //   mysql_query("INSERT INTO contact_news VALUES ('', '" . $email . "')");                                   
        echo "Votre E-mail a bien &eacute;t&eacute; enregistr&eacute;."; // message de validation                 
        }                 else // si existe l'email est dans la table                 
        {                     echo "Cette adresse e-mail est d&eacute;j&agrave; enregistr&eacute;."; // message de validation                
         }             }                         
// desinscription           
              elseif($_POST['action'] == "desinscription") //si la variable $_POST['action'] est égale à desinscription (valeur de value)            
               {                 //On vérifie si l'adresse email n'existe pas                
                $sql = mysql_query("SELECT COUNT(*) AS nb FROM contact_news WHERE mail='$email'");                
                 if (mysql_result($sql,0,'nb') == 0) // si l'email n'existe pas dans la table               
                 
                   {                    
                    echo "Cette adresse E-mail n&acute;est pas enregistr&eacute;e..."; // message de validation               
                      }                 else // si l'email existe dans la table                
                       {                     // on supprime l'email de la table "membre" de la bdd et on affiche un message                   
                        

 mysql_query("DELETE FROM contact_news WHERE mail='$email'");                                        
                            echo "Vous avez bien &eacute;t&eacute; d&eacute;sinscrit de nos fichiers.";// message de validation            
                                 }             }             // On se deconnecte de la bdd           
                                   mysql_close();         }       
                                     else // l'e-mail n'est pas rentré correctement       
                                       {             echo "L&acute;adresse n'est pas valide";// message de validation       
                                         }     }
                         ?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">               
<input type="text" name="mail" size="16" value="Votre e-mail" /><br/>        
<input type="radio" value="inscription" name="action" checked="checked" /> Inscription  <br/>       
<input type="radio" value="desinscription" name="action"/> D&eacute;sinscription  <br/>       
<input type="submit" name="valider_news" value="Valider" />       
 </form>

J'aimerais savoir également, comment faire pour supprimer la ligne complète dans la table à partir de la suppression d'un mail ?

Bien cordialement,

Merci.