8797 sujets

Développement web côté serveur, CMS

Pages :
bonjour,
voila j'ai fini ma zone membres et je m'attaque a la zone admin pour que je puisse modifier les profil des membres au cas ou et je rencontre une erreur , je fais un double switch, je vous montre mon code sachant que j'ai suivi un tuto


<?php
$cat = htmlspecialchars($_GET['cat']); //on récupère dans l'url la variable cat
switch($cat) //1er switch
{
case "config":
//ici configuration
break;
 
case "membres":
//Ici membres
$action = htmlspecialchars($_GET['action']); //On récupère la valeur de action
 
switch($action) //2eme switch
        {
        case "edit":
        //Edition d'un membre
        break;
 
                default; //action n'est pas remplie, on affiche le menu 
        echo'<h1>Administration des membres</h1>';
        echo'<p>Salut mon ptit, alors tu veux faire quoi ?<br />
       <a href="./admin.php?cat=membres&amp;action=edit">
       Editer le profil d un membre</a><br />
       <a href="./admin.php?cat=membres&amp;action=droits">
       Modifier les droits d un membre</a><br />';
        break;
        }
break;
default; //cat n'est pas remplie, on affiche le menu général
echo'<h1>Index de l administration</h1>';
echo'<p>Bienvenue sur la page d administration.<br />
<a href="./admin.php?cat=config">Configuration du forum</a><br />
<a href="./admin.php?cat=membre">Administration des membres</a><br /></p>';
break;
}
 
case "membres":
//Ici membres
$action = $_GET['action']; //On récupère la valeur de action
        switch($action) //2ème switch
        {
        case "edit":
        //Edition d'un membre
        echo'<h1>Edition du profil d un membre</h1>';


voila c'est exactement fait comme ca dans le tuto et l'erreur :

Parse error: syntax error, unexpected T_CASE in /mnt/167/sdb/d/5/j.pastore/Admin/admin.php on line 37

si quelqu'un pouvait me dire pourquoi ca merde :s merci
Bonjour,
j'ai l'impression qu'il manque l'accolade fermante pour 'fermer' le deuxième switch non ?
t'est sur ? regarde bien aprés le break; j'ai bien mi } au 2 break, tu veux le code entier pour mieux voir ?
Mes excuses, je me suis basé sur le commentaire.
Il s'agit du 3eme switch..

Voici la fin du code que tu nous a soumis:

}
case "membres":
//Ici membres
$action = $_GET['action']; //On récupère la valeur de action
        switch($action) //2ème switch
        {
        case "edit":
        //Edition d'un membre
        echo'<h1>Edition du profil d un membre</h1>';

Je comprends ceci; l'accolade fermante 'ferme le 1er switch.
Quid du case suivant ?
Apres le 2eme switch (sur action), je vois bien une accolade ouvrante mais pas d'accolade fermante ?
Peut-être que mes impressions sont inexactes du fait que je n'ai pas tout le code ?
Modifié par comar91 (27 Sep 2007 - 06:57)
j'ai corriger mais toujours la meme erreur.. je vous montre tout mon code peut etre que vous pourrez mieux m'aider


[code]<?php
$cat = htmlspecialchars($_GET['cat']); //on récupère dans l'url la variable cat
switch($cat) //1er switch
{
case "config":
//ici configuration
break;
 
case "membres":
//Ici membres
$action = htmlspecialchars($_GET['action']); //On récupère la valeur de action
 
switch($action) //2eme switch
        {
        case "edit":
        //Edition d'un membre
        break;
 
                default; //action n'est pas remplie, on affiche le menu 
        echo'<h1>Administration des membres</h1>';
        echo'<p>Salut mon ptit, alors tu veux faire quoi ?<br />
       <a href="./admin.php?cat=membres&amp;action=edit">
       Editer le profil d un membre</a><br />
       <a href="./admin.php?cat=membres&amp;action=droits">
       Modifier les droits d un membre</a><br />';
        break;
        }
break;
default: //cat n'est pas remplie, on affiche le menu général
echo'<h1>Index de l administration</h1>';
echo'<p>Bienvenue sur la page d administration.<br />
<a href="./admin.php?cat=config">Configuration du forum</a><br />
<a href="./admin.php?cat=membre">Administration des membres</a><br /></p>';
break;
}
 
case "membres":
//Ici membres
$action = $_GET['action']; //On récupère la valeur de action
        switch($action) //2ème switch
        {
        case "edit":
        //Edition d'un membre
        echo'<h1>Edition du profil d un membre</h1>';
   if(!isset($_POST['membre'])) //Si la variable $_POST['membre'] n'existe pas
        {
                echo'De quel membre voulez-vous éditer le profil ?<br />';
                echo'<br />
                <form method="post" 
                action="./admin.php?cat=membres&amp;action=edit">
                <p><label for="membre">Inscrivez le pseudo : </label> 
                <input type="text" id="membre" name="membre">
                <input type="submit" name="Chercher"></p></form>';
        }
      else //sinon
        {
                $pseudo = htmlspecialchars($_POST['membre'], ENT_QUOTES);
                $pseudo = mysql_real_escape_string($pseudo);

                //Requête qui ramène des info sur le membre à 
                //Partir de son pseudo
                $requete_select = mysql_query('SELECT membre_id, 
                membre_pseudo, membre_email,
                membre_siteweb, membre_signature, 
                membre_msn, membre_localisation, membre_avatar
                FROM forum_membres WHERE membre_pseudo="'.$pseudo.'"');
                 
                //Si la requête retourne un truc, le membre existe
                if ($data_select = mysql_fetch_assoc($requete_select)) 
                {
                ?>
                <form method="post" 
                action="adminok.php?cat=membres&amp;action=edit" 
                enctype="multipart/form-data">
       

                <fieldset><legend>Identifiants</legend>
                <label for="pseudo">Pseudo :</label>
                <input type="text" name="pseudo" id="pseudo" 
                value="<?php echo $data_select['membre_pseudo'] ?>" /><br />
                </fieldset>

                <fieldset><legend>Contacts</legend>
                <label for="email">Adresse E_Mail :</label>
                <input type = "text" name="email" id="email"
                value="<?php echo $data_select['membre_email'] ?>" /><br />

                <label for="msn">Adresse MSN :</label>
                <input type = "text" name="msn" id="msn"
                value="<?php echo $data_select['membre_msn'] ?>" /><br />

                <label for="website">Site web :</label>
                <input type = "text" name="website" id="website"
                value="<?php echo $data_select['membre_siteweb'] ?>"/><br />
                </fieldset>

                <fieldset><legend>Informations supplémentaire</legend>
                <label for="localisation">Localisation :</label>
                <input type = "text" name="localisation" id="localisation"
                value="<?php echo $data_select['membre_localisation'] ?>" />
                <br />	        
				<label for="age"> Age :</label>
				<input type="text" name="age" id="age"
				value="<?php echo $data_select['membre_age'] ?>" />
				<br/>
				<label for="passions"> Passions :</label>
				<input type="text" name="passions" id="passions"
				value="<?php echo $data_select['membre_passions'] ?>" />
				<br/>
				<label for="travail"> Travail :</label>
				<input type="text" name="travail" id="travail"
				value="<?php echo $data_select['membre_travail'] ?>" />
				<br/>
				<label for="biographie"> Biographie :</label>
				<input type="text" name="biographie" id="biographie"
				value="<?php echo $data_select['membre_biographie'] ?>" />
                </fieldset>
               
                <fieldset><legend>Profil sur le forum</legend>
                <label for="avatar">Changer l avatar :</label>
                <input type="file" name="avatar" id="avatar" />
                <br /><br />
                <label><input type="checkbox" name="delete" value="Delete" />
                Supprimer l avatar</label>
                Avatar actuel :
                <?php echo'
                <img src="./images/avatars/'.$data_select['membre_avatar'].'"
                alt="pas d avatar" />' ?>
     
                <br /><br />
                <label for="signature">Signature :</label>
                <textarea cols=40 rows=4 name="signature" id="signature">
                <?php echo $data_select['membre_signature'] ?></textarea>
     
                <br /></h2>
                <fieldset>
                <?php
                echo'<input type="hidden" value="'.$pseudo.'" name="pseudo">
                <input type="submit" value="Modifier le profil" /></form>';
                }
                else echo' <p>Erreur : Ce membre n existe pas, <br />
                cliquez <a href="./admin.php?cat=membres&amp;action=edit">ici</a>
                pour réessayez</p>';
        }
        break;  		


le message derreur :

Parse error: syntax error, unexpected T_CASE in /mnt/167/sdb/d/5/j.pastore/Admin/admin.php on line 37
re lol, oui je l'ai corrigé aprés , j'ai bien mi au 2 défault: comme ca mais toujours la meme erreur je comprends pas..
salut



switch($action) //2eme switch
        {
        case "edit":
        //Edition d'un membre
        break;
 
                default; //action n'est pas remplie, on affiche le menu 
        echo'<h1>Administration des membres</h1>';
        echo'<p>Salut mon ptit, alors tu veux faire quoi ?<br />
       <a href="./admin.php?cat=membres&amp;action=edit">
       Editer le profil d un membre</a><br />
       <a href="./admin.php?cat=membres&amp;action=droits">
       Modifier les droits d un membre</a><br />';
        break;
        }
break;
default: //cat n'est pas remplie, on affiche le menu général
echo'<h1>Index de l administration</h1>';
echo'<p>Bienvenue sur la page d administration.<br />
<a href="./admin.php?cat=config">Configuration du forum</a><br />
<a href="./admin.php?cat=membre">Administration des membres</a><br /></p>';
break;
}
 
case "membres":


il n'y à rien qui vous choque? syntaxe à revoir entièrement.

le default d'un switch se place à la fin et ne sera pas suivi de break et encore de deux, c'est le cas içi, et ensuite on trouve un case alors que le switch est fermé...

donc, ligne 32, le case n'est pas à sa place.
re

vous devriez tout recoder avec un seul switch et un seul get.

perso, je trouve ce code ingérable.imaginez vous devoir le reprendre dans six mois...en plus il est buggué et les switch imbriqués sont très gourmand, en fait, ils n'ont pas de raisons de l'être, imbriqués, ce n'est pas le role d'une boucle switch, bien que possible.

et, toujours perso, je diviserais le tout en deux pages, cat et action et j'utiliserais plutôt :


$cat = trim(htmlentities(($_GET['cat'])));
//voire, mieux
$cat = trim(strip_tags(htmlentities(($_GET['cat']))));
//sur $action c'est aussi necessaire [cligne]


mais ce n'est que mon avis.pour en revenir à votre script, le dernier switch n'est pas fermé et le case membres est mal placé.un véritable éditeur php vous le signale de suite...zend studio, c'est le mien, maguma, phpedit...50/100 euros d'investissement valent mieux que trois ans de procédure...une zone membres, c'est sérieux.

ps: pour tous, de grâce, ne faites jamais aveuglement confiance au scripts trouvés sur internet.ils sont une base qui vous guide pour savoir comment s'y prendre, rien de plus.
je suis que débutant ca fait seulement 3 mois que je fais du php donc bon si tu pouvais me montré comment faire en détails par rapport a mon code :s
salut

un aperçu de ce que çà pourrait donner, ce n'est pas fini, il faut remettre le code à l'endroit et diviser en deux pages, choix, verification et affichage pour modifs, je fini ce soir.


<?php
if (!empty($_GET['cat'])) {
   $cat = trim(strip_tags(($_GET['cat'])));
} else $cat = false;

if (!empty($_GET['action'])) {
   $action = trim(strip_tags(($_GET['action'])));
} else $action = false;

$php_self = htmlentities($_SERVER['PHP_SELF']);

$membre_pseudo = $data_select['membre_pseudo'];
$membre_email = $data_select['membre_email'];
$membre_msn = $data_select['membre_msn'];
$membre_siteweb = $data_select['membre_siteweb'];
$membre_localisation = $data_select['membre_localisation'];
$membre_age = $data_select['membre_age'];
$membre_travail = $data_select['membre_travail'];
$membre_passions = $data_select['membre_passions'];
$membre_biographie = $data_select['membre_biographie'];
$membre_avatar = $data_select['membre_avatar'];
$membre_signature = $data_select['membre_signature'];

$texte = <<<EOF
<h1>Administration des membres</h1>
<p>Salut mon ptit, alors tu veux faire quoi ?<br /><a href="$php_self?cat=membres&amp;action=edit">
Editer le profil d un membre</a><br /><a href="$php_self?cat=membres&amp;action=droits">
Modifier les droits d un membre</a><br />
EOF;

$texte2 = <<<EOF
<h1>Index de l administration</h1>
<p>Bienvenue sur la page d administration.<br />
<a href="$php_self?cat=config">Configuration du forum</a><br />
<a href="$php_self?cat=membre">Administration des membres</a><br /></p>
EOF;

$formul = <<<EOF
<form method="post"  action="adminok.php?cat=membres&amp;action=edit" enctype="multipart/form-data">
<fieldset><legend>Identifiants</legend>
<label for="pseudo">Pseudo :</label>
<input type="text" name="pseudo" id="pseudo" 
value="$membre_pseudo" /><br />
</fieldset>
<fieldset><legend>Contacts</legend>
<label for="email">Adresse E_Mail :</label>
<input type = "text" name="email" id="email" value="$membre_email" /><br />
<label for="msn">Adresse MSN :</label>
<input type = "text" name="msn" id="msn" value="$membre_msn" /><br />
<label for="website">Site web :</label>
<input type = "text" name="website" id="website" value="$membre_siteweb"/><br />
</fieldset>
<fieldset><legend>Informations supplémentaire</legend>
<label for="localisation">Localisation :</label>
<input type = "text" name="localisation" id="localisation" value="$membre_localisation" /><br />	        
<label for="age"> Age :</label>
<input type="text" name="age" id="age" value="$membre_age" /><br/>
<label for="passions"> Passions :</label>
<input type="text" name="passions" id="passions"
value="$membre_passions" /><br/>
<label for="travail"> Travail :</label>
<input type="text" name="travail" id="travail" value="$membre_travail" /><br/>
<label for="biographie"> Biographie :</label>
<input type="text" name="biographie" id="biographie" value="$membre_biographie" />
</fieldset>
<fieldset><legend>Profil sur le forum</legend>
<label for="avatar">Changer l avatar :</label>
<input type="file" name="avatar" id="avatar" /><br /><br />
<input type="checkbox" name="delete" value="Delete" />
Supprimer l'avatar
Avatar actuel :
<img src="./images/avatars/$membre_avatar" alt="pas d'avatar" /><br /><br />
<label for="signature">Signature :</label>
<textarea cols=40 rows=4 name="signature" id="signature">
$membre_signature
</textarea><br />
<fieldset>
<input type="hidden" value="$pseudo" name="pseudo">
<input type="submit" value="Modifier le profil" />
</form>
EOF;

$formul_membres = <<<EOF
<p>De quel membre voulez-vous éditer le profil ?</p>';
<form method="post" action="$php_self?cat=membres&amp;action=edit">
<label for="membre">Inscrivez le pseudo : </label> 
<input type="text" id="membre" name="membre">
<input type="submit" name="Chercher"></p></form>
EOF;

if (false === $action or false === $cat) {
    switch($cat) {
	case "config":
		//ici configuration
		break;
    	case "membres":
		echo $formul_membres;
		break;
	default: //cat n'est pas remplie, on affiche le menu général
	            echo $texte2;
	}
 
	switch($action) {
                     case "edit":
       	               //Edition d'un membre
       	               break;
                     default;
                          //action n'est pas remplie, on affiche le menu 
                           echo $texte;	
                           break;
	   
	}

echo'<h1>Edition du profil d un membre</h1>';
if(!isset($_POST['membre'])) {
   echo $formul_membres;
} else {
     $pseudo = trim(strip_tags($_POST['membre']));
     $pseudo = mysql_real_escape_string($pseudo);

     $requete_select = mysql_query('SELECT membre_id,membre_pseudo,membre_email,membre_siteweb,membre_signature,membre_msn, membre_localisation, membre_avatar FROM forum_membres WHERE membre_pseudo="'.$pseudo.'"');
                 
      //Si la requête retourne un truc, le membre existe
      if ($data_select = mysql_fetch_assoc($requete_select))  {
          echo $formul;
      } else {
	echo' <p>Erreur : Ce membre n existe pas, <br />cliquez <a href="'.$php_self.'?cat=membres&amp;action=edit">ici</a> pour réessayez</p>';
	  }
   }
}
?>


tant pis pour la mise en page, édité 2 fois, des espaces sont ajouter pour je ne sait quelle raison.
Modifié par keran (28 Sep 2007 - 14:24)
re

je m'aperçois que la requète aussi n'est pas valide pour ce que vous souhaitez modifier, différences entre les champs de table et ceux du formulaire.je ne vois nulle part de mot de passe.vous n'en utilisez pas? si oui, vous devriez.

il manque aussi la connexion à la base, avant mysql_real...et mysql_query! le site du zéro à une bonne réputation pourtant!? parce que là, c'est inexploitable, purement et simplement.il faut tout recoder, enfin si un code fiable et sans failles est ce que vous voulez.

et il me semble que les sessions devraient être exploitées pour une zone membres, il n'y à pas de session_start() donc j'imagine que ce n'est pas le cas, c'est selon moi, une faille.ne pas tenir compte de l'option magic_quotes_gpc est aussi une erreur.le champ caché avec le membre comme valeur c'est aussi une belle faille potentielle.il serait plus à l'abri dans un tableau de session.

vous voulez créer quelle type d'application? la table se nomme forum_membres, c'est un forum? une zone membres avec la possibilité de modifier son profil?

avant de continuer, j'attend votre réponse, la suite du recodage và dépendre de cette dernière.
non lol c'est une zone membres que je fais et ceci c'est la page d'administration qui me permettrais de modifier le profil des membres voila si tu veux le code entier ou d'autres informations demande moi merci
re


si tu veux le code entier ou d'autres informations demande moi


non, si c'est juste une zone membres, je vais te faire une proposition en fin de week-end, il me faut le temps de coder le tout.tu auras le tout avec tes données.je viens de créer la table en me basant sur le formulaire.je vais juste rajouter une session et un mot de passe, c'est ok?
oki mais me faut juste une page d'administration pour modifier les profil des membres simplement ca et que je puisse delete un membre a partir du panneau d'administration aussi merci bcp
Pages :