Mélanger du php dans du html

Résolu/Fermé
Thetcha - Modifié par crapoulou le 13/05/2014 à 12:05
 Thetcha - 13 mai 2014 à 16:22
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.
A voir également:

8 réponses

Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
13 mai 2014 à 12:14
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 ?
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
13 mai 2014 à 12:45
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"){
0
Ca ne change rien si je mets une accolade devant le else !
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
13 mai 2014 à 12:47
Est-ce que ton serveur affiche les erreurs au moins ? o:
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
Modifié par Jisig le 13/05/2014 à 14:06
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.
0
Problème réglé ! Il manquait des incollables à la fin :) merci
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
13 mai 2014 à 14:23
N'oublie pas le résolu p:
0
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...
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
13 mai 2014 à 14:42
si tu pouvais renvoyer ton code modifier afin d'y voir plus clair :p
0
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
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
Modifié par Jisig le 13/05/2014 à 14:56
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.
0
Toujours pareil !
Toujours le premier menu pris en compte !
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
Modifié par Jisig le 13/05/2014 à 15:01
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.
0
Il faut récupérer l'utilisateur en cour mais je n'y arrive pas.
Voici ma ligne mais j'ai une erreur :

	$verif_query = sprintf("SELECT * FROM inscription WHERE Pseudo = '$_SESSION['Pseudo']'");


Tu y vois une erreur?
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
13 mai 2014 à 15:08
Heuu ton $_SESSION['Pseudo'] est défini après ta requête ^^' tu devrais avoir un $_POST ou GET venant d'un formulaire d'une autre page ou quelque chose de similaire.
0
C'est la ou je bloque je ne sait pas comment faire.
Lorsque je mets le code similaire que je fais pour récupèrer le code d'un formulaire j'ai une erreur qui me dit que le formulaire n'existe pas ce qui est logique....
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
Modifié par Jisig le 13/05/2014 à 15:42
mmh bon je vais te faire un petit formulaire :

<form action='nom_de_la_page_ou_tu_l_envoies.php' method='post'>
   <input type='text' name='pseudo'/>
   <input type='submit' value='envoyer'/>
</form>


ensuite dans ta page

$verif_query = sprintf("SELECT * FROM inscription WHERE Pseudo = " . $_POST['Pseudo']);


Tu peux déjà tester ça !
0
Oui je sais faire ça mais c'est pas ça que je veux dire.
Dans ma page de menu, je ne veux pas faire de formulaire !!!! C'est ça qui me pose problème puisque du coup je ne sais pas c'est quoi le code qui permet de récupérer le contenu d'un formulaire qui se trouve sur une autre page....
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
Modifié par Jisig le 13/05/2014 à 15:53
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.
0
J'ai fais ça :

session_start();
	//affichage des données:
	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); 
	
	$pseudo = $_SESSION['Pseudo'];
	
	// Récupération des données depuis la base de données
	mysql_select_db($database, $db);
	$verif_query = sprintf("SELECT * FROM inscription where Pseudo = '$pseudo'");
	$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")
		{
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
13 mai 2014 à 16:01
Pourquoi $pseudo dans des ' ' ?
0
Je fais tout le temps comme ça et ça fonctionne bien :)
0
Jisig Messages postés 83 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 2 juin 2014 8
13 mai 2014 à 16:07
Il t'affiche une erreur quelque part ou .. ?
0
Lorsqu'il s'agit d'un statut membre, il n'y a aucun menu qui s'affiche....c'est ma condition qui merde.
J'ai beau tout tester mais rien ne fonctionne grrrrr
0