Il y a actuellement 667 visiteurs
Vendredi 22 Novembre 2024
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

Récupération de la valeur des checkboxes

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

Récupération de la valeur des checkboxes

Message le 05 Mar 2009 15:38

Bonjour à tous.

J'ai installé le script pds-contact qui se trouve sur ce site: http://www.plusdescripts.fr/detail.php?id_script=6

Mon script modifié se trouve ici: http://oscompta.com/test/
Quand je valide le formulaire, je reçois le message d'erreur "offre.valeur' a la valeur Null ou n'est pas un objet" lorsque les checkboxes sont sous la forme:
Code: Tout sélectionner
<input type="checkbox" name="offre[]" class="checkbox" value="1">


Lorsque les checkboxes sont sous la forme:
Code: Tout sélectionner
<input type="checkbox" name="check1" class="checkbox" value="1">

le script fonctionne, mais ne récupère pas les données checked ou pas checked. Il envoie la valeur des checkboxes quoi qu'il arrive.
Voici le script quand le reste des champs fonctionne, hors checkboxes:
http://oscompta.com/test2/

J'ai fait un peu tous les forums, tester des dizaines de solutions, mais rien.
Auriez-vous une idée de la manière de solutionner le problème ???

D'avance merci pour votre aide,

Sandrine
Sandstaff
Visiteur
Visiteur
 
Messages: 5
Inscription: 05 Mar 2009 15:28
 


Message le 05 Mar 2009 17:02

Bonjour,

Pour commencer il y a trois cases à cocher qui doivent avoir les 3 un nom différent hors dans votre formulaire les trois s'appèlent offre[]. Il serait nettement mieux qu'elles s'appèlent offre1, offre2, offre3 etc... Pour que le formulaire puisse envoyer les trois variables il faut donc que les checkbox aient trois noms différents.

Ensuite, sur le script d'origine sur la page "envoyer_message.php", il n'y a rien pour prendre en charge les cases à cocher donc forcément ça coince si vous n'avez rien ajouté. Il faut donc une partie qui traite les variables offre1, offre2, offre3 (selon exemple ci-dessus) et ça devrait rouler...

Il faudrait donc ajouter des $_GET['offre1'] ou plutot des $_POST['offre1'] car get est normalement utilisé pour récupèrer des paramètres passés via une url alors que post est fait pour les formulaires. Cependant je ne vois que des $_GET dans ce script ??? :o Etrange d'autant que ce script n'a pas l'air d'être un modèle en terme de sécurité...

Bref vous en avez largement assez avec ça pour comprendre le problème je pense :wink:
Avatar de l'utilisateur
webmaster
Big Boss
Big Boss
 
Messages: 4909
Inscription: 11 Jan 2002 01:00
 

Message le 05 Mar 2009 17:28

Ben en fait je suis une novice, je ne fais pas encore très bien la différence entre GET et POST.
J'ai pris le script, je l'ai adapté, et hop.

