Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
650 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire : envoyer des données dans le même fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire : envoyer des données dans le même fichier

n°1605530
lousixtyfo​ur
Posté le 28-08-2007 à 23:36:20  profilanswer
 

Bonsoir,
 
J'essaie pour la première fois d'envoyer des données récupérées dans un formulaire dans ce même formulaire afin d'éviter de travailler avec un formulaire à pages multiples.
Lorsque j'exécute le code, aucune des valeurs des variables ne m'est retournée dans le navigateur.
 
Voici le code partiel exécuté dans la balise body (environnement easyphp 1.8). Le fichier est nommé petition.php :
 

Citation :


 
        <?
  echo $nom;
  echo $prenom;
 ?>
 
 <form name="petition" method="post" action="petition.php">
   
   <table border=0>
    <tr>  
     <td> Nom :  
     </td>
     <td><input type="text" name="nom" size="40" >
     </td>
    </tr>
    <tr>
     <td> Prénom :  
     </td>
     <td><input type="text" name="prenom" size="40" >
     </td>
    </tr>
                         ...
                         </table>
           </form>


 
Merci d'avance,

mood
Publicité
Posté le 28-08-2007 à 23:36:20  profilanswer
 

n°1605531
sielfried
Posté le 28-08-2007 à 23:43:50  profilanswer
 

http://fr.php.net/manual/fr/reserv [...] ables.post


Message édité par sielfried le 28-08-2007 à 23:44:04

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1605533
lousixtyfo​ur
Posté le 29-08-2007 à 00:17:44  profilanswer
 

J'ai toujours le même pb avec le code ainsi modifié :
 

Citation :


echo $_POST["nom"];

n°1605676
Metabolicm​an
Posté le 29-08-2007 à 11:18:24  profilanswer
 

et comme ceci?
 
echo $_POST['nom'];

n°1605695
durkheim
Posté le 29-08-2007 à 11:32:28  profilanswer
 

Ou fais un var_dump($_POST), carrément.

n°1605737
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 29-08-2007 à 12:45:45  profilanswer
 

ce n'est pas parce que tu fais un echo $nom que forcément le name="nom" sera affiché ... (du moins sa valeur).
il existe une option dans le php.ini qui s'appelle "register globals" qui peut être à on ou off, pour définir cela justement. Ce qui fait le souci d'easyPHP c'était - du moins pour les versions 1.6 et 1.7 - cette valeur qui fait qu'on pouvait injecter n'importe quoi dans la page.
 
au lieu de :

Code :
  1. <?php
  2.   echo $nom;
  3.   echo $prenom;
  4. ?>


 
ecris plutôt :

Code :
  1. <?php
  2.   echo $_POST['nom'];
  3.   echo $_POST['prenom'];
  4.   var_dump($_POST); // donnera toutes les valeurs récupérées ainsi que leur type
  5. ?>


 
Pour l'action du formulaire, tu peux la laisser vide :

Code :
  1. <form id="petition" method="post" action="">
  2. ...
  3. </form>


 
PS : pourquoi un tableau pour mettre en page le formulaire ?
 
EDIT : un peu grilled, désolé.


Message édité par NewsletTux le 29-08-2007 à 12:46:40
n°1605744
omega2
Posté le 29-08-2007 à 13:06:20  profilanswer
 

NewsletTux > En xhtml, on a pas le droit de mettre des balises input directement dans une balise form (dixit la norme xhtml1.x)
Pour le tableau au lieux d'un div ou de listes, je dirais : pourquoi pas? D'une certaine manière, on peut voir ça comme des données tabulaire avec le libelle en première colonne et la valeur (à saisir) dans la seconde. D'ailleurs même sur alsacréations, ils n'arrivent pas à déterminer si c'est une bonne (si oui à partir de combien de zone de saisie) ou une mauvaise pratique.

n°1605984
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 29-08-2007 à 18:55:26  profilanswer
 

