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

PHP & Base de données Discussion :

PHP-MYSQL-Template Probleme de variable $POST


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Par défaut PHP-MYSQL-Template Probleme de variable $POST
    Bonjour,
    Pour mon stage, je dois développer une application en PHP, mais je me retrouve coincé avec les variables POST pour communiquer avec la base de données.

    Dans ma base de données (MySQL) j'ai 4 tables : Utilisateur, Site, Connexion et Modification

    j'ai essayé d'utiliser un MVC pour que mon application sois propre.

    Pour la partie vue:

    J'ai utilisé le moteur de template PHPBB.

    Pour la partie modèle:

    j'ai donc un fichier "class.php" contenant mes 4 classes (Utilisateur,Site,Connexion,Modification) et un fichier "classBaseDonnees.php", contenant (utilisateurDB,SiteDB,ConnexionDB,ModificationDB),
    ainsi pour rechercher un utilisateur on appelle la méthode "rechercher" de "UtilisateurDB" et elle nous revoit un objet "Utilisateur", de la même façon pour insérer un Utilisateur, j’appelle la méthode "inserer" de UtilisateurDB et lui passe en paramètre un utilisateur.

    Ce qui me perturbe est la partie contrôleur:

    J'ai un fichier IndexAdmin.php qui teste l'existence de différente variables POST et dans les templates, chaque bouton est un "input sumbit" dans un "<form>" associé a un " input hidden" pour envoyer une information.
    Par exemple pour passer de la page de gestion des sites, à celle d'ajout d'un site, j'ai un "<form method='Post' action='index.php'>" contenant mon submit avec la valeur "ajouter" et un "input hidden" contenant name="affichage" et value="AffichageAjout"

    le fichier index.php vérifie l’existence de affichage grâce à "isset" puis revoit le fichier template correspondant à la valeur du $_POST['affichage']

    Le problème est le suivant dans la partie de l'administrateur: Dans une des pages j'ai à gauche la liste des utilisateurs. Lorsque l'on clique sur un utilisateur, ses sites s'affichent à droite. Mais je suis conscient qu'utiliser un formulaire pour chaque ligne ne serait pas ergonomique du tout, j'ai pensé à utiliser "onClick" de javascript, seulement je ne vois pas du tout comment rappeler "index.php" a partir d'un onClick en lui donnant des variables $POST

    Auriez-vous des conseils, des méthodes sur la façon de procéder?

    ps: je suis désolé pour la longueur de mon post, j'ai tenté d'être le plus clair et précis possible

    Voici mon code:

    indexAdmin.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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
     
    <?php
    include('template.php');
    include('classBaseDonnees.php');
    include('moteur.php');
    session_start();
     
    //~ Cree tous les objets necessaires aux acces a la base de donnees, les placent en global pour que toutes les fonctions y aient accès
    $GLOBALS['c']=new ConnectionBD($SQLport,$SQLnombase,$SQLidentifiant,$SQLmotdepasse);
    $GLOBALS['m']=new ModificationDB($c);
    $GLOBALS['s']=new SiteDB($c);
    $GLOBALS['co']=new ConnexionDB($c);
    $GLOBALS['udb']=new UtilisateurDB($c,$s,$co,$m);
    $listeudb=$GLOBALS['udb']->rechercher();
     
    if(isset($_POST['affichage'])){
    if($_POST['affichage']=='AffichageHistorique'){
    afficherConnexions();}
    if($_POST['affichage']=='AffichageLDAP'){
    afficherLDAP();}	
    if($_POST['affichage']=='AffichageBackOffice'){
    	afficherBackOffice();}
    if($_POST['affichage']=='Connexions'){
    afficherConnexions();}
    if($_POST['affichage']=='Modifications'){
    afficherModifications();}		
    	}
     
    else{afficherConnexions();}
     
    function afficherConnexions(){
    	//~ Moteur de Templates phpBB 
    	//~ Définit le chemin des templates
    	$template=new Template('./');
    	//~ Associe les templates à une variable 
    	$template->set_filenames(array('body'=>'AffichageAdminHistorique.html'));
    	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
    	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
    	//~ Associe les champs des templates aux valeurs de utilisateur
    	$template->assign_vars(array('titre'=> 'Connexions',
    								 'Prenom'=>$utilisateur[0]->getPrenom(),
    								 'Nom'=>$utilisateur[0]->getNom()));
    	//~ Recherche tous les sites enregistrés par cet utilisateur
    	$connexions=$GLOBALS['co']->rechercher();
    	//~ Associe aux champs du block les différentes instances de Site 
    	for ($k=0;$k<count($connexions);$k++){
    		$utilisateur=$GLOBALS['udb']->rechercherID($connexions[$k]->getUtilisateur())[0];
    		$template->assign_block_vars('historique', array('prenom' => $utilisateur->getPrenom(),
    														 'nom' => $utilisateur->getNom(),
    														 'date' => $connexions[$k]->getDate()
     
     
     
    		));
    	}
     
    	//~ Affiche le template 
    	$template->pparse('body');  
    }
     
     
    function afficherModifications(){
    	//~ Moteur de Templates phpBB 
    	//~ Définit le chemin des templates
    	$template=new Template('./');
    	//~ Associe les templates à une variable 
    	$template->set_filenames(array('body'=>'AffichageAdminHistorique.html'));
    	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
    	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
    	//~ Associe les champs des templates aux valeurs de utilisateur
    	$template->assign_vars(array('Prenom'=>$utilisateur[0]->getPrenom(),
    								 'titre'=> 'Modifications',
    								 'Nom'=>$utilisateur[0]->getNom()));
     
    	//~ Recherche tous les sites enregistrés par cet utilisateur
    	$modifications=$GLOBALS['m']->rechercher();
    	//~ Associe aux champs du block les différentes instances de Site 
    	for ($k=0;$k<count($modifications);$k++){
    		$utilisateur=$GLOBALS['udb']->rechercherID($modifications[$k]->getUtilisateur())[0];
    		$template->assign_block_vars('modifications', array('prenom' => $utilisateur->getPrenom(),
    														 'nom' => $utilisateur->getNom(),
    														 'libelle'=>$modifications[$k]->getLibelleSite(),
    														 'date' => $modifications[$k]->getDate(),
    														 'type' => $modifications[$k]->getType()
     
     
     
    		));
    	}
    	$template->pparse('body');  }
     
    	function afficherBackOffice(){
    	//~ Moteur de Templates phpBB 
    	//~ Définit le chemin des templates
    	$template=new Template('./');
    	//~ Associe les templates à une variable 
    	$template->set_filenames(array('body'=>'AffichageAdminBackOffice.html'));
    	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
    	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
    	//~ Associe les champs des templates aux valeurs de utilisateur
    	$template->assign_vars(array('Prenom'=>$utilisateur[0]->getPrenom(),
    								 'Nom'=>$utilisateur[0]->getNom()));
    	//~ Recherche tous les sites enregistrés par cet utilisateur
    	$utilisateurs=$GLOBALS['udb']->rechercher();
    	//~ Associe aux champs du block les différentes instances de Site 
    	for ($k=0;$k<count($utilisateurs);$k++){
    		$template->assign_block_vars('utilisateurs', array(	'prenom'=>$utilisateurs[$k]->getPrenom(),
    															'nom' => $utilisateurs[$k]->getNom(),
     
     
     
     
    		));
    	}
    	$template->pparse('body');  
    }
     
     
    	function afficherLDAP(){
    	//~ Moteur de Templates phpBB 
    	//~ Définit le chemin des templates
    	$template=new Template('./');
    	//~ Associe les templates à une variable 
    	$template->set_filenames(array('body'=>'AffichageAdminBackOffice.html'));
    	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
    	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
    	//~ Associe les champs des templates aux valeurs de utilisateur
    	$template->assign_vars(array('Prenom'=>$utilisateur[0]->getPrenom(),
    								 'Nom'=>$utilisateur[0]->getNom()));
    	//~ Recherche tous les sites enregistrés par cet utilisateur
    	$modifications=$GLOBALS['m']->rechercher();
    	//~ Associe aux champs du block les différentes instances de Site 
    	for ($k=0;$k<count($connexions);$k++){
    		$utilisateur=$GLOBALS['udb']->rechercherID($modifications[$k]->getUtilisateur())[0];
    		$template->assign_block_vars('historique', array('prenom' => $utilisateur->getPrenom(),
    														 'nom' => $utilisateur->getNom(),
    														 'libelle'=>$connexions[$k]->getLibelle(),
    														 'date' => $connexions[$k]->getDate(),
    														 'type' => $connexions[$k]->getType()
     
     
     
    		));
    	}
     
     
     
     
    	//~ Affiche le template 
    	$template->pparse('body');  
    }
    ?>
    voici le template, les sites sont censés être dans le #sites
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>Titre Page</title>
    		<link rel="stylesheet" href="AffichageAdmin.css">
    		<meta charset="utf-8">
    		<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
    		<script type="text/javascript" src="affichage.js"></script>
    	</head>
    	<body>
    		<h1 id="utilisateur">{Prenom} {Nom}</h1>
    		<div id="date">Erreur Date</div>
    		<!--Menu de base permettant d'acceder aux différentes interfaces -->
                <ul id="sous_menu">
                  <li>
     
    <!--
                    <button id="AffichageHistorique"  onClick="AffichageHistorique()" >Historique</button>
    -->
            <form method='POST' action=indexAdmin.php>
    			<input type="submit"  value="Historique">
    			<input type="hidden"  name="affichage"  value='AffichageHistorique'>
    		</form>
                  </li>
                  <li>
    		<form method='POST' action=indexAdmin.php>
    			<input type="submit"  value="LDAP">
    			<input type="hidden"  name="affichage"  value='AffichageLDAP'>
    		</form>
    <!--
                     <button  id="AffichageLDAP" onClick="AffichageLDAP()">LDAP</button>
    -->
                  </li>
                  <li>
                     <button class='actif' id="AffichageBackOffice" >Back Office</button>
                  </li>
                </ul>
               	<!-- Zone de droite modifiée selon les actions de l'administrateur -->
                  <div id="affichage">
    				<div id="utilisateurs">
    					<h2>Utilisateurs</h2>
    					<!-- BEGIN utilisateurs -->
    				<div>{utilisateurs.prenom} {utilisateurs.nom}</div>
    				 <!-- END utilisateurs -->
    				</div>
    				<div id="sites">
    					<h2>Gestion des Liens</h2>
    				</div>
                    <script>
    					afficherHorloge();
                    </script>
     
    	</body>
    </html>

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Par défaut
    Bonjour,

    Après avoir laissé la question murir, je me suis dis, qu'il serais bien de pouvoir ouvrir la page en lui passant les valeurs $POST. Y'a-t-il une solution, javascript , jquery qui permette de rediriger vers une page php tout en lui donnant des paramètres $POST?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    utiliser un formulaire pour chaque ligne ne serait pas ergonomique du tout
    Un formulaire, un lien ou un faux-lien avec du javascript c'est la même niveau d'ergonomie : il faut cliquer.

    Tu n'es pas obligé de te limiter à POST : si tu veux des liens (donc GET) et des formulaires, tu peux recuperer ta valeur en $_REQUEST.

    Et pour finir, tu peux utiliser Ajax si tu veux faire un envoi POST depuis Javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Par défaut
    merci de votre réponse, pour le niveau d'ergonomie, effectivement vous avez raison. Enfaite quand je pensais à formulaire, je pensais qu'il fallait faire un bouton sumbit, et je trouvais une colonne de boutons pas beau du tout. En fouillant sur différents forums, j'ai finalement une autre solution:

    Chaque ligne est un formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method='POST' action='index2.php' id='erreur'>
          <div id="test" onClick='valider()'>
                 {sites.Site}
          </div>
          <input type="hidden" name="nom" value="TEST"> 
    </form>
    Et la fonction javascript valide le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		function valider(){
    			var myform = $('#erreur');
    				alert(myform);
    			myform.submit();
    			}
    Je suis désolé pour les noms, j'ai voulu commencé par tester cette méthode. Je ne sais pas du tout si c'est une méthode "propre".

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    On peut maquiller un bouton submit avec du CSS si c'est seulement un problème d’esthétique. Ca évite d'utiliser du javascript.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Php et xml, probleme de variable
    Par Joseph345 dans le forum Langage
    Réponses: 5
    Dernier message: 16/04/2007, 15h24
  2. [Configuration] Probleme config Php / MySql
    Par Kips dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 22/02/2006, 16h24
  3. [SGBD] [Problème insertion variable php/mysql]
    Par vincedjs dans le forum Installation
    Réponses: 20
    Dernier message: 08/02/2006, 16h41
  4. Réponses: 9
    Dernier message: 05/01/2006, 12h24
  5. Probleme de variable entre SQL et Php
    Par copin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/06/2005, 10h58

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