En fait, le formulaire est validé par un fichier pds-contact.js
Quand je mets des noms différents dans mon formulaire (cas de l'exemple sur http://www.oscompta.com/test2/) et que je modifie tous les autres fichiers, le pds-contact.js devient ceci:

Code: Tout sélectionner
function valider(formulaire){
/* on récupère toutes les variables javascript */
var societe=formulaire.societe.value
var nom=formulaire.nom.value
var prenom=formulaire.prenom.value
var telephone=formulaire.telephone.value
var mobile=formulaire.mobile.value
var email=formulaire.email.value
var check1=formulaire.check1.value
var check2=formulaire.check2.value
var check3=formulaire.check3.value
var message=formulaire.message.value
var anti_bot=formulaire.anti_bot.value

/* On indique ici les longueurs minimales et maximales des champs que l'on veut*/
var societe_min=2
var societe_max=200
var nom_min=3
var nom_max=100
var prenom_min=3
var prenom_max=200
var email_min=8
var email_max=150
var message_min=4
var message_max=3000

/* Vérification des champs */
    if (societe==""){
    afficher_erreur('societe','Merci de bien vouloir indiquer le nom de votre société')
   }
   else if (societe.length<societe_min){
    afficher_erreur('societe','Le nom que vous avez indiqu&eacute; est trop court')
   }
   else if (societe.length>societe_max){
    afficher_erreur('societe','Le nom que vous avez indiqu&eacute; est trop long')
   }
   else{
   afficher_bon('societe')
    if (nom==""){
    afficher_erreur('nom','Merci de bien vouloir indiquer votre nom.')
   }
   else if (nom.length<nom_min){
    afficher_erreur('nom','Le nom que vous avez indiqu&eacute; est trop court')
   }
   else if (nom.length>nom_max){
    afficher_erreur('nom','Le nom que vous avez indiqu&eacute; est trop long')
   }
   else{
   afficher_bon('nom')
    if (prenom==""){
    afficher_erreur('prenom','Merci de bien vouloir indiquer votre prénom.')
   }
   else if (prenom.length<prenom_min){
    afficher_erreur('prenom','Le prénom que vous avez indiqu&eacute; est trop court')
   }
   else if (prenom.length>prenom_max){
    afficher_erreur('prenom','Le prénom que vous avez indiqu&eacute; est trop long')
   }
   else{
   afficher_bon('prenom')
    if (email==""){
       afficher_erreur('email','Vous devez entrer un email!')
      }
      else if (email.length<email_min){
       afficher_erreur('email','L email que vous avez indiqu&eacute; est trop court')
      }
      else if (email.length>email_max){
       afficher_erreur('email','L email que vous avez indiqu&eacute; est trop grand')
      }
      else{
      afficher_bon('email')
     if (message==""){
          afficher_erreur('message','Vous devez indiquer un message!')
         }
         else if (message.length<message_min){
          afficher_erreur('message','Le message que vous avez indiqu&eacute; est trop court')
         }
         else if (message.length>message_max){
          afficher_erreur('message','Le message que vous avez indiqu&eacute; est trop grand')
         }
         else{
            afficher_bon('message')
     if (anti_bot==""){
          afficher_erreur('anti_bot','Vous devez indiquer le code anti spam!')
         }
         else if (anti_bot.length!=4){
          afficher_erreur('anti_bot','Le code anti spam doit faire 4 lettres')
         }
         else{
                afficher_bon('anti_bot')

   formulaire.envoyer.disabled=true
                /* Appel de la fonction ajax*/
                function getXhr(){
              var xhr = null;
               if(window.XMLHttpRequest) // Firefox et autres
               xhr = new XMLHttpRequest();
               else if(window.ActiveXObject){ // Internet Explorer
                  try{
                   xhr = new ActiveXObject("Msxml2.XMLHTTP");
                   }
                   catch (e) {
                   xhr = new ActiveXObject("Microsoft.XMLHTTP");
                   }
               }
               else{ // XMLHttpRequest non supporté par le navigateur
               alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
               xhr = false;
               }
              return xhr
            }

               var xhr = getXhr()
            // On défini ce qu'on va faire quand on aura la réponse
            xhr.onreadystatechange = function(){
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
               if(xhr.readyState != 4 ){
               document.getElementById('wait').style.display='';
               }
               if(xhr.readyState == 4 && xhr.status == 200){
               document.getElementById('wait').style.display='none';
               document.getElementById('resultat').style.display='';
               document.getElementById('resultat').innerHTML = xhr.responseText;
               }

            }
            xhr.open("GET","gestion_pds/envoyer_message.php?message="+escape(message)+"&societe="+societe+"&nom="+nom+"&prenom="+prenom+"&telephone="+telephone+"&mobile="+mobile+"&check1="+check1+"&check2="+check2+"&check3="+check3+"&anti_bot="+anti_bot+"&email="+email+"",true);
            xhr.send(null);
            formulaire.envoyer.disabled=false;
            }
         }
         }
         }
      }
   }

}

function afficher_erreur(champ,erreur){

document.getElementById(champ+'_requis').innerHTML = erreur
document.getElementById('champ_'+champ).style.border="1px solid #ff0000"
document.getElementById('champ_'+champ).focus();
}

function afficher_bon(champ){
document.getElementById('champ_'+champ).style.border="1px solid green"
document.getElementById(champ+'_requis').style.display='none'
}


Le fichier envoyer_message.php est comme suit:
Code: Tout sélectionner
<?php
//Pas de cache possible pour la réponse
header("Cache-Control: no-cache");
header("Pragma: nocache");

require_once("config_pds.php");
//On teste si les champs sont remplis
   if (!isset ($_GET['societe']) or !isset ($_GET['nom']) or !isset ($_GET['prenom']) or !isset ($_GET['telephone']) or !isset ($_GET['mobile']) or !isset ($_GET['email']) or !isset ($_GET['message']) or !isset ($_GET['check1']) or !isset ($_GET['check2']) or !isset ($_GET['check3']) or !isset ($_GET['anti_bot'])){
    ?>
    <span class="erreur">
    Un des champs au moins n'est pas rempli!</span>
    <?php
   }
   else if ($_SESSION['verif_anti_bot']!=$_GET['anti_bot']){
    ?>
    <span class="erreur">
    Le code de v&eacute;rification n'est pas bon
    </span>
    <?php
   }
   else{
   //On formate les champs
   $societe=htmlentities(addslashes($_GET['societe']));
   $nom=htmlentities(addslashes($_GET['nom']));
   $prenom=htmlentities(addslashes($_GET['prenom']));
   $telephone=htmlentities(addslashes($_GET['telephone']));
   $mobile=htmlentities(addslashes($_GET['mobile']));
   $email=htmlentities(addslashes($_GET['email']));
   $check1=htmlentities(addslashes($_GET['check1']));
   $check2=htmlentities(addslashes($_GET['check2']));
   $check3=htmlentities(addslashes($_GET['check3']));
   $message=nl2br(stripslashes($_GET['message']));
   $destinataires="xxxxxxx@xxxxxxx.com";
   $contenu_message="Vous avez reçu une demande d'information sur le site TamTam Marketing:
  Société: ".$societe."
  Nom: ".$nom."
  Prénom: ".$prenom."
  Téléphone: ".$telephone."
  Mobile: ".$mobile."
  Email: ".$email."
Sujets choisis:
  ".$check1."
  ".$check2."
  ".$check3."
Message:
  ".$message."
";

      if (EMAIL_HTML==="oui"){
      //On envoi l'email au format HTML
       $From  = "From:".EMAIL_WEBMASTER."
";
      $From .= "MIME-version: 1.0
";
      $From .= "Content-type: text/html; charset= iso-8859-1
";
      $From .= "Reply-To: ".$email."
";
      mail(EMAIL_WEBMASTER,SUJET_EMAIL,$contenu_message,$From);
      //On teste si le mail a été envoyé correctement
         if (!mail){
         ?>
          <span class="erreur">
          Erreur! L'email n'a pu &ecirc;tre envoy&eacute;! Merci de r&eacute;&eacute;ssayer plus tard!<br />
          </span>
          <?php
         }
         else{
         ?>
          <span class="bon">
          L'email &agrave; bien &eacute;t&eacute; envoy&eacute;. Vous recevrez une r&eacute;ponse le plus vite possible!<br />
          </span>
          <?php
         }
      }
      else{
      //On envoi l'email au format texte
       $From  = "From:".EMAIL_WEBMASTER."
";
       $From .= "Reply-To: ".$email."
";
      mail(EMAIL_WEBMASTER,SUJET_EMAIL,$contenu_message,$From);
      //On teste si le mail a été envoyé correctement
         if (!mail){
         ?>
          <span class="erreur">
          Erreur! L'email n'a pu &ecirc;tre envoy&eacute;! Merci de r&eacute;&eacute;ssayer plus tard!<br />
          </span>
          <?php
         }
         else{
         ?>
          <span class="bon">
          L'email &agrave; bien &eacute;t&eacute; envoy&eacute;. Vous recevrez une r&eacute;ponse sous 24 heures !<br />
          </span>
          <?php
         }
      }

   //On supprime la session pour le code anti-spam
    unset($_SESSION['verif_anti_bot']);
    }


?>


Mes checkboxes sont comme suit:
Code: Tout sélectionner
<input type="checkbox" name="check1" class="checkbox" value="Scanner / Qualite point de vente">
<input type="checkbox" name="check2" class="checkbox" value="Mise en scene / Merchandising">
<input type="checkbox" name="check3" class="checkbox" value="Scenario vendeur / Methode de vente">


Quand je reçois le message, que les checkboxes soient cochées ou non, je reçois toujours la même chose:

Code: Tout sélectionner
Vous avez reçu une demande d'information sur le site TamTam Marketing:
  Société: test
  Nom: test
  Prénom: test
  Téléphone: test
  Mobile: test
  Email: un@email.com
Sujets choisis:
  Scanner / Qualite point de vente
  Mise en scene / Merchandising
  Scenario vendeur / Methode de vente
Message:
  test


J'ai essayé les scripts de ce site: http://www.swsysteme.com/tutos/tutocase.php
++++++ quelques dizaines d'autres en espérant une solution, mais nada, ça ne marche pas.

Néanmoins, je vais essayer de remplacer les GET par des POST, on verra ce que ça donne.
Toute suggestion est bienvenue.
Merci,

Sandrine
Sandstaff
Visiteur
Visiteur
 
Messages: 5
Inscription: 05 Mar 2009 15:28
 

Message le 05 Mar 2009 19:15

Ben il faut déjà me laisser analyser ce code avant de changer tes GET en POST car je n'avais l'info sur le javascript, qui renvoie peut être avec une url les infos sur du formulaire....

Par contre, je pourrai peut être pas répondre avant lundi ou mardi... Désolé :-?
Avatar de l'utilisateur
webmaster
Big Boss
Big Boss
 
Messages: 4909
Inscription: 11 Jan 2002 01:00
 

Message le 05 Mar 2009 21:51

C'est déjà super sympa de votre part de bien vouloir essayer de m'aider. Moi aussi, je vais continuer de chercher. D'ici là, j'aurai peut-être trouvé le hic.

Merci,

Sandrine
Sandstaff
Visiteur
Visiteur
 
Messages: 5
Inscription: 05 Mar 2009 15:28
 

Message le 07 Mar 2009 16:18

Ca y est j'ai trouvé :D :P :lol: :lol: :lol:
Je me suis aidée du script sur ce site: http://www.jejavascript.net/cours_jjs/js12objet.php

Le code des checkboxes donne cela:
Code: Tout sélectionner
<input type="checkbox" name="solution1" class="checkbox" id="solution1" onClick="ModifChamp1();return true;"/><input type="hidden" name="check1" value=""/>
<input type="checkbox" name="solution2" class="checkbox" id="solution2" onClick="ModifChamp2();return true;"/><input type="hidden" name="check2" value=""/>
<input type="checkbox" name="solution3" class="checkbox" id="solution3" onClick="ModifChamp3();return true;"/><input type="hidden" name="check3" value=""/>


et j'ai rajouté le code javascript suivant sur la page index:
Code: Tout sélectionner
<script language="Javascript">
<!--
function ModifChamp1()
{
   if (document.forms["formulaire"].solution1.checked)
   {
        document.forms["formulaire"].check1.value='Scanner / Qualité point de vente'
    }
   else
    {
        document.forms["formulaire"].check1.value='--'
    }
}
//-->
</script>
<script language="Javascript">
<!--
function ModifChamp2()
{
   if (document.forms["formulaire"].solution2.checked)
   {
        document.forms["formulaire"].check2.value='Mise en scène / Merchandising';
    }
   else
    {
        document.forms["formulaire"].check2.value='--';
    }
}
//-->
</script>
<script language="Javascript">
<!--
function ModifChamp3()
{
   if (document.forms["formulaire"].solution3.checked)
   {
        document.forms["formulaire"].check3.value='Scénario vendeur / Méthode de vente';
    }
   else
    {
        document.forms["formulaire"].check3.value='--';
    }
}
//-->
</script>


Par contre, dans le message que je reçois, il n'affiche pas la valeur "--" ni les accents français.

Bon, il me reste des progrès à faire, mais c'est un début.
8)
Sandstaff
Visiteur
Visiteur
 
