Error: Undefined index: name in C:\wamp\www\xx\ [Résolu/Fermé]

Signaler
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018
-
 Utilisateur anonyme -
Bonjour tout le monde,

J'ai un formulaire dans la page d'accueil de mon site, et on remplissant le formulaire et en cliquant sur envoyer une fenêtre "ajax" s'ouvre et on trouvera le même formulaire avec les même champs déjà rempli par l'utilisateur avant de cliquez envoyer (cela juste pour confirmation) Alors j'ai utiliser les script php "session_start".

le problème est quand j'ajoute par exemple le variable "$email" le précédent variable ne fonctionne plus.

Merci pour vos suggestions

Voila mon code :

Index :



<div class="flex-caption">

<h5 class="f__left f__none-767 rappel-sucsess" data-wow-delay="0.02s" style="display:none">Merci !! vous serez appelé par un conseiller.</h5>
<form id="subscribe-form" class="sub-form wow fadeInRight" data-wow-delay="0.2s">

<h3 style="text-align:left;">Posez votre question d'ordre juridique</h3>
<fieldset>

<input type="text" name="name" id="name" placeholder="Nom et prénom:" style="margin-bottom:0.6em;">
<input type="text" name="tel" id="tel" placeholder="Numéro de téléphone:" style="margin-bottom:0.6em;">

<textarea cols="28" rows="6" name="question" id="question" placeholder="Message:" style="color:#999;" > </textarea>
<input type="hidden" value="contact/rappel.php" name="sendMailUrl2" id="sendMailUrl2" />
<a class="btn3 btn btn-theme" id="rappeler" data-type="submit">Poser Une Question</a>
</fieldset>
</form>
</div>
<a href="#" class="scrollup"><i class="fa fa-angle-up active"></i></a>
<!-- javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="js/jquery.js"></script>
<script src="js/jquery.easing.1.3.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.fancybox.pack.js"></script>
<script src="js/jquery.fancybox-media.js"></script>
<script src="js/google-code-prettify/prettify.js"></script>
<script src="js/portfolio/jquery.quicksand.js"></script>
<script src="js/portfolio/setting.js"></script>
<script src="js/jquery.flexslider.js"></script>
<script src="js/custom.js"></script>
<script src="js/contact.js"></script>

<input type="text" name="email" id="email" placeholder="Email:" style="margin-bottom:8px;">
<script type="text/javascript">
$("#rappeler").click(function() {
var nom=$('#name').val();
$.fancybox.open({
href : 'rappel.php?name=' + nom,
type : 'iframe',
padding : 5,

});
});


$("#rappeler").click(function() {
var email=$('#email').val();
$.fancybox.open({
href : 'rappel.php?email=' + email,
type : 'iframe',
padding : 5,

});
});
</script>


Rappel :

<?php 

session_start();

$name = $_GET["name"];
$email = $_GET["email"];

?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Question</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="css/bootstrap.min.css" rel="stylesheet" />
<link href="css/fancybox/jquery.fancybox.css" rel="stylesheet">
<link href="css/jcarousel.css" rel="stylesheet" />
<link href="css/flexslider.css" rel="stylesheet" />
<link href="css/style.css" rel="stylesheet" />


<!-- Theme skin -->
<link href="skins/default.css" rel="stylesheet" />

</head>
<body>
<div id="page">
<section class="contenu_2 bloc_fancy">



<div class="me_rappeler">
<div id="sendmessage" class="success">
Votre message a été envoyé. Merci!
</div>
<form id="contact-form">
<div id="erreur" class="erreur"></div>
<div class="contact-form-loader"></div>
<div class="row">
<div class="fancybox-skin ">
<h3 class="cmp">Posez votre question d'ordre juridique</h3>
<div class="fancy_input">
<div class="col-lg-6 field">
<input type="text" name="name" id="name" placeholder="Nom et prénom:" data-constraints="@Required @JustLetters" value="<?php echo $name;?>" />
</div>
<div class="col-lg-6 field">
<input type="text" name="email" id="email" placeholder="E-mail:" data-constraints="@Required @Email" value="<?php echo $email;?>"/>
</div>
<div class="col-lg-6 field">
<input type="text" name="tel" id="tel" placeholder="Numéro de téléphone:" data-rule="maxlen:4" data-msg="Entrer au moins 4 caractères" value="<?php echo $tel;?>" />

