Bouton d'annulation en PHP et variables de session

Bouton d'annulation en PHP et variables de session - PHP - Programmation

Marsh Posté le 27-01-2009 à 13:35:19    

Bonjour,
je me suis mis depuis peu à php5 et j'aimerais faire un formulaire avec accès à une base de données.
Pour expliquer en 2-3 mots: j'ai une page "Ajout.php" qui affiche un menu déroulant qui va offrir le choix des données à insérer. Lorsque l'utilisateur a fait son choix, nous rechargeons cette même page avec le formulaire concerné.
Ce formulaire est contenu dans une méthode située dans une autre classe et nous faisons appel à celle-ci.
 
Il est également nécessaire de faire un contrôle de la saisie de l'utilisateur afin de voir si tous les champs sont entrés. Si l'utilisateur a déjà rentré des données, nous les rechargeons (d'où variable de session).
 
Tout est ok sauf pour le bouton d'annulation qui ne veut pas effacer les variables de session. Y'aurait-il une âme charitable pour m'aider s'il vous plaît?
P.S. Inutile de s'acharner en disant que le code est à ch*er (je débute) mais plutôt apporter des remarques constructives svp  ;)
voici le code:
[Employe.php]
<?php
public function ajouter(){
     echo '<form method="POST" action="Ajout.php">';
     echo '<caption><h2> Données pour les employés </h2></caption>';
     echo '<table border =0><tr bgcolor=#ccccc>';
        echo '<td width=150>Champ</td>';
        echo '<td width=15>Valeur</td></tr>';
        echo '<tr><td>N° personnel: <sup> (*)</sup></td><td align="center"><input type = "text" name="numAvs" size="25" maxlength="13"';
        if (isset($_SESSION['numAvs'])) // Si on a le numéro d'AVS entré
        {
           echo 'value="' . $_SESSION['numAvs'] . '"'; // On pré-remplit le champ
        }
  echo '/></td><td>(13 caractères max)</td></tr>';
        echo '<tr><td>Nom: <sup> (*)</sup></td><td align="center"><input type = "text" name="nom" size="25" maxlength="25"';
  if (isset($_SESSION['nom'])) // Si on a le nom entré
        {
           echo 'value="' . $_SESSION['nom'] . '"'; // On pré-remplit le champ
        }
  echo '/></td></tr>';
     echo '<tr><td>Prenom: </td><td align="center"><input type = "text" name="prenom" size="25" maxlength="25"/></td></tr>';
  echo '<tr><td>Téléphone: </td><td align="center"><input type = "text" name="telephone" size="25" maxlength="25"/></td></tr>';
  echo '<tr><td>Droits: </td><td><select name="droit" size="1">
           <option>Administrateur
           <option>Utilisateur</td></tr>';
  echo '<tr><td colspan="2" align="left"><input type="submit" value="Envoyer"><INPUT type="reset" name="reset" value="Remise à zéro"></td></tr>';
  echo '<tr><td><sup> (*)</sup>: champs obligatoires</td></tr>';
  echo '</form>';
    }
?>
 
J'ai aussi tenté de remplacer le bouton du reset par:
<input type="submit" name="reset" value="Remise à zéro" onclick="return resetValues()">
avec la fonction
public function resetValues(){
     $_SESSION['numAvs']="";
  $_SESSION['nom']="";
  $_SESSION['prenom']="";
  $_SESSION['telephone']="";
}
 
mais ça ne marche pô non-plus...
 
Comment appeler la fonction pour qu'il recharge la page depuis la page "Ajout.php"?
 
Merci pour votre aide...

Reply

Marsh Posté le 27-01-2009 à 13:35:19   

Reply

Marsh Posté le 27-01-2009 à 14:44:20    

moaaaaa a écrit :

Bonjour,
je me suis mis depuis peu à php5 et j'aimerais faire un formulaire avec accès à une base de données.
Pour expliquer en 2-3 mots: j'ai une page "Ajout.php" qui affiche un menu déroulant qui va offrir le choix des données à insérer. Lorsque l'utilisateur a fait son choix, nous rechargeons cette même page avec le formulaire concerné.
Ce formulaire est contenu dans une méthode située dans une autre classe et nous faisons appel à celle-ci.
 
Il est également nécessaire de faire un contrôle de la saisie de l'utilisateur afin de voir si tous les champs sont entrés. Si l'utilisateur a déjà rentré des données, nous les rechargeons (d'où variable de session).
 
Tout est ok sauf pour le bouton d'annulation qui ne veut pas effacer les variables de session. Y'aurait-il une âme charitable pour m'aider s'il vous plaît?
P.S. Inutile de s'acharner en disant que le code est à ch*er (je débute) mais plutôt apporter des remarques constructives svp  ;)
voici le code:
[Employe.php]
<?php
public function ajouter(){
     echo '<form method="POST" action="Ajout.php">';
     echo '<caption><h2> Données pour les employés </h2></caption>';
     echo '<table border =0><tr bgcolor=#ccccc>';
        echo '<td width=150>Champ</td>';
        echo '<td width=15>Valeur</td></tr>';
        echo '<tr><td>N° personnel: <sup> (*)</sup></td><td align="center"><input type = "text" name="numAvs" size="25" maxlength="13"';
        if (isset($_SESSION['numAvs'])) // Si on a le numéro d'AVS entré
        {
           echo 'value="' . $_SESSION['numAvs'] . '"'; // On pré-remplit le champ
        }
  echo '/></td><td>(13 caractères max)</td></tr>';
        echo '<tr><td>Nom: <sup> (*)</sup></td><td align="center"><input type = "text" name="nom" size="25" maxlength="25"';
  if (isset($_SESSION['nom'])) // Si on a le nom entré
        {
           echo 'value="' . $_SESSION['nom'] . '"'; // On pré-remplit le champ
        }
  echo '/></td></tr>';
     echo '<tr><td>Prenom: </td><td align="center"><input type = "text" name="prenom" size="25" maxlength="25"/></td></tr>';
  echo '<tr><td>Téléphone: </td><td align="center"><input type = "text" name="telephone" size="25" maxlength="25"/></td></tr>';
  echo '<tr><td>Droits: </td><td><select name="droit" size="1">
           <option>Administrateur
           <option>Utilisateur</td></tr>';
  echo '<tr><td colspan="2" align="left"><input type="submit" value="Envoyer"><INPUT type="reset" name="reset" value="Remise à zéro"></td></tr>';
  echo '<tr><td><sup> (*)</sup>: champs obligatoires</td></tr>';
  echo '</form>';
    }
?>
 
J'ai aussi tenté de remplacer le bouton du reset par:
<input type="submit" name="reset" value="Remise à zéro" onclick="return resetValues()">
avec la fonction
public function resetValues(){
     $_SESSION['numAvs']="";
  $_SESSION['nom']="";
  $_SESSION['prenom']="";
  $_SESSION['telephone']="";
}
 
mais ça ne marche pô non-plus...
 
Comment appeler la fonction pour qu'il recharge la page depuis la page "Ajout.php"?
 
Merci pour votre aide...


Le code est à ch*er !  :p  
 
Désolé, c'était trop tentant !
Tu t'emmêles les pinceaux entre le client (le navigateur) et le serveur...
 
Principes de base (je dis bien de base) :
- Le PHP s'exécute côté serveur, le javascript côté client. Ils ne communiquent pas entre eux.
- Les variables de session $_SESSION sont conservées du côté serveur.
- Un formulaire, exécuté côté client, n'envoie des informations au serveur que si on valide avec le bouton submit.
- Le bouton "reset" ne sert que côté client, pour réinitialiser le formulaire.
 
Du coup, dans ton code, le bouton reset ne sert qu'à vider le formulaire côté client. Comme on n'envoie pas d'information au serveur, la variable $_SESSION n'est pas réinitialisée. Il faudrait cliquer sur Remise à zéro, puis sur Envoyer pour envoyer les informations au serveur.
 
Dans ton alternative le onclick="return resetValues()" fait référence à une focntion côté clilent (du Javascript généralement).
Cette fonction côté client ne peux (normalement) pas communiquer avec le serveur, et encore moins réinitialiser $_SESSION.
 
Après, il faudrait voir ce que tu veux faire, pourquoi tu connserves des variables comme $_SESSION['numAvs'] et pourquoi tu veux les réinitialiser...

Reply

Marsh Posté le 27-01-2009 à 17:49:02    

Citation :

- Le PHP s'exécute côté serveur, le javascript côté client. Ils ne communiquent pas entre eux.


 
Ah oui, et ajax? Rien n'empêche de les faire communiquer avec entre eux il me semble.

Reply

Marsh Posté le 27-01-2009 à 18:31:11    

oui enfin ajax c'est autre chose et c'est à éviter quand c'est possible.

Reply

Marsh Posté le 27-01-2009 à 22:52:02    


 
Ça dépend comment c'est fait. Proprement utilisé avec contrôle sur les événements, ça peut rendre de grand services.

Reply

Marsh Posté le 27-01-2009 à 23:34:35    

fodger a écrit :

Ça dépend comment c'est fait. Proprement utilisé avec contrôle sur les événements, ça peut rendre de grand services.

Ne pas oublier que moaaaaa n'en est pas encore à l'étape où il fait la différence entre ce qui se passe sur le serveur et ce qui se passe sur le client. Alors de là à utiliser proprement et de manière utile ce genre de possibilité, il vaut mieux ne pas rêver.

Reply

Marsh Posté le 28-01-2009 à 02:58:18    

omega2 a écrit :

Ne pas oublier que moaaaaa n'en est pas encore à l'étape où il fait la différence entre ce qui se passe sur le serveur et ce qui se passe sur le client. Alors de là à utiliser proprement et de manière utile ce genre de possibilité, il vaut mieux ne pas rêver.


 
Peut être mais je soulignais simplement que son affirmation était fausse :D.

Reply

Marsh Posté le 28-01-2009 à 10:36:37    

fodger a écrit :

Citation :

- Le PHP s'exécute côté serveur, le javascript côté client. Ils ne communiquent pas entre eux.


Ah oui, et ajax? Rien n'empêche de les faire communiquer avec entre eux il me semble.


macgawel a écrit :

Principes de base (je dis bien de base)


 :ange:  
 
Accessoirement, sauf application dans un environnement contrôlé, AJAX ne doit être utilisé que parcimonieusement, et pour des points non cruciaux. Il faut toujours prévoir que l'utilisateur peut utiliser (par choix ou par nécessité) un navigateur ne supportant pas JS ou le désactiver...
Donc, même Proprement utilisé avec contrôle sur les événements c'est à éviter.  :D

Reply

Marsh Posté le 28-01-2009 à 14:19:59    

AJAX sert principalement à améliorer l'ergonomie d'un site web et à diminuer l'utilisation de bande passante du fait qu'une page web n'est pas systématiquement rechargée dans son intégralité ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-01-2009 à 14:48:47    

fodger a écrit :

 

Peut être mais je soulignais simplement que son affirmation était fausse :D.

 

euh, pour info, AJAX c'est quoi ?
ah oui, javascript + XmlHttpRequest (équivalent à un submit d'un formulaire) + php.

 

en résumé, du traitement javascript pour le côté client, une action spécifique qui envoie des données au serveur SANS recharger une page et du traitement php côté serveur.

 

conclusion, même avec AJAX,
- un raz javascript efface les données du formulaire
- le code php traite les données de $_GET/$_POST/XmlHttpRequest/... reçus du formulaire

 

:hello:

 

Dans tous les cas, moaaaaa : ton problème vient de là.

 

"<INPUT type="reset" name="reset" value="Remise à zéro">"
permet au moins de remettre facilement les champs de type "input" à leur valeur par défaut indiquée par le champ "value"

 

Il faudrait donc plutôt utiliser input de type "input" que "text" et indiquer une valeur par défaut à chaque fois.

 
Code :
  1. <?php
  2. public function ajouter(){
  3.      echo '<form method="POST" action="Ajout.php">';
  4.      echo '<caption><h2> Données pour les employés </h2></caption>';
  5.      echo '<table border =0><tr bgcolor=#ccccc>';
  6.         echo '<td width=150>Champ</td>';
  7.         echo '<td width=15>Valeur</td></tr>';
  8.         echo '<tr><td>N° personnel: <sup> (*)</sup></td>'
  9.         echo '<td align="center"><input type = "input" name="numAvs" size="25" maxlength="13" value="';
  10.         if (isset($_SESSION['numAvs'])) // Si on a le numéro d'AVS entré
  11.         {
  12.            echo 'value="' . $_SESSION['numAvs'] . '"'; // On pré-remplit le champ
  13.         }
  14.      echo "'/></td><td>(13 caractères max)</td></tr>';
  15.         echo '<tr><td>Nom: <sup> (*)</sup></td><td align="center"><input type = "input" name="nom" size="25" maxlength="25" value="';
  16.      if (isset($_SESSION['nom'])) // Si on a le nom entré
  17.         {
  18.            echo 'value="' . $_SESSION['nom'] . '"'; // On pré-remplit le champ
  19.         }
  20.     echo "'/></td></tr>';
  21.      echo '<tr><td>Prenom: </td><td align="center"><input type = "input" name="prenom" value="" size="25" maxlength="25"/></td></tr>';
  22.     echo '<tr><td>Téléphone: </td><td align="center"><input type = "text" name="telephone" value="" size="25" maxlength="25"/></td></tr>';
  23.     echo '<tr><td>Droits: </td><td><select name="droit" size="1">
  24.            <option>Administrateur
  25.            <option>Utilisateur</td></tr>';
  26.   echo '<tr><td colspan="2" align="left"><input type="submit" value="Envoyer"><INPUT type="reset" name="reset" value="Remise à zéro"></td></tr>';
  27.   echo '<tr><td><sup> (*)</sup>: champs obligatoires</td></tr>';
  28.   echo '</form>';
  29.     }
  30. ?>
 



Message édité par gagaches le 28-01-2009 à 15:02:01
Reply

Marsh Posté le 28-01-2009 à 14:48:47   

Reply

Marsh Posté le 28-01-2009 à 18:12:38    

macgawel a écrit :


 :ange:  
 
Accessoirement, sauf application dans un environnement contrôlé, AJAX ne doit être utilisé que parcimonieusement, et pour des points non cruciaux. Il faut toujours prévoir que l'utilisateur peut utiliser (par choix ou par nécessité) un navigateur ne supportant pas JS ou le désactiver...
Donc, même Proprement utilisé avec contrôle sur les événements c'est à éviter.  :D


 
Heu oui, mais si tu utilises ajax c'est que tu as réfléchi un peu à ça :p. Tous les grands browsers IE, FF, Opera supportent très bien JS.
 
Toute la question est de savoir si on en a réellement besoin et de ce que ça peut apporter dans le confort d'utilisation.

Reply

Marsh Posté le 28-01-2009 à 18:15:56    

gagaches :), tu peux très bien recharger une partie de la page ou complètement avec ajax et en récupérant des données un script php.
 
Tu fais ce que tu veux, d'ailleurs je le fais.

Reply

Marsh Posté le 28-01-2009 à 18:20:48    

fodger a écrit :

Heu oui, mais si tu utilises ajax c'est que tu as réfléchi un peu à ça :p.

Et la paix règne partout sur terre et tout le monde il est beau et gentil. ;)
Si tu savais le nombre de sites où xmlhttprequest est utilisé pour des trucs totalement aberrant tu tomberais des nus. En fait, c'est un peu comme le flash qui est très bien utilisé pour certains jeux mais qui fait ramer ton navigateur pour une pub qui joue une musique sur une image fixe.
 
Règle d'or en informatique : si une bêtise peut être faite alors il y aura toujours quelqu'un pour la faire.
Règle d'or pour les sites web : si une bêtise peut être faite, alors il y aura énormément de gens pour la faire.

Reply

Marsh Posté le 28-01-2009 à 18:39:59    

fodger a écrit :

gagaches :), tu peux très bien recharger une partie de la page ou complètement avec ajax et en récupérant des données un script php.
 
Tu fais ce que tu veux, d'ailleurs je le fais.


 
le problème, c'est pas la capacité à le faire ...
c'est l'intelligence de ne pas le faire si c'est inutile dans l'architecture logicielle.
 
le traitement des infos de saisie -> côté client
le traitement des infos de la saisie -> côté serveur
 
mélanger les deux, c'est ouvrir des failles et provoquer des erreurs.
et de toute façon, on est HS là.

Reply

Marsh Posté le 28-01-2009 à 20:01:25    

fodger a écrit :

Peut être mais je soulignais simplement que son affirmation était fausse :D.


Tu sais dans de nombreux domaines, on donnes souvent des affirmations fausses au début pour simplifier et après on revient sur les points que l'on avait simplifié qui étaient en réalité faux
 

rufo a écrit :

AJAX sert principalement à améliorer l'ergonomie d'un site web et à diminuer l'utilisation de bande passante du fait qu'une page web n'est pas systématiquement rechargée dans son intégralité ;)


ou à encombrer la bande passante (exemple requétage fréquent)

Reply

Marsh Posté le 28-01-2009 à 20:21:53    

omega2 a écrit :

Et la paix règne partout sur terre et tout le monde il est beau et gentil. ;)
Si tu savais le nombre de sites où xmlhttprequest est utilisé pour des trucs totalement aberrant tu tomberais des nus. En fait, c'est un peu comme le flash qui est très bien utilisé pour certains jeux mais qui fait ramer ton navigateur pour une pub qui joue une musique sur une image fixe.
 
Règle d'or en informatique : si une bêtise peut être faite alors il y aura toujours quelqu'un pour la faire.
Règle d'or pour les sites web : si une bêtise peut être faite, alors il y aura énormément de gens pour la faire.


 
Je le sais bien. Je hais d'ailleurs cette manie de foutre du flash partout à outrance, dès que c'est mal optimisé ça bouffe 60% des ressources cpu  :pfff: .

Reply

Marsh Posté le 28-01-2009 à 20:22:41    

weed a écrit :


Tu sais dans de nombreux domaines, on donnes souvent des affirmations fausses au début pour simplifier et après on revient sur les points que l'on avait simplifié qui étaient en réalité faux
 


 

weed a écrit :


ou à encombrer la bande passante (exemple requétage fréquent)


 
Là ça vient d'un mauvais développement, il faut toujours bien entendu testé l'état de la réponse.

Reply

Marsh Posté le 28-01-2009 à 21:20:07    

fodger a écrit :

Là ça vient d'un mauvais développement, il faut toujours bien entendu testé l'état de la réponse.


 
L'exemple auquel je pense est la combobox qui se remplit après que tu es tapé au moins 3 caractères.  
Et au fur et à mesure que tu tapes des lettres, ta combobox t'affiche uniquement les selections aux lettres que tu as tapés.  
 
Pour faire ceci, tu as donc des requetes aux serveurs qui sont envoyé à chaque fois que tu tapes une lettre.  
Exemple de site : http://www.fluofun.fr/matos/boards/recherche/ (champs recherche)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed