Il y a actuellement 65 visiteurs
Mercredi 28 Juillet 2021
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 du dual boot
Bonjour,Pourriez-vous m'indiquer la procédure pour retrouver le "dual boot" entre Windows 10 et Linux Mint au démarrage sur un pc portable Compaq modèle 15-h052 nf ?MerciCordialement
Réponses: 4

Message Disque dur inaccessible: récupération des données
Bonjour,depuis hier mon disque dur (western digital passport 1 to, 2014), refuse tout transfert de fichier. Il s'affiche bien dans le menu windows et dans la gestion des disques. J'ai donc essayé avec le logiciel testdisk grâce auquel j'avais déjà pu récupérer mes données par le passé (ce même disqu ...
Réponses: 5

Message recuperation de donnees
Bonjour a tousje vais essayer de faire simplej'ai un disque dur externe qui me sert de magasinde temps en temps je met des docs je sais pas comment j'ai pu changer le disque local E en lecteur de DVDdu coup je peu plus acceder aux donneestoutes les solutions serait le bien venu pour me depannerj'ai ...
Réponses: 6

Message Récupération de données sur HDD externe impossible
Bonjour à tous et à toutes,Je suis nouveau sur le forum. J'ai 57 ans, j'ai quelques notions d'informatique, mais ne maîtrise plus toutes les nouvelles technologies et de ce fait suis un peu perdu, mais pas manchot.Je me permet de poster à cet endroit car je ne sais plus quoi faire.Voilà mon histoire ...
Réponses: 7

Message Recuperation de compte windows
Bonjour,J'ai récemment changé de PC et j'aurais aimé savoir si depuis mon compte Microsoft en ligne, il était possible de désactiver Windows afin de pouvoir le réactiver sur mon nouveau pc.Merci d'avance.
Réponses: 2

Message PC HS : récupération de données sur DD
Bonjour,Mon PC ne s'allume plus et je ne peux donc plus accéder à mes données stockées dessus.D'où ma question : comment accéder aux données du Disque Dur, si tant est bien sûr qu'il ne soit pas à l'origine du mal ?Peut-on par exemple "extraire" le disque en question du PC malade et le bra ...
Réponses: 4

Message RÉCUPERATION NVIDIA SUPPRIMÉE
Hello, j?ai un problème dans mon panneau des périphériques. Je n?ai plus qu?une seule carte graphique (Intel) qui s?affiche or normalement j?ai une NVIDIA en plus placé par le constructeur. Je ne peux plus lancer de gros jeux sans elle. J?ai récemment fait un nettoyage du PC, donc j?ai dû la supprim ...
Réponses: 9


Qui est en ligne

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


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