<div class="validation">
</div>
</div></div>
<div class="col-lg-8 margintop10 field">
<textarea name="question" id="question" placeholder="Question:" data-constraints='@Required @Length(min=20,max=999999)' value="<?php echo $question;?>" ></textarea>
</div>
<div class="col-lg-12 field" style="width:61%;float:right;">
<!--<img src="contact/captcha.php" class="captcha" alt="" style="display:none">
<input name="captcha2" type="hidden" class="captcha" id="captcha2" placeholder="Saisissez les caractères" style="width:40%;">
<input type="hidden" value="contact/rappel.php" name="sendMailUrl" id="sendMailUrl" />-->
<div class="btn-wrapper">
<a class="btn3 btn3_md btn btn-theme margintop10 pull-left" id="form-question" data-type="submit">Envoyer Question</a>
</div>
</div>
<div class="modal fade response-message">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-hidden="true">×</button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
You message has been sent! We will be in touch soon.
</div>
</div>
</div>
</div></div></div>
</form>
</div>
</section>

</footer>
</div>

</body>
<script src="js/jquery.js"></script>
<script src="js/validate3.js"></script>
</html>

12 réponses


Bonjour

Le problème, c'est que tu définis deux fois la fonction $("#rappeler").click(function() { : une fois pour envoyer "name", une fois pour envoyer "email". Mais une fonction ne peut pas être définie deux fois simultanément : la deuxième définition remplace la première, et tu n'envoies que "email".

Il suffit d'envoyer tes deux variables à la fois :
 $("#rappeler").click(function() {
        var email=$('#email').val();
        var nom=$('#name').val();
        $.fancybox.open({
          href : 'rappel.php?email=' + email+'&name='+nom,
          type : 'iframe',
          padding : 5,
      
        });
        });
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

Merci pour votre réponse, cela m'aide beaucoup.

Cependant, je veux faire envoyer les éléments suivants (Name, Email, Tel et Question)
Mais quant j'ai fais votre suggestion, le name, le mail et le tel ca marche bien sauf que pour la question elle ne s'affiche rien.

NB: Le name, l'email et le tel se sont des input et que le champ question est un textarea.

Voila mon code:
     $("#rappeler").click(function() {
var email=$('#email').val();
var nom=$('#name').val();
var tel=$('#tel').val();
var question=$('#question').val();

$.fancybox.open({
href : 'rappel.php?email=' + email+'&name='+nom+'&tel='+tel+'&question='+question,
type : 'iframe',
padding : 5,

});
});

J'ignore la raison profonde du problème, ça vient sans doute du fait que la question soit un textarea et non pas un input.
As-tu essayé avec une question très courte (un seul mot, aucun caractère spécial) ?
Il faut encoder les valeurs que tu ajoutes après rappel.php?, sinon elles ont toutes les chances de donner une url incorrecte. La fonction à utiliser est encodeURIComponent. Il faut l'utiliser individuellement sur chaque valeur : email, nom, etc. et pas sur l'uri dans son ensemble
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

Quand je change le textarea par un input type text ca fonctionne correctement !
Avez vous une autre idée alternative ?

Merci beaucoup

Je t'ai demandé deux choses :
-d'essayer avec une question très courte (un seul mot, aucun caractère spécial) ? (question était un textarea)
- d'utiliser la fonction encodeURIComponent

Avant de parler de nouvelles idées, pourrais-tu me dire si tu as tenu compte des anciennes ?
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

Désolé pour les questions :)

Absolument, j'ai essayé un seul mot et cela ne fonctionne pas!
et concernant la fonction "encodeURIComponent" je ne sais pas vraiment comment l'utilisé :(

