Mélanger du php dans du html

[Résolu/Fermé]
Signaler
-
 Thetcha -
Bonjour,

Voila, je suis en train de créer une console d'admin et je voudrais gérer un menu une fois la connexion effectuée.
Mais j'ai un petit soucis de mélange entre le php et le HTML.
En fait, je voudrais afficher un menu de 3 choix si la personne connectée est un admin sinon un menu de 2 chois si la personne connectée est simple membre mais j'ai un soucis de coordination.

Voici le code :

<a href="index.php">Déconnection</a><br><br>
<?php
session_start();
?>
<?php
//affichage des données:
    echo(
        " Vous etes connecte en tant que : {$_SESSION['Pseudo']} "
  );
?>
<?php
if ($results)
  {
   session_register("authentification");
   $_SESSION['Pseudo'] = $user_infos['Pseudo'];
   if ($user_infos['Statut'] == "Administrateur")
   {
?>  
<br></br>
<center> 
<fieldset><legend><b><FONT size="4pt">Veuillez choisir une option :</FONT></b></legend>
<br></br>
<TABLE BORDER="2" cellpadding="12" cellspacing="10"> 
  <TR> 
 <TH> <form method="post" action="inserer.php">
 <input type="submit" value="Inserer donnees">
 </form>
 </TH> 
  </TR> 
  <TR> 
 <TH> 
 <form method="post" action="affichage.php">
 <input type="submit" value="Afficher donnees">
 </form>
 </TH> 
  </TR> 
    <TR> 
 <TH> 
 <form method="post" action="suppression.php">
 <input type="submit" value="Supprimer donnees">
 </form>
 </TH> 
  </TR> 
</TABLE></fieldset>
</center> 
<?php
   else
    if ($user_infos['Statut'] == "Membre")
    }
?>
<br></br>
<center> 
<fieldset><legend><b><FONT size="4pt">Veuillez choisir une option :</FONT></b></legend>
<br></br>
<TABLE BORDER="2" cellpadding="12" cellspacing="10"> 
  <TR> 
 <TH> <form method="post" action="inserer.php">
 <input type="submit" value="Inserer donnees">
 </form>
 </TH> 
  </TR> 
  <TR> 
 <TH> 
 <form method="post" action="affichage.php">
 <input type="submit" value="Afficher donnees">
 </form>
 </TH> 
  </TR> 
</TABLE></fieldset>
</center> 
<?php
}
}
?>


Mon soucis vient du 'else' de cette partie :

<?php
   else
    if ($user_infos['Statut'] == "Membre")
    }
?>


D'avance merci si vous voyez ce que c'est l'erreur.

8 réponses

Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
NON malheureux ! je t'arrête avant de lire le tout ! jamais un session_start(); avant un affichage quelconque !

Peut-être de là que vient le problème ?
Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
125
Je pense que c'est surtout l'absence d'accolade avant son else qui pose problème.
Tu l'ouvre au précédent if sans jamais la refermer.

essaye donc de remplacer
else
    if ($user_infos['Statut'] == "Membre")
    }

par un truc du genre :
} else if ($user_infos['Statut'] == "Membre"){
Ca ne change rien si je mets une accolade devant le else !
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Est-ce que ton serveur affiche les erreurs au moins ? o:
Merci à tous pour vos réponse !!
L'erreur affichée est la suivante : Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\Formulaire\menu.php on line 47
D'avance merci
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
et bien oui tu mets
<?php
   else
    if ($user_infos['Statut'] == "Membre")
    }
?>


c'est plutôt clair p: c'est syntaxiquement incorrect :p

https://www.php.net/manual/fr/control-structures.elseif.php

Même une feuille de papier est plus légère si on la porte à deux.
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
N'oublie pas le résolu p:
En fait l'histoire de l'erreur de syntaxe est résolu mais pas le reste. C'est à dire le faite que le menu est différent selon le statut de la personne connecté.
Le menu est actuellement tout le temps le même que ça soit un simple membre ou un admin...
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
si tu pouvais renvoyer ton code modifier afin d'y voir plus clair :p
Voici :

<a href="index.php">Déconnection</a><br><br>
<?php
session_start();
?>
<?php
//affichage des données:
    echo(
        " Vous etes connecte en tant que : {$_SESSION['Pseudo']} "
		);
?>
<?php
// Connexion au serveur
 $hostname= "localhost";
 $database = "azerty";
 $username= "root";
 $password= "azerty";
 $db = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 

// Récupération des données depuis la base de données
  mysql_select_db($database, $db);
  $verif_query = sprintf("SELECT * FROM inscription ");
  $verif = mysql_query($verif_query, $db) or die(mysql_error());
  $user_infos = mysql_fetch_assoc($verif);
  $results = mysql_num_rows($verif);

