Page 1 sur 1

mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 10:23
par ninus_05
Bonjour,

Je suis débutante en PHP et j'ai un problème de codage. Je souhaite créer un formulaire qui permettra de diriger mes clients vers le produit qui leur correspond et ce, en fonction des réponses qu'ils auront fournis dans le questionnaire.

Pour cela, on m'a conseillé de créer mon formulaire en renvoyant toutes les variables vers un même fichier php. ce fichier traitera l'ensemble des réponses et renverra vers le produit.

Seulement voila, depuis que j'ai intégré certains codes dans mon template, mon formulaire ne s'affiche plus sur mon site.
Pouvez-vous m'indiquer ce qui ne va pas ?

Merci par avance.

Dans mon template :

<head>
<script type="text/javascript">
function valid_form(type) {
document.forms['enreg'].elements['type'].value = type;
document.forms['enreg'].submit();
}
</script>
</head>

<body>
<form name="enreg" method="post" action="rec.php"> /*rec.php, c'est mon fichier récupérant l'ensemble des réponses clients et nécessaire à la redirection vers le produit approprié*/
<input type="hidden" name="type" value="" />

/* Le client fait sont 1er choix en cliquant sur une image. En fonction du son choix il sera redirigé vers une seconde page*/
<fieldset>
<legend>titre</legend>
<table>
<tr>
<td><a href="#" style="text-decoration:none" onclick="javascript:valid_form('part');"><img src="img.jpg"></a></td>

<td><a href="#" style="text-decoration:none" onclick="javascript:valid_form('pro');"><img src="img.jpg" align="left"></a></td>
</tr>
</table>
</form>
</fieldset>


Sur mon fichier rec.php traitant les données :

<?php

include(dirname(__FILE__).'/config/config.inc.php');

if(isset($_POST['type'])) {

if($_POST['type'] == 'part') {

$_SESSION['cmt_choisir']['type'] = 'part';

header('Location: page_de_redirection1.php');
exit;
}

if($_POST['type'] == 'pro') {

$_SESSION['cmt_choisir']['type'] = 'pro';

header('Location: page_de_redirection2.php');
exit;
}

}
?>

Re: mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 10:59
par macgawel
Bonjour.

1. Merci d'utiliser les balises de code [ php] ou [ code] (accessibles dans la "barre d'outils" pendant la rédaction des messages). Ce sera plus lisible...

2. Peux-tu préciser depuis quand ça ne s'affiche plus ? Quelles sont les modifications que tu as faites dans le template ?

3. Une première erreur : dans ton HTML, tu "croises" les balises form et fieldset :
<form name="enreg" method="post" action="rec.php">
<input type="hidden" name="type" value="" />
<fieldset>
...
</form>
</fieldset>
4. Je ne suis pas sûr que ton Javascript soit correct. Plutôt que document.forms['enreg'].elements['type'].value = type; je ferais document.getElementsByName("type").value = type;

Re: mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 11:05
par Skikit
La syntaxe de commentaire /* */ n'existe pas en html, utilise <!-- commentaire -->
Fais également attention à tes balises, tu ouvres <body> que tu ne fermes pas, puis tu fermes ton </form> avant ton </fieldset>.
Cela dit, ton formulaire s'affiche chez moi. Vérifie que les sources de tes images portent bien le même nom (.jpg et non .JPG).

Re: mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 11:11
par ninus_05
dsl pour la forme, c'est la première fois que je viens sur le forum.

En fait, j'ai créé mon formulaire en xhtml et mon lien entre mes pages se faisait grâce à des <a href> autour de mes boutons ou images.

Je pensais réaliser mon formulaire par cette méthode, en réalisant un formulaire à tiroir (une page pour chaque question). J'avais l'intention de créer mon code php simplement sur la dernière page afin de diriger vers le produit.

Mais en cours, on m'a indiqué qu'il était préférable d'utiliser une page php vers laquelle toutes mes variables seraient redirigées et on m'a intégré les codes que j'ai mis précédemment dans mon php et mon template.

Depuis que ces codes sont entrés, mon formulaire ne s'affiche plus en ligne.

Autre info : lorsque je supprime
<script type="text/javascript">
	function valid_form(type) {
		document.getElementsByName("type").value = type;
		document.forms['enreg'].submit();
	}
	</script>
mon formulaire réapparait mais le liens entre les pages ne fonctionne plus.

Re: mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 11:19
par ninus_05
Merci pour vos remarques,

Effectivement, ma balise </form> n'était pas fermée correctement. J'ai effectué les modifications dont vous m'avez fait part, mais le problème persiste.

Je viens également de m'apercevoir que mon menu droit et mon pied de page ont également disparu. je vais vérifier toutes mes balises pour voir si elles sont bien fermées et positionnées, le problème pourrait peut être venir de cela.

Re: mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 11:27
par ninus_05
Aucun problème dans mes balises,lorsque je supprime :
<script type="text/javascript">
	function valid_form(type) {
		document.getElementsByName("type").value = type;
		document.forms['enreg'].submit();
	}
	</script>
de ma balise <head></head>, tous mes éléments s'affichent de nouveau.
Le problème vient donc de ce code

Re: mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 11:58
par macgawel
Comme son nom l'indique, getElementsByName renvoie (potentiellement) plusieurs valeurs, regroupées dans un Array...

Quand tu l'utilises, il faut donc préciser à quel élément tu associes la valeur :

Code : Tout sélectionner

document.getElementsByName("type")[0].value = type;
(c'est moi qui t'ai enduit d'erreur, mais tu aurait dû vérifier la syntaxe :roll: )

Re: mon formulaire ne s'affiche plus

Posté : 11 févr. 2010, 12:14
par ninus_05
Comme je l'ai dit, c'est la première fois que je fais du php, j'ai dut m' y mettre pour le formulaire donc je m'excuse par avance si je fait pas mal d'erreurs mais je n'y connais vraiment pas grand chose.

J'ai effectué les nouvelles modifs et ça ne fonctionne encore pas. Skikit me dit qu'il a testé chez lui et que mon code fonctionne.
Comment ce fait-il que sur mon pc cela ne fonctionne pas?

J'utilise "Prestashop" pour construire mon site, est-ce que le problème ne pourrait pas venir d'une incompatibilité des codages php avec les templates de prestashop?

Re: mon formulaire ne s'affiche plus

Posté : 12 févr. 2010, 11:58
par Skikit
En effet, en mettant des liens vers des images de mon disque, ton formulaire s'affichait.
Cependant, les navigateurs ne se comportent pas tous de la même façon.
Si ton <img> ne trouve pas le lien que tu lui passes, Firefox va t'afficher un point d'interrogation tandis que Internet Explorer ne va rien afficher du tout.
C'est pour cette raison que je t'ai dit de vérifier tes liens (la faute sur les extensions est classique).