var email=encodeURIComponent($('#email').val());
var nom=encodeURIComponent($('#name').val());
...


Tu devrais aussi afficher la valeur de question dans la console pour voir ce qu'elle contient : console.log(question)

Si tu ne sais pas te servir de la console javascript de ton navigateur, commence par cherche de l'aide dessus, c'est indispensable pour mettre au point du javascript.
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

Encore merci pour vos réponse,

J'ai ajouté la fonction comme suggéré mais comme d'habitude avec le textarea le champ reste vide.

J'ai installé Firebug et je n'ai malheureusement pas trouvé comment afficher la valeur de question comme vous me l'avez demandé

Cordialement

Je n'utilise pas Firebug.
Avec Chrome, je fais F12 et je clique sur l'onglet console, c'est tout.
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

J'ai essayé avec Chrome et il y a aucune info dans l'onglet console.
NB: Je peux hébergé les éléments en question si cela pourrai nous aider.

merci

il y a aucune info dans l'onglet console
Donc déjà pas d'erreur, c'est une bonne nouvelle.
Ajoute
console.log(question);
pour voir ce qu'il y a dans question.
Et si ça ne pose pas de problème de confidentialité, oui, ça peut aider beaucoup d'héberger les éléments.
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

le résultat de mon ajout de console.log(question) est:
<textarea cols="28" rows="6" name="question" id="question" placeholder="Question:" style="color:#999;"> </textarea>


Je n'ai pas pu vous envoyé le lien en privé

..merci quand même
Utilisateur anonyme
Tu devrais pouvoir me l'envoyer maintenant.
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

c'est fait
Vu.
Le problème est au niveau de la "fancybox".
J'ignore comment ce truc est censé marcher, mais il a un problème au niveau des textarea.
Quand on lui passe une valeur pour un champ, il la met avec l'attribut "value" dans la balise input correspondante, ce qui permet à la fancy box d'afficher la valeur que tu avais saisie.
Le problème, c'est qu'il utilise aussi l'attribut value pour initialiser un textarea, ce qui ne convient pas : le textarea s'initialise en mettant un texte entre les deux balises

Voici un extrait du code source généré pour la fancybox (avec Chrome : clic droit + Inspecter l'élément) avec des valeurs bidon que j'avais entrées :

<input type="text" name="tel" id="tel" placeholder="Numéro de téléphone:" data-rule="maxlen:4" data-msg="Entrer au moins 4 caractères" value="1234">
...
<textarea name="question" id="question" placeholder="Question:" data-constraints="@Required @Length(min=20,max=999999)" value="tutu"></textarea>


Pour le textarea, il aurait fallu
<textarea name="question" id="question" placeholder="Question:" data-constraints="@Required @Length(min=20,max=999999)" >tutu</textarea>


Il doit y avoir une manière de régler ça au niveau de la fancy box. Si comme je le suppose ce truc n'est pas de toi, as-tu un lien sur le site où tu as trouvé ça ? Il y a sûrement une explication.

[Edit] Re-vu
Ça se passe dans ta fonction de rappel :
  <textarea name="question" id="question" placeholder="Question:" data-constraints='@Required @Length(min=20,max=999999)' value="<?php echo $question;?>" ></textarea>

Si tu as compris ce que j'ai écris, tu dois pouvoir corriger toi-même.
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

Absolument, elle doit être ainsi:

 <textarea name="question" id="question" placeholder="Question:" data-constraints='@Required @Length(min=20,max=999999)' ><?php echo $question;?>  </textarea>

Ce qui veut dire, supprimer l'attribut valeur.

Merci
Utilisateur anonyme
Ouf, bravo et bonne nuit :)
Messages postés
49
Date d'inscription
mercredi 16 septembre 2015
Statut
Membre
Dernière intervention
8 janvier 2018

malheureusement, j'en ai pas le lien de cet exemple.
A votre avis je dois me pencher pour une solution alternative ?
Non, ça ne devrait pouvoir marcher comme ça. Je viens de modifier ma réponse précédente pendant que tu écrivais. Regarde la fin du message