Messages: 5
Inscription: 05 Mar 2009 15:28
 

Message le 07 Mar 2009 16:40

Voilà c'est résolu.
Il suffisait de mettre:
Code: Tout sélectionner
   $check1=nl2br(stripslashes($_GET['check1']));
   $check2=nl2br(stripslashes($_GET['check2']));
   $check3=nl2br(stripslashes($_GET['check3']));

et
Code: Tout sélectionner
   $From .= "MIME-version: 1.0
";
   $From .= "Content-type: text/plain; charset= iso-8859-1
";

dans le fichier envoyer_message.php

Super, c'est beau, ça marche. Merci.
Sandstaff
Visiteur
Visiteur
 
Messages: 5
Inscription: 05 Mar 2009 15:28
 



Sujets similaires

Message récupération d'une image windows
Bonjour à tous !Après plusieurs jours (eh oui !) à tenter de sauver mon D.D. je l'ai en finale effacé avec Killdisk (6 h pour 1,5 To)...Je lui réinstalle Win 10 (c'est en cours)Quand il était en état j'avais créé une image disque et un backup sur un D.D. amovible.J'espère récupérer ma précédente in ...
Réponses: 8

Message Récupération de sauvegarde
Bonjour à tous !J'ai eu de gros soucis avec mon PC entre Win 10 et Ubuntu. Suite à une manip avec Grub update (je pense) tout s'est mélangé. Plus de boot sur Grub. et messages concernant UEFI un peu hermétiques pour moi.Bref, après plusieurs tentatives avec Boot Repair infructueuses, j'ai reformaté ...
Réponses: 2

