IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Partie administration en PHP avec formulaire et include


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut [Système] Partie administration en PHP avec formulaire et include
    Bonjour à tous,
    Apres plusieurs recherches, je prend l'initiative de vous écrire pour mon probleme.
    Actuellement je suis en train de realiser un projet pour une entreprise consistant à lier une BDD access à une interface Web. La partie cliente fonctionne (les clients donne login/mdp et on acces à leurs informations. La partie administration me pose des problemes. Elle doit permettre d'ajouter un client, une intervention, de modifier une intervention ou e voir les 20 dernieres interventions d'un client.
    J'ai 3 fichiers: index.htm avec la boite de connexion, connexion_base.php pour la connexion à la base et fonctions.php regroupant toutes les fonctions pour la partie administration et utilisé dans connexion_base.php avec un inculde.
    Dans ce fichier php, j'ai mis une fonction pour afficher les differents choix apres connexion de l'admin (ajout d'un client etc...).
    On m'a conseillé de procédé comme ceci:
    Fichier connexion_base.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    /* Partie administeration */
    	echo "Administrateur";
     
    	/*appel des fonctions  se trouvant dans le fichier fonctions.php */
    	$etape = 0; // on dit que l'étape, c'est 0 de base
     
    	if(isset($_POST['etape']))  //si la var etape exsiste
    	{
    	if(!empty($_POST['etape'])) //et si cette var n'est pas vide
    	{
    	$etape = $_POST['etape']; //alors la variable $etape recoit la valeur
    	}
    	}
    	switch($etape) //travail sur la variable $etape
    	{
    	case 0: choix_formu(); break; //si elle vaut 0 alors appellé la fonction choix_formu se trouvant dans le fichier fonctions.php				
    	case 1: fct_ajouter(); break;
    	//default: erreur_saisie(); break; //si la variable contient un chiffre non conforme, alors afficher une erreur
    	}
    Fichier fonctions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    <html>
    <body>
    <?php
    									/* Fichier fonctions.php */
     
    //fonctions pour le formulaire
    function choix_formu()
    {
    	?>
    	<form action='connexion_base.php?etape=1' method='post'>
    	<p>Veuillez sélèctionner une opération</p>
    		<center><select name='operation'></center>
    		 <option value='rien'></option>
    		 <option value='client'>Ajout d'un client</option> <!-- il va falloir une fonction pour UN choix -->
    		 <option value='nvl_int'>Ajout d'une intervention</option>
    		 <option value='modif_int'>Modification d'une intervention</option>
    		 <option value='affich_int_client'>Afficher les 20 dernières interventions d'un client</option>
    		</select>
    	<center><input  type='submit' name='submit' value='Ok!'></center>	
    	</form>
     
    	<?php
    	}
     
    function ajout_client()
    {
    	?>
    	<form action='connexion_base.php?etape=1.1' metho='post'>
    	<p>Veillez saisir le nom du nouveau client</p>
    	<input type='text' name='sais_client' >
    	<input type='submit' name='submit' value='Envoie'>
    	</form>
    	<?php
    	} 
     
    ?>
    </html>
    </body>
    Déjà, je ne maitrise pas trop les action=page.php?etape=...., si vous avez de la documentation dessus (j'ai trouvé sur les formulaires mais pas de ce "type" là.
    Et ce que la methode utilisé est bonne?
    Mon probleme est que j'arrive pas a "dire " au switch que je suis à l'étape syuivante apres avoir afficher les 4 choix... :'(
    Si je met $etape=2 dans fonctions.php, il aime pas même avec des "sessions"..
    Un peut d'aide serais la bienvenue.
    Merci de m'avoir lu....

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Il faut que tu renseignes dans ton formulaire l'étape que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form .....>
       ...
       <input type="hidden" name="etape" value="2" />
       ...
    </form>
    et ensuite dans connexion_base tu rajout un cas pour l'etape 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    switch($etape)
    {
       case 0:
          ...
          break;
       case 1:
          ...
          break;
       case é:
          //On fait plein de nouveaux trucs excitants ici !
          break;
       default:
          break;
    }

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ou alors tu changes ton select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <select name='etape'>
       <option value='0'></option>
       <option value='1'>Ajout d'un client</option>
       <option value='2'>Ajout ......</option>
       <option value='3>Modification ......</option>
       <option value='4'>Afficher les 20 ....</option>
    </select>

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut Rapide!!
    MErci pour cette réponse rapide mais il va bien falloir que je fasse un if ou un truc dans ce style. il y a la liste déroulante: je choisi la 1er option, pour indiqué que c'est la 1er option, je peux, dans mon étape deux faire une fonction comme ceci: si choix = 1 alors appelé fonction xxxx, si choix = 2 alors appelé fonction zzzz ???

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ben c'est le but du switch/case

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    En passant je te conseilles d'utiliser des noms plutot que des nombres, ca sera plus facile à debugger

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Mais apprament, si je fais:
    select name='etape'></center>
    <option value='rien'></option>
    etc..., il ne me garde pas en mêmoire les variables $login et $pass pourtant, j'ai fait un session_start! Le include fait perdre les données dans les variables

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Bon, j'avance pas dans mon probleme
    Enfaite, j'ai dis que cela venais de
    select name='etape'></center>
    <option value='rien'></option>
    mais c'est pas lié. Le probleme, si il a était mal compris, est que PHP ne garde pas les variables de fonctions.php (transmisent par connexion_base.php) qui "reviennent" dans cx_base.php car le fichier fonctions.php contient uniquement toutes mes fonctions. Je ne comprend pas comment je puis faire, si qqun aurais un lien sa serait "formidable". Je continue a cherché dans mon coté, biensur.
    MErci d'avance aux PHPeurs

    PS: je precise le message d'erreur:
    Notice: Undefined index: login in c:testsphp\site\connexion_base.php on line 81

    Notice: Undefined index: pass in c:testsphp\site\connexion_base.php on line 83
    Identifiant ou mot de passe incorrecte, veuillez réessayer

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Bon, j'ai légerement avancé...
    J'ai viré mon include et mis les fonctions directement dans le fichier connexion_base.php et j'ai toujours les même erreurs ce qui m'ammene a dire que lorsque PHP rentre dans une fonction il ne garde pas les variables d'avant, entre autre $login et $pass. comment puis-je les garder pour les fonctions?!
    Merci d'avance si qqun me lit...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    apprament il faudra faire ceci: $_SESSION['login'] = $login; d'apres http://cyberzoide.developpez.com/php4/faqsession/, suis-je sur la bonne piste? J'essaie et je vous tiens au courant (ou je "me" tiens au courant car je suis seul à me lire?! )!!!

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut Déséspoir
    J'y arrive pas
    Je sais plus quoi faire :/
    Je passe un temps fou devant mais en vain
    Personne n'a envie de m'aider ?????
    En vous remerçiant par avance .......

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Bon je viens d'écrire sur feuille tout ce que permet le fichier connexion_base.php pour m'éclairsir la tête et peut etre aussi vous aider à m'aider ( )
    Voici les differentes étapes:
    * connexion à la base
    *recuperation des champs du formulaire dans des variables $ademail et $login
    *vérification du mot de passe via:
    ** une requete SQL comparant les variables $ademail et $login aux champs se trouvant dans la base
    ** execution de la requete grace à un odbc_do...

    * recuperation du nom du "client" via une autre requete
    *execution de la requete permettant de vérifier si le "client" est bien administrateur
    * SI administrateur
    ** affiche un formulaire de 4 choix (ajout client, ajout intervention, modification int. et voir les derniers int.).
    C'est au dernier point que je bloque car lorsque je choisi l'un des quatre puis OK, il me retourne qu'il ne connait plus les variable $login et $pass (du au rechargement de la page??, si oui j'ai essayer les sessions mais j'ai pas reussi..).
    J'espere que c'est plus clair...
    Merci d'avance!

  13. #13
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Il faut que tu apprennes à isoler tes problèmes.
    Tu as un problème de session => tu crées deux bêtes fichiers pour travailler sur les sessions, afin de t'abstraire de tout le reste et te concentrer sur l'essentiel.


    Exemple : Tu crées un nouveau script =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    session_start();
    if (!isset($_SESSION['login'])) {
      $_SESSION['login'] = 0;
    }
    $_SESSION['login']++;
     
    echo $_SESSION['login'];
    ?><form action="" method="POST"><input type="submit" value="clic !" /></form>
    Si tu le lances dans ton navigateur et que tu cliques, que ce passe-t-il ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Je viens d'essayer ce script, si je lance et que je clique cela ajoute +1 à chaque clique...

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Enfaite, si j'ai mieux compris ta réponse, mon probleme viens des sessions. Et selon toi, le mieux est de m'entrainer avec les sessions via des exemples simples? Le gros probleme est le temps car il me reste qu'une semaine pour faire encore plein de choses dans la partie administration
    Qu'en penses tu?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Bon j'ai une tite question concernant les sessions:
    ayant lu que les sessions devait toujours commencer en debut de page, est-il possible de faire des includes? si oui, est-ce que la page inculd doit quand même avoir session_start?
    merci

  17. #17
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    non.
    tu mets le session start toujours au début.

    après si tu fais un include derrière y aura pas de probleme, le session start ne t'affiche rien, alors l'include derrière sera le premier truc affiché.

    voila.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Oui mais alors pourquoi je perd les variables login/mot de passe apres avoir fait mon choix?
    J'ai l'impression que ce que je veux faire est impossible sur 2 pages (la connexion et l'include).
    Je ne comprend pas pourquoi il perd les variables de connexion et pourquoi il en a besoin..

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Je craque, j'en ai trop marre
    Bon, j'ai fais ceci pour ma session:
    dans connexion_base.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    <?php
    session_start();
    ?>
    <html>....
    <?php
    include('fonctions.php');
     
      //connexion_base.php
     
      //connection à la base de donnée Access
      $cnx = odbc_connect...............
     
      //récupération des valeurs des champs:
     
      //@email
      $ademail = $_POST['login'];   
      //mot de passe
      $mdp = $_POST['pass'];
     
    // on stocke dans une session les valeurs des champs
      $_SESSION['ademail'] = $ademail;
      $_SESSION['mdp'] = $mdp;
    ........................
    Puis dans fonctions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $ademail = $_SESSION['ademail'];
    $mdp = $_SESSION['mdp'];
    ?>
    mais, bien évidament, sa marche pas
    Qu'est ce que j'ai 'encore' mal fait?
    SVP, les experts, ou etes-vous?
    Merci . . ........

  20. #20
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    utilise la balise CODE stp, prend en habitude

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    session_start();
     
    include('fonctions.php');
     
    //connexion_base.php
     
    //connection à la base de donnée Access
    $cnx = odbc_connect...............
    ?>
    <html>....
    <?php
     
    //@email
    $_SESSION['ademail'] = $_POST['login'];
    //mot de passe
    $_SESSION['mdp'] = $_POST['pass'];
    déja, pourquoi tu te compliques la vie
    et apres j'ai pas bien compris, tu veux réutiliser quoi dans fonction ? si tu veux utiliser ce que tu viens de trouver dans les variables de session, il faut que tu include apres avoir instancier tes variables. logique non ??

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/01/2006, 09h03
  2. [Système] Lancer un script perl avec PHP
    Par pepite dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 12h30
  3. [Sécurité] Masquer une partie de site web avec PHP
    Par Marc365 dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 15h30
  4. [Système] Trouver une clef USB avec PHP
    Par chico_du_33 dans le forum Langage
    Réponses: 8
    Dernier message: 05/10/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo