Error: Undefined index: name in C:\wamp\www\xx\

Résolu/Fermé
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018 - Modifié par baladur13 le 17/09/2015 à 11:44
 Utilisateur anonyme - 18 sept. 2015 à 00:12
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

Utilisateur anonyme
17 sept. 2015 à 10:58
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,
      
        });
        });
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
Modifié par web.dev le 17/09/2015 à 11:39
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,

});
});
0
Utilisateur anonyme
17 sept. 2015 à 11:41
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
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
17 sept. 2015 à 12:30
Quand je change le textarea par un input type text ca fonctionne correctement !
Avez vous une autre idée alternative ?

Merci beaucoup
0
Utilisateur anonyme
17 sept. 2015 à 14:09
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 ?
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
17 sept. 2015 à 14:27
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é :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
17 sept. 2015 à 18:45
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.
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
17 sept. 2015 à 19:32
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
0
Utilisateur anonyme
17 sept. 2015 à 19:58
Je n'utilise pas Firebug.
Avec Chrome, je fais F12 et je clique sur l'onglet console, c'est tout.
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
17 sept. 2015 à 20:03
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
0
Utilisateur anonyme
17 sept. 2015 à 21:20
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.
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
17 sept. 2015 à 22:17
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
0
Utilisateur anonyme
17 sept. 2015 à 23:08
Tu devrais pouvoir me l'envoyer maintenant.
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
17 sept. 2015 à 23:10
c'est fait
0
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.
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
Modifié par web.dev le 18/09/2015 à 00:07
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
0
Utilisateur anonyme
18 sept. 2015 à 00:12
Ouf, bravo et bonne nuit :)
0
web.dev Messages postés 49 Date d'inscription mercredi 16 septembre 2015 Statut Membre Dernière intervention 8 janvier 2018
17 sept. 2015 à 23:45
malheureusement, j'en ai pas le lien de cet exemple.
A votre avis je dois me pencher pour une solution alternative ?
0
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
0