Message [Résolu] Récupération du dual boot
Bonjour,Pourriez-vous m'aider à remettre le dual boot" sur un pc portable HP modèle G7 1235 SF" qui a Windows 10 et Ubuntu 24.04 que j'ai installé dans " l'espace libre" du disque dur mais au démarrage c'est Ubuntu qui est démarre directement, comment faire ?J'aurai voulu garder ...
Réponses: 13

Message Récupération fichier disparu sur Windows 10
Bonjour,En tapant dans Word, le texte a subitement dusparu. Impossible de le récupérer. Je l'avais déja partiellement enregistré la veille : impossible également derécupérer ce dernier. Que faire ? Toutce que j'ai pu récupérer c'est une partie du texte que j'avais enregistré préalablement dans Drive ...
Réponses: 1

Message programme de récupération des données
Bonjour,J'ai besoin de récupérer quelques fichiers de la corbeille de mon PC.J'ai cliqué sur le bouton "Vider la corbeille".Je sais que les fichiers peuvent potentiellement être récupérés, mais avec un logiciel.Pouvez-vous m'en recommander un ?J'essaie actuellement un logiciel *********, m ...
Réponses: 1

Message Récupération de données d'un macbook
Est-ce que vous avez essayé de faire ce que message propose (Démarrer et tenir enfoncée la touche "D") pour accéder aux diagnostics ? Ce serait un bon début.Si c'est improductif, je suivrais l'ordre des propositions : Démarrage sans échec, Purge NVRam, Récupération.
Réponses: 13

Message [Réglé] Récupération données SSD WD Green 240 GB
Bonsoir à tous,J'ai malencontreusement débranché un ssd relié à un cable usb-sata par le mauvais côté. Càd que j'ai débranché le coté sata et non la fiche usb alors que le PC était allumé... Le disque n'est plus reconnu et demande à être formaté. Est-il possible de récupérrer mes données?PC - Win 10 ...
Réponses: 4


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.