tout à fait, je pensais surtout (en termes d'accessibilité et d'ergonomie) aux <label> déjà, puis soit à des <fieldset>, soit à des balises autres. Perso j'utilise souvent les <p> en mettant un attribut float à mes lables avec une certaine largeur, ce qui donne l'effet d'un tableau sans l'être.
 
Sa manipulation est aussi juste, mais logiquement parlant, ses champs ne sont pas reliés aux textes qui sont censés les décrire.
 
Et pour la norme, il s'agit de la cversion Strict de l'XHTML. Je crois que le transitional le permet encore.

n°1606108
lousixtyfo​ur
Posté le 30-08-2007 à 09:52:27  profilanswer
 

Merci à tous pour vos réponses.
 
Je ne comprends pas ce qu'il s'est passé car en testant le script dans le navigateur aujourd'hui tout marchait. Avec "" ou ''. Tant mieux.
 
J'en ai profité pour initialiser les variables et éviter le fameux "undefined index".
Donc ça donne :

Citation :


           <?
    if (isset($_POST['nom']) && isset($_POST['prenom']))
    {
    echo $_POST['nom'];  
           echo $_POST['prenom'];
    exit;
    }
           ?>


 
Par contre, je souhaitais initialiser les variables avec une méthode que je pensais équivalente mais j'ai un retour "undefined index nom". Donc ou les méthodes ne sont pas équivalentes ou mon code n'est pas bon.
Voici le code :

Citation :


           <?
    if (($_POST['nom'] <> "" ) && ($_POST['prenom'] <> "" ))
    {
    echo $_POST['nom'];  
           echo $_POST['prenom'];
    exit;
    }
          ?>


 
Merci,

n°1606120
sielfried
Posté le 30-08-2007 à 10:01:46  profilanswer
 
mood
Publicité
Posté le 30-08-2007 à 10:01:46  profilanswer
 

n°1606160
lousixtyfo​ur
Posté le 30-08-2007 à 11:04:29  profilanswer
 

>sielfried : j'essaie d'interpréter sslt  :)  
 
Suggères-tu d'utiliser empty à la place de isset ou encore du test d'inégalité?
 
Parce que par exemple !empty vérifie que :
- le champs n'est pas vide
- la valeur n'est pas 0
- et donc que la variable existe
 
Merci
 
 
 
 
 
 
 

n°1606197
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 30-08-2007 à 11:44:17  profilanswer
 

si tu as un tableau (array) - et c'est aussi valable pour une variable - tu peux vérifier si une clé (ou ladite variable) est définie :

Code :
  1. if (isset($array['key'])) ...
  2. // ou bien pour une variable
  3. if (isset($var)) ...


 
ceci vérifie que ta variable est définie, mais ne vérifie nullement le contenu.
En effet, dire $var = ''; initialise ta variable avec un contenu vide. Elle répondra "true" au isset, mais false si tu testes par rapport à un entier, par exemple (le cas du zéor est différent s'il s'agit d'un string ou d'un entier)
 
Isset n'est pas empty.

n°1606261
lousixtyfo​ur
Posté le 30-08-2007 à 13:09:50  profilanswer
 

Dans mon cas, je ne veux pas que le champs nom soit vide ou corresponde à 0, donc il me semble qu'empty est plus approprié qu'isset qui ne vérifierait donc que la variable a bien été initialisée mais peut-être avec une valeur vide.
 
Comment aurait-il fallu écrire ces quelques lignes pour que le test d'inégalité ne renvoie pas l'erreur citée ci-dessous.

n°1606281
lousixtyfo​ur
Posté le 30-08-2007 à 14:07:13  profilanswer
 

Merci à ceux qui pourront m'aider de m'indiquer une solution concernant le test d'inégalité du post précédent.
 
Ma prochaine question concerne la mémorisation des informations données par l'utilisateur et le rafraîchissement de la page. En effet je souhaiterais qu'elles s'affichent dans le champs de saisie lorsque l'utilisateur rafraîchira la page.  
Le code que j'ai écris ci-dessous entraîne l'affichage de celles-ci dans le champs de saisie lorsque l'utilisateur envoie la page (!) alors qu'il n'a même pas rafraîchit la page  :pt1cable:  
 

Citation :


 
<form name="petition" method="post" action="petition.php">
 
<table border=0>
   
<!-- Gestion du nom : -->
<?
// Teste que le champs n'est pas vide ou égal à 0
// et que l'utilisateur a déjà appuyé sur le bouton Envoyer pour éviter ainsi l'affichage du message d'erreur  
if ( empty($_POST['nom']) && isset($_POST['envoyerDonnees']) )
{
echo "<font color='#FF0000'> Le nom doit être rempli : </font><br><br>";
}    
?>  
<tr>      
<td> Nom :  
</td>
<td><input type="text" name="nom" size="40" value="<? if (isset($_POST['nom'])) {echo $_POST['nom'];} ?>">
</td>
</tr>
     
<!-- Gestion du prénom : -->
....
 
<tr>
<td>
</td>
<td><input type="submit" name="envoyerDonnees" value="Envoyer">
<input type="reset" name="effacer" value="Effacer">
</td>
</tr>
</table>
</form>
 

n°1606283
rufo
Pas me confondre avec Lycos!
Posté le 30-08-2007 à 14:12:01  profilanswer
 

Pour la mémorisation : variables de session ou champs cachés dans le formulaire.

n°1606657
lousixtyfo​ur
Posté le 31-08-2007 à 10:01:46  profilanswer
 

J'ai retenu la solution du champs caché.
 

Citation :


 
...
 
<form name="petition" method="post" action="petition.php">
 
<table border=0>
   
<!-- Gestion du nom : -->
<?
// Teste que le champs n'est pas vide ou égal à 0
// et que l'utilisateur a déjà appuyé sur le bouton Envoyer pour éviter ainsi l'affichage du message d'erreur  
if ( empty($_POST['nom']) && isset($_POST['envoyerDonnees']) )
{
echo "<font color='#FF0000'> Le nom doit être rempli : </font><br><br>";
}    
?>  
<tr>      
<td> Nom :  
</td>
<td><input type="text" name="nom" size="40" >
<!--Mémorisation de la valeur pour prévision rafraichissement de la page -->
<input type="hidden" name="memorisationNom" value="<? if (isset($_POST['nom'])) {echo $_POST['nom'];} ?>" >
</td>
</tr>
     
<!-- Gestion du prénom : -->
 
...
 
<td><input type="submit" name="envoyerDonnees" value="Envoyer">
<input type="reset" name="effacer" value="Effacer">
</td>
</tr>
</table>
</form>
 
...
 


 
Lorsque je valide le formulaire et que je reviens en arrière, le nom rentré par l'utilisateur apparait bien mais les données du prenom, du mél aussi alors que je n'ai même pas ajouté encore d'éléments hidden pour ces variables

n°1606691
omega2
Posté le 31-08-2007 à 10:50:48  profilanswer
 

lousixtyfour > C'est le comportement par défaut de ton navigateur quand on fait "page précédente" (ou qu'on clique sur le bouton "Reculer d'une page" ou qu'un script javascript renvoie à la page précédente de l'historique du navigateur) .
 
PHP n'a rien à voir avec ça.

n°1606695
lousixtyfo​ur
Posté le 31-08-2007 à 11:12:17  profilanswer
 

J'ai exactement le même résultat sous Firefox que sous IE.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire : envoyer des données dans le même fichier

 

Sujets relatifs
sqlplus: pb format colonne dans un fichier texte issu d'une requête[Excel] Envoyer le contenu d'une cellule XL par mail ?
création formulaire de rechercheSupression Sous-Répertoire(s) et Fichier(s)
[VBA] Via Macro Excel, Ouvrir & Editer fichier CSV [RÉSOLU]Création d'une image pour valider un formulaire
selectionner un fichier qui a 15 joursavec une macro Excel, ouvrir un fichier sous un autre logiciel
[ASP.NET][C#][Résolu]données d'un datagridviewredimensionnement sous formulaire dans un etat
Plus de sujets relatifs à : Formulaire : envoyer des données dans le même fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR