IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

multi checkbox et fonction mail [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut multi checkbox et fonction mail
    Bonjour le forum, j'espére que pour tous la ST valentin n'a pas été trop honereuse en argent mais généreuse en amour........

    Mon Pb est le suivant :

    J'ai un tableau récupéré d'une BDD SQL.
    Devant ce tableau, et en debut de chaque ligne, je souhaite mettre un checkbox (un checkbox serait également présent en debut(haut) du tableau qui pourrait tous les selectionner ou les deselectionner.)

    En fin de page je souhaite un bouton de form qui pourrait envoyer un mailing a tous les checkbox selectionner uniquement.

    J'ai essayé différents prog mais je ne sais pas récuperer les valeurs des chekbox séléctionner.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <html><head>
    <title>Accès sécurisé</title>
    <SCRIPT>
    var checkflag = "false";
    function check(field) {
    if (checkflag == "false") {
    for (i = 0; i < field.length; i++) {
    field[i].checked = true;}
    checkflag = "true";
    return "Aucun"; }
    else {
    for (i = 0; i < field.length; i++) {
    field[i].checked = false; }
    checkflag = "false";
    return "Tous"; }
    }
    </script>
    </head>
    <body leftmargin=0 topmargin=0 marginheight="0" marginwidth="0" bgcolor="#ffffff">
    <? 
    $conn = ................
    $db = mysql_select_db('......', $conn);
    ?>
     <form action ="mailing.php" name='myform' method='post'>
    <table border="1">
    <tr>
    <th style="background-color: #000000"><input type=button value=Tous onclick="this.value=check(this.form.list)"></th>
    <th style="background-color: #000000"><font face="Tahoma" size="1" color="#FFFFFF"><b>NOM</b></font></th>
    <th style="background-color: #000000"><font face="Tahoma" size="2" color="#FFFFFF"><b>PRENOM</b></font></th>
    <th style="background-color: #000000"><font face="Tahoma" size="2" color="#FFFFFF"><b>MAIL</b></font></th>
    </tr>
    <? $res = mysql_query("SELECT * FROM TABLE WHERE NOM <> '' order by NOM ASC ");
     while($ligne = mysql_fetch_array($res))
    {
    $nom = $ligne["NOM"]; 
    $prenom = $ligne["PRENOM"]; 
    $mail = $ligne["MAIL"]; 
    echo "<td border='1' valign='top'><input type='checkbox' name=list[$mail]  value='$mail' alt='$mail'>";
    echo "<td border='1' valign='top'><font face='Tahoma' size='2' color='#000000'>$nom</font></td>";
    echo "<td border='1' valign='top'><font face='Tahoma' size='2' color='#000000'>$prenom</font></td>";
    echo "<td border='1' valign='top'><font face='Tahoma' size='2' color='#000000'>$mail</font></td>";
    echo "</tr>";
    }?>
    </table>
    <table><tr><input type="submit" value="Envoyer" name="B1"></form></tr></table>
    </body>
    et le fichier mailing.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
    $db = mysql_connect("............................");
    mysql_select_db("..........",$db);
     
    foreach ($res3, $_POST['list'] )
    {
    $res3= mysql_query ("SELECT * FROM table where MAIL='$mail' GROUP by mail");
     
    while($candit = mysql_fetch_object($res3))
    {
    $d_Email[]=$candit->MAIL;
    }
    echo "\nContenu du tableau $d_Email";
    print_r ($d_Email);
    $nb=count($res3);
    echo $nb;
    for($i=0;
    $i<count($d_Email);
    $i++){ 
    //$d_Email[$i]
    $Email="$d_Email[$i]";
    $modif= mysql_query("UPDATE 000MAILING SET MAJ = 1, DATE = current_timestamp() WHERE MAIL = '$Email'") or die(mysql_error());
    echo "$Email";
    //email
    // on déclare les paramètres du mail 
    $expediteur = "";
    $objet = "";
    $contenu = "";
     
    mail($Email, $objet,$contenu, "From: $expediteur\r\nReply-To: $expediteur\r\nContent-Type: text/html; charset=\"iso-8859-1\"\r\n");
    }
    }
    mysql_close();
    ?>
    Merci a tous ceux qui prendront le temps de me lire.
    Trés bonne journée

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    En NAME de tes checkbox il faut que tu mettes list[] avec les crochets, comme ça dans ta page de traitement tu fais un foreach sur $_POST['list'] et tu pourras ainsi parcourir la liste des VALUE des checkbox qui ont été cochées.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Désolés, j'ai rajouté un code modifié aprés mon message initial. (voir plus haut)

    Merci de cette premiere réponse mais je crois que je rencontre quand meme un PB dans ma démarche, je fais les test de suite

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    apparemment, il ne conserve que la valeur du dernier champs coché, peut etre que j'ai mal modifié mon PRG

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Mon premier post est toujours valable, par contre tu as un problème dans ton SELECT il te manque le WHERE avant la condition.

    Edit : en plus je vois pas où tu récupères la sélection dans ton fichier de traitement actuellement...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    J'ai corrigé le WHERE, mais apparemment, il ne conserve que la valeur du dernier champs coché, j'ai certainement mal compris la mise en place de ta fonction, je cherche a comprendre ou est mon erreur.....

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Apparemment, je ne sais pas utiliser cette fct foreach, pouvez vous m'expliquer s'il vous plait?

    Merci d'avance

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    La doc est ton amie...
    http://fr.php.net/manual/fr/control-...es.foreach.php


    Ca donnerait un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($_POST['list'] as $valeur)
    {
       // traitement avec la valeur cochée qui est dans $valeur
    }
    Tu as bien rajouté les crochets dans le name de tes checkbox (et accessoirement je viens de voir qu'il serait bien de mettre des quotes pour que ce soit plus propre (name='list[]'))

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    ok, je vais tester, mais juste une question, je laisse vide entre les crochets, ou je peut mettre une valeur du type list[$mail], afin que je récupérer bien la valeur $mail par la suite?

    Merci

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    ça donnerait ça a peu prés si j'ai bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <html><head>
    <title>Accès sécurisé</title>
    <SCRIPT>
    var checkflag = "false";
    function check(field) {
    if (checkflag == "false") {
    for (i = 0; i < field.length; i++) {
    field[i].checked = true;}
    checkflag = "true";
    return "Aucun"; }
    else {
    for (i = 0; i < field.length; i++) {
    field[i].checked = false; }
    checkflag = "false";
    return "Tous"; }
    }
    </script>
    </head>
    <body leftmargin=0 topmargin=0 marginheight="0" marginwidth="0" bgcolor="#ffffff">
    <? 
    $conn = ................
    $db = mysql_select_db('......', $conn);
    ?>
     <form action ="mailing.php" name='myform' method='post'>
    <table border="1">
    <tr>
    <th style="background-color: #000000"><input type=button value=Tous onclick="this.value=check(this.form.list)"></th>
    <th style="background-color: #000000"><font face="Tahoma" size="1" color="#FFFFFF"><b>NOM</b></font></th>
    <th style="background-color: #000000"><font face="Tahoma" size="2" color="#FFFFFF"><b>PRENOM</b></font></th>
    <th style="background-color: #000000"><font face="Tahoma" size="2" color="#FFFFFF"><b>MAIL</b></font></th>
    </tr>
    <? $res = mysql_query("SELECT * FROM TABLE WHERE NOM <> '' order by NOM ASC ");
     while($ligne = mysql_fetch_array($res))
    {
    $nom = $ligne["NOM"]; 
    $prenom = $ligne["PRENOM"]; 
    $mail = $ligne["MAIL"]; 
    echo "<td border='1' valign='top'><input type='checkbox' name='list[]'  value='$mail' alt='$mail'>";
    echo "<td border='1' valign='top'><font face='Tahoma' size='2' color='#000000'>$nom</font></td>";
    echo "<td border='1' valign='top'><font face='Tahoma' size='2' color='#000000'>$prenom</font></td>";
    echo "<td border='1' valign='top'><font face='Tahoma' size='2' color='#000000'>$mail</font></td>";
    echo "</tr>";
    }?>
    </table>
    <table><tr><input type="submit" value="Envoyer" name="B1"></form></tr></table>
    </body>
    et le fichier mailing.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
    $db = mysql_connect("............................");
    mysql_select_db("..........",$db);
     
    foreach($_POST['list'] as $valeur)
    {
    $res3= mysql_query ("SELECT * FROM table where MAIL='$valeur' GROUP by mail");
     
    while($candit = mysql_fetch_object($res3))
    {
    $d_Email[]=$candit->MAIL;
    }
    echo "\nContenu du tableau $d_Email";
    print_r ($d_Email);
    $nb=count($res3);
    echo $nb;
    for($i=0;
    $i<count($d_Email);
    $i++){ 
    //$d_Email[$i]
    $Email="$d_Email[$i]";
    $modif= mysql_query("UPDATE 000MAILING SET MAJ = 1, DATE = current_timestamp() WHERE MAIL = '$Email'") or die(mysql_error());
    echo "$Email";
    //email
    // on déclare les paramètres du mail 
    $expediteur = "";
    $objet = "";
    $contenu = "";
     
    mail($Email, $objet,$contenu, "From: $expediteur\r\nReply-To: $expediteur\r\nContent-Type: text/html; charset=\"iso-8859-1\"\r\n");
    }
    }
    mysql_close();
    ?>


    Merci de ta gentillesse

  11. #11
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Voilà c'est exactement l'idée, après tu fais ta sauce comme bon te semble avec les $valeur que tu auras dans ton foreach

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Merci beaucoup de votre aide, je vous remercie trés sincérement, je vais faire les tests dans le WE et je vous tiendrais informé.

    Merci a plus tard.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Bonsoir, donc voici le résultat des test :

    Ma fonction transfert avec foreach de la list des case cochées fonctionne par contre ce qui ne fonctionne plus c'est le fait de cocher toutes les cases en cliquant sur le bouton prévu a cet effet donc il y a un PB de reconnaissance entre le script :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <SCRIPT>
    var checkflag = "false";
    function check(field) {
    if (checkflag == "false") {
    for (i = 0; i < field.length; i++) {
    field[i].checked = true;}
    checkflag = "true";
    return "Aucun"; }
    else {
    for (i = 0; i < field.length; i++) {
    field[i].checked = false; }
    checkflag = "false";
    return "Tous"; }
    }
    </script>
    <th style="background-color: #000000"><input type=button value=Tous onClick="this.value=check(this.form.list)"></th>
     
    //......
     
    echo "<td border='1' valign='top'><input type='checkbox' name='list[]' value='$imat' alt='$imat'>";
    Merci a tous et bonne soirée

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    je comprends pas , j'ai fait plusieurs tests, mais cela ne fonctionne plus, c'est comme ci le form n'était plus reconnu par le script depuis que j'ai mis les crochet a list[]....

  15. #15
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    As-tu une erreur affichée ?
    Le source de ton formulaire est-il conforme à tes attentes ?
    Le formulaire commence bien par <form ...> et se termine bien par </form> ?
    Dans le script de reponse au formulaire que donne la ligne print_r($_POST['list']) ?

    Tu as du faire une manip foireuse a un moment donné si ca marchait avant...

    Bon courage !
    Sohnic

    [EDIT]J'ai un doute soudain : tu as une erreur php ou javascript ?[/EDIT]

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Bonjour le forum,

    Je reviens vers vous car c'est la cata...

    Aprés avoir modifier moulte fois les scripts, plus rien de fonctionne .

    Je souhaite faire ceci :

    En cochant une case pour tout selectionner OU en cochant seulement les case que je veux, je souhaitent envoyer un mail au adresse mail correspondates aux cases cochées.

    Code de départ :
    Ici le bouton de coche tout ensemble ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     <form action ="mail.php" name='form' method='post'>
    <table width="603" cellspacing="0" cellpadding="0">
    <tr><td width="76" valign="top"><b><font color="#800000" size="2" face="Arial">Objet : </font></b><td width="513" valign="top"><font face="Arial" size="2"><input type="text" name="objet" size="69"></font></tr>
    <tr><td width="76" valign="top"><b><font color="#800000" size="2" face="Arial">Contenu : </font></b><td width="513" valign="top"><font face="Arial" size="2"><textarea rows="4" name="contenu" cols="59"></textarea></font></tr>
    </table>
    <table border="1">
    <tr>
    <th style="background-color: #000000"><input type=button value=Tous onClick="this.value=check(this.form.list)"></th>
    <th style="background-color: #000000"><font face="Tahoma" size="2" color="#FFFFFF"><b>NOM</b></font></th>
    </tr>
    <?
    $res = mysql_query("SELECT * FROM tables order by NOM ASC ");
     while($ligne = mysql_fetch_array($res))
    {
    $nom = $ligne["NOM"]; 
    $mail = $ligne["MAIL"]; 
    echo "<td border='1' valign='top'><input type='checkbox' name='list[]' value='$mail' alt='$mail'>";
    echo "<td border='1' bgcolor='#FF3919' valign='top'><font face='Tahoma' size='2' color='#ffffff'><b>$nom</b></font></td>";
    }?>
    </table>
    <table width="603" cellspacing="0" cellpadding="0">
    <tr><td colspan="2" width="566"><font face="Arial" size="2"><input type="submit" value="Envoyer" name="B1"></font></tr>
    </table>
    </form>
    Code de validation :
    Je ne parviens pas a écrire un code cohérent car en utilisant for each, cela me renvoi une valeur ou toutes les adresse mails se suivent alors qu'il faudrait que je puisse les obtenir séparément pour les exploiter avec la fonction mail() par la suite.

    Merci de votre aide, je suis un peu coulé

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Je remercie tout le monde, mais j'ai trouvé comment m'en sortir.

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH MX] Problème flash et fonction mail() php
    Par proutcore dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2007, 12h21
  2. Réponses: 5
    Dernier message: 29/10/2005, 16h44
  3. [PHPMailer] la fonction mail et moi !!!
    Par wdionysos dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 27/10/2005, 20h05
  4. Fonction mail avec HTML et images
    Par nico33307 dans le forum Modules
    Réponses: 1
    Dernier message: 05/07/2005, 23h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo