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

  FORUM HardWare.fr
  Programmation
  PHP

  Bouton d'annulation en PHP et variables de session

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Bouton d'annulation en PHP et variables de session

n°1843592
moaaaaa
Posté le 27-01-2009 à 13:35:19  profilanswer
 

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...

mood
Publicité
Posté le 27-01-2009 à 13:35:19  profilanswer
 

n°1843634
macgawel
Posté le 27-01-2009 à 14:44:20  profilanswer
 

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...

n°1843794
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 27-01-2009 à 17:49:02  profilanswer
 

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.

n°1843826
Profil sup​primé
Posté le 27-01-2009 à 18:31:11  answer
 

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

n°1843934
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 27-01-2009 à 22:52:02  profilanswer
 


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

n°1843950
omega2
Posté le 27-01-2009 à 23:34:35  profilanswer
 

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.

n°1843976
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 02:58:18  profilanswer
 

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.

n°1844036
macgawel
Posté le 28-01-2009 à 10:36:37  profilanswer
 

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

n°1844229
rufo
Pas me confondre avec Lycos!
Posté le 28-01-2009 à 14:19:59  profilanswer
 

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
n°1844248
gagaches
Posté le 28-01-2009 à 14:48:47  profilanswer
 

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
mood
Publicité
Posté le 28-01-2009 à 14:48:47  profilanswer
 

n°1844361
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 18:12:38  profilanswer
 

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.

n°1844366
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 18:15:56  profilanswer
 

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.

n°1844369
omega2
Posté le 28-01-2009 à 18:20:48  profilanswer
 

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.

n°1844385
gagaches
Posté le 28-01-2009 à 18:39:59  profilanswer
 

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à.

n°1844406
weed
Posté le 28-01-2009 à 20:01:25  profilanswer
 

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)

n°1844416
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 20:21:53  profilanswer
 

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: .

n°1844417
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 20:22:41  profilanswer
 

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.

n°1844436
weed
Posté le 28-01-2009 à 21:20:07  profilanswer
 

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)


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

  Bouton d'annulation en PHP et variables de session

 

Sujets relatifs
Transmission variable de session[PHP] code récalcitrant
2 Redirections à partir d'un bouton JavaSessions / PHP
[PHP] equivalence pour "disabled"[PHP - Apache - htaccess] Rewrite mode
[C#] - Envoi d'email avec variablesPHP et Oracle
Aide création page PHP comme celle cicreer des Tableaux en PHP avec pour nom le resultat fournit par requet
Plus de sujets relatifs à : Bouton d'annulation en PHP et variables de session


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