Error: Undefined index: name in C:\wamp\www\xx\
Résolu
web.dev
Messages postés
65
Statut
Membre
-
Utilisateur anonyme -
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 :
Rappel :
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 :
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,
});
});
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
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
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 ?
-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 ?
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é :(
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é :(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionvar 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.
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
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
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
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
Et si ça ne pose pas de problème de confidentialité, oui, ça peut aider beaucoup d'héberger les éléments.
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.
le résultat de mon ajout de console.log(question) est:
Je n'ai pas pu vous envoyé le lien en privé
..merci quand même
<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
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 :
Pour le textarea, il aurait fallu
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 :
Si tu as compris ce que j'ai écris, tu dois pouvoir corriger toi-même.
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.
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,
});
});