if ($results)
  {
   $_SESSION['Pseudo'] = $user_infos['Pseudo'];
   if ($user_infos['Statut'] == "Administrateur")
   {
?>		
<br></br>
<center> 
<fieldset><legend><b><FONT size="4pt">Veuillez choisir une option :</FONT></b></legend>
<br></br>
<TABLE BORDER="2" cellpadding="12" cellspacing="10"> 
  <TR> 
	<TH> <form method="post" action="inserer.php">
	<input type="submit" value="Inserer donnees">
	</form>
	</TH> 
  </TR> 
  <TR> 
	<TH> 
	<form method="post" action="affichage.php">
	<input type="submit" value="Afficher donnees">
	</form>
	</TH> 
  </TR> 
    <TR> 
	<TH> 
	<form method="post" action="suppression.php">
	<input type="submit" value="Supprimer donnees">
	</form>
	</TH> 
  </TR> 
</TABLE></fieldset>
</center> 
<?php
if ($results)
  {
   $_SESSION['Pseudo'] = $user_infos['Pseudo'];
   if ($user_infos['Statut'] == "Membre")
   {
?>
<br></br>
<center> 
<fieldset><legend><b><FONT size="4pt">Veuillez choisir une option :</FONT></b></legend>
<br></br>
<TABLE BORDER="2" cellpadding="12" cellspacing="10"> 
  <TR> 
	<TH> <form method="post" action="inserer.php">
	<input type="submit" value="Inserer donnees">
	</form>
	</TH> 
  </TR> 
  <TR> 
	<TH> 
	<form method="post" action="affichage.php">
	<input type="submit" value="Afficher donnees">
	</form>
	</TH> 
  </TR> 
</TABLE></fieldset>
</center> 
<?php
}}}}
?>


Le problème est que je ne récupère pas correctement le pseudo de la page de connexion, du coup il affiche toujours le menu complet
En fait c'est ma condition qui ne marche pas ou peut être même ma requête puisque si je change l'ordre des menus dans le code, il prend toujours en compte le premier menu indiqué dans le code.
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Je me suis permis de corrigé un peu ton code afin que tu y voies plus clair déjà
(session_start(); doit être avant tout affichage !! c'est impératif !
<?php
 session_start();
 //affichage des données:
 echo "<a href="index.php">Déconnection</a><br><br>";
 echo "Vous etes connecte en tant que : {$_SESSION['Pseudo']}";
 // Connexion au serveur
 $hostname= "localhost";
 $database = "azerty";
 $username= "root";
 $password= "azerty";
 $db = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 
 
 // Récupération des données depuis la base de données
 mysql_select_db($database, $db);
 $verif_query = sprintf("SELECT * FROM inscription ");
 $verif = mysql_query($verif_query, $db) or die(mysql_error());
 $user_infos = mysql_fetch_assoc($verif);
 $results = mysql_num_rows($verif);
 
 if ($results)
 {
  $_SESSION['Pseudo'] = $user_infos['Pseudo'];
  if ($user_infos['Statut'] == "Administrateur")
  {
?>  
<br/>
<center> 
<fieldset><legend><b><FONT size="4pt">Veuillez choisir une option :</FONT></b></legend>
<br></br>
<TABLE BORDER="2" cellpadding="12" cellspacing="10"> 
  <TR> 
 <TH> <form method="post" action="inserer.php">
 <input type="submit" value="Inserer donnees">
 </form>
 </TH> 
  </TR> 
  <TR> 
 <TH> 
 <form method="post" action="affichage.php">
 <input type="submit" value="Afficher donnees">
 </form>
 </TH> 
  </TR> 
    <TR> 
 <TH> 
 <form method="post" action="suppression.php">
 <input type="submit" value="Supprimer donnees">
 </form>
 </TH> 
  </TR> 
</TABLE></fieldset>
</center> 
<?php
  elseif ($user_infos['Statut'] == "Membre")
  {
?>
<br></br>
<center> 
<fieldset><legend><b><FONT size="4pt">Veuillez choisir une option :</FONT></b></legend>
<br></br>
<TABLE BORDER="2" cellpadding="12" cellspacing="10"> 
  <TR> 
 <TH> <form method="post" action="inserer.php">
 <input type="submit" value="Inserer donnees">
 </form>
 </TH> 
  </TR> 
  <TR> 
 <TH> 
 <form method="post" action="affichage.php">
 <input type="submit" value="Afficher donnees">
 </form>
 </TH> 
  </TR> 
</TABLE></fieldset>
</center> 
<?php
}}}
?>

EDIT : J'ai encore corrigé une ligne
Même une feuille de papier est plus légère si on la porte à deux.
Toujours pareil !
Toujours le premier menu pris en compte !
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Ha oui mais c'est logique ! ^-^

 $verif_query = sprintf("SELECT * FROM inscription ");


Si tu n'as pas de WHERE dans ta requête tu risques à coup sûr de toujours prendre la première ligne de ta table !!

Jisig
Même une feuille de papier est plus légère si on la porte à deux.
Tu veux que je t'envoi le code de ma console d'admin???
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Ben tu ne sais pas récupérer le code d'un formulaire d'une autre page, tu dois envoyer d'une page un paramètre ! (ça se fait habituellement via un formulaire)
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Tu dois bien taper le nom de l'utilisateur quelque part ?
En fait j'ai réussi à récupérer le pseudo en fessant ceci : $pseudo = $_SESSION['Pseudo']; !!!
Du coup pour les pseudo administrateur ca marche niquel mais pour les membres ca ne marche pas.
Ma condition est mauvaise !
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Non ta condition n'est pas mauvaise, c'est ta requête
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Donc si j'ai bien compris tu dois juste changer ta requête comme cela
$verif_query = sprintf("SELECT * FROM inscription WHERE Pseudo = " . $_SESSION['Pseudo']);


Même une feuille de papier est plus légère si on la porte à deux.
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
mets déjà ton WHERE en maj
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
Ensuite vérifie dans la base de donnée que le statut est bien égale à 'membre'
Ca marche !!!!!!!!!
Après le 1er if j'ai fermé la condition et je l'ai ré-ouverte ensuite et ça fonctionne niquel :)
Messages postés
83
Date d'inscription
mercredi 30 avril 2014
Statut
Membre
Dernière intervention
2 juin 2014
8
^^ Super ! N'oublie pas un petit résolu p:
Yep merci à toi pour ton aide :)