Signaler

Ré afficher les données d'un champ texte d'un formulaire [Résolu]

Posez votre question Gardeboue 11Messages postés mardi 9 mai 2017Date d'inscription 10 mai 2017 Dernière intervention - Dernière réponse le 10 mai 2017 à 23:51 par Gardeboue
Bien le bonjour à tous,

J'essaye de me dépatouiller avec un problème de syntaxe au niveau de l'argument value sur un champ de mon formulaire.
Je souhaite récupérer les infos déjà rentrées par l'utilisateur lors du retour sur le formulaire en cas de saisies erronée.

Voici mon bout de code partiel.


<fieldset><legend>Vos coordonnées :</legend>
		<p><label for="nom">Nom :</label>
<input type="text" id="nom" size="30" tabindex="1" name="nom" value="<?php  if (!empty($_POST['nom'])) {  echo htmlspecialchars($_POST['nom'],ENT_QUOTES);  } ?>" />



une autre variante:

value="<?php if(isset($_POST['nom'])) { echo htmlentities($_POST['nom']);}?>" /> 



Mais le soucis c'est que mon champ m'affiche le code entre guillemet en texte et non ma variable, normal puisque c'est entre guillemets , c'est donc considéré comme du texte simple.

J'ai fouillé partout et toutes les soluces que j'ai trouvé me donne le même résultat toujours à cause de ces guillemets.

Mon formulaire fonctionne (donc mon php est ok)

Je précise que je suis plutôt néophyte en la matière.

Merci à toute âme charitable qui pourra m'aider.
Utile
+0
plus moins
Tu as exécuter ton code sur un serveur ?

Ton bout de code html il est à la racine ou entre des balises PHP ?

Une page blanche comme ceci, exécuter sur le serveur affichera bien Hello :
<fieldset><legend>Vos coordonnées :</legend>
		<p><label for="nom">Nom :</label>
<input type="text" id="nom" size="30" tabindex="1" name="nom"
       value="<?php  echo 'Hello'; ?>" />
Gardeboue 11Messages postés mardi 9 mai 2017Date d'inscription 10 mai 2017 Dernière intervention - 9 mai 2017 à 10:19
Salut Felice

Oui je teste à chaque fois sur le serveur
mon code est en racine dans mon fichier html et le php est dans un fichier à part

J'avais essayé ta version mais même résultat à cause des guillemets
Répondre
Felice_ 266Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - 9 mai 2017 à 10:45
À mon avis, ton code PHP n'est pas lu par ton serveur…

Essai simplement dans un fichier blanc genre de test :
<?php

echo 'Hello';

?>
Répondre
Donnez votre avis
Utile
+0
plus moins
essai non concluant
je me retrouve toujours avec ceci en toute lettre dans mon champ

<?php echo 'Hello'; ?>

J'ai l'impression qu'effectivement le php n'est pas exécuté à l'ouverture de la page html mais cependant bien exécuté lors de la validation du formulaire vu qu'il fonctionne bien

Il doit me manquer quelque chose dans le html pour aller lire le php
y'aurait-il pas un bout de php à mettre dans le html?

Désolé de mon ignorance (je suis autodidacte)
Felice_ 266Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - 9 mai 2017 à 13:49
Ben tu as deux choix :
1) Soit tu changes l'extension de « html » à « php ».

2) Soit tu configures apache, tu cherches une ligne du type :
AddType application/x-httpd-php .php3 .php4 .php5 .php6 .php7 .php

Dans le fichier « httpd.conf » d'apache.

Faut rajouter donc « .html »
Répondre
Gardeboue 11Messages postés mardi 9 mai 2017Date d'inscription 10 mai 2017 Dernière intervention - 9 mai 2017 à 15:01
oups heu en fait le site est chez un hébergeur
Répondre
Felice_ 266Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - 9 mai 2017 à 15:27
Ben comme dit, changes l’extension de html à php.

Sinon regarde du coter de .htaccess.

Voir au niveau de l'administration de ton hébergeur
Répondre
Gardeboue 11Messages postés mardi 9 mai 2017Date d'inscription 10 mai 2017 Dernière intervention - 9 mai 2017 à 16:09
yo
Bon je viens d'essayer vite fait de changer l'extension en php et y'a du mieux:
Mes champs à l'ouverture du formulaire sont vide et ne contiennent plus le code en littéral.
MAIS je ne récupère pas mes variables au retour sur le formulaire.
Faut que je creuse çà mais j'ai pas le temps là maintenant.
En tout cas MERCI çà avance.
Par contre çà m'ennuie de ne pas pouvoir rester en html!!
je reviendrai te donner des nouvelles
Répondre
Felice_ 266Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - 9 mai 2017 à 16:24
Quand tu valides c'est un rafraichissement de ta page ?

Ou ton envoi ramène sur une nouvelle page que tu rediriges ?

Car si c'est le second cas, normal que tes $_POST sont vides…

Il faut utiliser les $_SESSION.
Répondre
Donnez votre avis
Utile
+0
plus moins
Je reviens à toi
bon effectivement tu as raison, en fait je sors de la page pour afficher le message d'information que le contenu du formulaire est erroné puis je ré-ouvre le formulaire par un lien. J'avais cru comprendre que le $_POST gardait la variable en mémoire suffisamment longtemps pour le cas présent (peut-être à tord) certes moins longtemps que la durée de vie en $_SESSION qui doit être de 30mn en gros. Bref pour le coup j'ai quand même essayé de remplacer mes POST en SESSION dans mon value mais toujours pas de retour avec mes variables.

J'ai démarré une session dans mon php en tout début de code après le <?php mais là dessus je suis pas serein de l'endroit exact ou il faut le placer.

A savoir que le formulaire est toujours en état de bon fonctionnement.
Je t'avoue que je patauge.
Felice_ 266Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - 9 mai 2017 à 21:51
Tes données de session doivent correspondes aux valeurs de tes posts.

Tu les affectes donc au niveau de l'action.

Et dans le formulaire c'est en effet les sessions qui remplaces tes posts.
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour Felice si tu es toujours là

Pfff c'est un truc de fou

J'ai bien affecté mes $_SESSION = $_POST dans le php
et rien. du coup j'ai fais l'essais de faire un truc tout con:
dans le php j'ai forcé la variable:

<?php
session_start();
$_SESSION['nom'] = 'bidule';
?>


et je me suis fait un autre php avec ça:

<?php
echo $_SESSION['nom'];
echo 'Banane';
?>


je vais lire le premier php puis le deuxième, et ben je te le donne en mille, il n'y a que Banane qui s'affiche.
çà devrait le faire pourtant !!!!
pourquoi je récupère pas cette foutue variable ???
Felice_ 266Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - 10 mai 2017 à 22:18
Dans ton second code rajoute la fonction « session_start » :
<?php
session_start();
echo $_SESSION['nom'];
echo 'Banane';
?>


Sinon il faut affecter chaques champs est non un tableau complet, exemple :
$_SESSION['nom'] = $_POST['nom'];
Répondre
Donnez votre avis
Utile
+0
plus moins
Oui entre temps j'ai refais un essais en rajoutant la session_start que je pensais effectivement avoir oublié et puis même résultat.
et pour ta deuxième remarque c'est bien ce que j'avais fais avant de forcer la variable.
j'ai que 4 champs dans mon formulaire donc j'avais bien fais ceci mais sans résultat:

<?php
session_start();
$_SESSION['nom'] = $_POST['nom'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['objet'] = $_POST['objet'];
$_SESSION['message'] = $_POST['message'];  
?>


Est ce que la position de cela est important: je l'ai mis tout de suite en tête de code?

J'ai l'impression que quelque chose deconne au niveau du serveur web mais pourtant le formulaire en lui même fonctionne bien et toutes les données sont bien transmises par mail, c'est juste ces données qui transitent pas d'une page à une autre.
Je sais vraiment plus quoi faire.

Merci de ta patience
Felice_ 266Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention - 10 mai 2017 à 23:11
Essai une fois avec :
<?php
session_start();

$_SESSION['nom'] = $_POST['nom'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['objet'] = $_POST['objet'];
$_SESSION['message'] = $_POST['message'];

session_write_close();
?>


Et avant le doctype…
Répondre
Donnez votre avis
Utile
+0
plus moins
désolé pareil
J'avais pas mis çà côté html mais uniquement en php
mais rien de mieux
a part que dans cette section si je force une variable comme je l'avais fais je la récupère bien au retour sur le formulaire. donc çà veux dire qu'en fait les $_POST sont vide
Donnez votre avis
Utile
+0
plus moins
YAHOOOOO

çà marche en fait dans le html il faut uniquement mettre session_start, normal puisqu'en sortant du php les variables sont vidées.

En tout cas un grand merci à toi çà a été laborieux mais j'aurais jamais trouvé l'histoire du html non implémenté dans le httpd-php du serveur.
Je vais quand même essayé de voir avec mon hebergeur.

Merci encore à toi
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !