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 :

checkbox multi 2 le retour [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut checkbox multi 2 le retour
    Re-Bonjour le forum, et désolés de réecrire un post sur le sujet, mais j'ai cloturé trop top le précédent.

    En fait j'ai un peiti souci, je ne parvient plus a selectionner tous ensemble les checkbox en cliquant sur le bouton input type='checkbox' et en meme temps récupérer toutes les données correspondantes,

    C'est soit l'un soit l'autre, je sollicite votre grande gentillesse.


    voici le 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
     <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>
    <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"]; 
    $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>";
    echo "<td border='1' bgcolor='#FF3919' valign='top'><a href='mailto:$mail'><font face='Tahoma' size='2' color='#ffffff'>$mail</font></a></td>";
    }
    echo "</tr>";
    }?>
    </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>
    Je précise que si j'enleve les crochets dans cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td border='1' valign='top'><input type='checkbox' name='list[]' value='$mail' alt='$mail'>";
    en remplaçant par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td border='1' valign='top'><input type='checkbox' name='list' value='$mail' alt='$mail'>";
    Je peux tout selectionner en cliquant sur le bouton, mais je ne parviens pas a envoyer les valeur avec le form mail.php, par contre si je remet les crochets, je ne selectionne plus tous les checkbox d'un coup mais la fonction envoyer toutes les données selectionnées manuellement fonctionne trés bien.

    Merci et bon appetit, pour tous ceux qui ont le temps de manger

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    AHAHA, serait ce la première question piège de l'année.

    Est ce qu'un amateur comme moi aurait découvert les frontières du reel du PHP.....????

  3. #3
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut! Pour commencer, tu devrais lire cet article :
    http://pbnaigeon.developpez.com/tuto...phe-guillemet/

    Ensuite, pour récupérer la valeur des checkboxes, il faut obligatoirement que ce soit un tableau. Les crochets après le nom sont donc indispensables, sans quoi, l'interpréteur le verra comme un seul et unique objet. Tu dois donc remettre les crochets si tu comptes pouvoir récupérer l'état de chaque checkbox. Tu peux toujours cocher toutes les cases en une seule fois avec une fonction Javascript...

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Oui effetcivement l'article est trés interessant pour ce pb que je rencontre régulierement .

    Cependant, mon probleme principal est que justement avec le code javascript cela ne fonctionne pas car le fait de mettre les crochets empeche le fonctionnement et la reconnaissance des checkbox devient alos erronnée.

    voici mon code complet :
    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
    47
    48
    49
    50
    51
    52
     
    <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 ="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>
    <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"]; 
    $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>";
    echo "<td border='1' bgcolor='#FF3919' valign='top'><a href='mailto:$mail'><font face='Tahoma' size='2' color='#ffffff'>$mail</font></a></td>";
    }
    echo "</tr>";
    }?>
    </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>
    </body></htm>

    on voit bien que le bouton pour appeler le form est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <th style="background-color: #000000"><input type=button value=Tous onClick="this.value=check(this.form.list)"></th>
    donc il s'appel .list

    alors que les checkbox, eux se nomment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='checkbox' name='list[]' value='$mail' alt='$mail'>";
    list[], donc le code javascript ne fonctionne pas, et quand j'essai de mettre liste[] comme name de mes checkbox, il ne se passe rien car en fait le nom des checkbox c'est liste[$valeur de checkbox].

    Mon probleme est vraiement la, le reste je m'en doutait un peu qu'il fallait que je m'oriente vers du javascript, d'autant que j'avais tout précisé sur le sujet d'avant qui porte le meme nom (j'ai déposé un nouveau message au lieu de répondre a l'ancien.....)pffff.

    MAIS MERCI MILLES FOIS QUAND MEME DE M AVOIR REPONDU MEME SI CA NE RESOUD PAS MON PB ET J ESPERE ENCORE D AUTRES REPONSES SI POSSBILE? CE SERAIT HYPER HYPER GENTIL VU LES VACANCES ET LE WE.

    bonne soirée

  5. #5
    Membre chevronné 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
    Par défaut
    Bonjour,
    De mon coté, j'ai résolu le problème en faisant comme ca :

    Le code html écrit dans une boucle while qui me genere les checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="tid[]" value="'.$id.'">
    En réalité chez moi, c'est un tableau multidimensionnel. Mais je ne pense pas que ca change quoique ce soit....
    Donc, jusque la, j'ai fait comme toi.

    Ensuite, je n'ai pas fait un boutton pour lancer le javascript, mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" onClick="if (this.checked) { clicTous(this.form,true) } else { clicTous(this.form,false) };"> S&eacute;lection/d&eacute;s&eacute;lection globale
    Et le javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script language="javascript">
     
    function clicTous(form,booleen)
      {
      for (i=0, n=form.elements.length; i<n; i++)
      if (form.elements[i].name.indexOf(\'tid\') != -1)
        form.elements[i].checked = booleen;
      }
     
     
    </script>
    Voila, je ne te garantis rien, j'avais bien galéré aussi la-dessus !
    Bon courage,

    Sohnic

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Par défaut
    Merci a toi tu as solutionner a 99.99% mon Pb.

    Oui car en fait il y a une erreur dans ton script javascript,

    j'ai modifié /'tid/' par "tid" et tout fonctionne completement.

    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script language="javascript">
    function clicTous(form,booleen)
      {
      for (i=0, n=form.elements.length; i<n; i++)
      if (form.elements[i].name.indexOf("tid") != -1)
        form.elements[i].checked = booleen;
      }
    </script>
    Alors milles merci a toi sans qui je n'aurai jamais trouvé l'once d'une solution.

    Encore mille merci et trés bonne soirée a toi sohnic

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

Discussions similaires

  1. [MySQL] multi checkbox et fonction mail
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 25/02/2007, 11h35
  2. retour de checkbox
    Par philguio dans le forum Access
    Réponses: 2
    Dernier message: 29/12/2006, 23h04
  3. [Javascript] checkbox et retour de valeur
    Par xaaros dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/12/2006, 15h02
  4. [SWING][DEBUTANT]Retour d'un checkbox
    Par zandb69 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 08/05/2006, 17h24
  5. [HTML] Probleme valeur de retour checkbox
    Par krony dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 29/11/2005, 14h59

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