probleme de validation avec include

probleme de validation avec include - PHP - Programmation

Marsh Posté le 24-05-2005 à 15:27:42    

en tentant de faire une seule page (template) index.php
avec des includes en fonction d'une variable.. j'ai des problèmes car il faut valider deux fois la page pour qu'elle soit afficher... je m'explique en un bout de code :
 

Code :
  1. <div id="centre">
  2. <?php
  3. if(!isset($_SESSION['titre_etape']))
  4. {
  5. $_SESSION['titre_etape']="Connectez-vous";
  6. }
  7. if($_SESSION['titre_etape']=="Connectez-vous" )
  8. {
  9. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  10. include('etape_connect.php');
  11. echo "</div>";
  12. }
  13. elseif($_SESSION['titre_etape']=="Saisie des coordonnées" )
  14. {
  15. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  16. include('etape_coordonnees.php');
  17. echo "</div>";
  18. }
  19. elseif($_SESSION['titre_etape']=="Choisissez votre logo" )
  20. {
  21. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  22. include('etape_logo.php');
  23. echo "</div>";
  24. }
  25. elseif($_SESSION['titre_etape']=="Choisissez un modèle" )
  26. {
  27. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  28. include("modeles.php" );
  29. echo "</div>";
  30. }
  31. elseif($_SESSION['titre_etape']=="Construction de votre document" )
  32. {
  33. include("outils_home.php" );
  34. include("visu.php" );
  35. }
  36. else
  37. {
  38. header("location : $PHP_SELF" );
  39. }
  40. ?>
  41. </div>


 
explication : j'ai une variable $_SESSION['titre_etape'] qui sert de repere dans le site.. quand un forumulaire est validé (action=$PHP_self) cette variable est modifiée et un include différent s'affiche en fonction de cette variable.
 
... je pensais que c t la bonne solution.. sauf que visiblement il faudrait faire ça en deux temps.. un coup la variable change... et ensuite c l'include qui change... mais il faut soit recharger la page.. soit revalider le formulaire...
 
zavez une autre méthode ? ou une astuce pour eviter ce probleme ?
 
thanks!
 
Freed

Reply

Marsh Posté le 24-05-2005 à 15:27:42   

Reply

Marsh Posté le 24-05-2005 à 15:42:58    

Je sais pas trop, mais tu devrait commencer par utiliser un switch plutot que les if et elseif, on galère avec ton code là !

Reply

Marsh Posté le 24-05-2005 à 15:44:17    

oui je sais mais bon le probleme n'est pas là je pense... cela dit t'as raison ! je vais le changer tout de suite en deux temps trois mouvements !

Reply

Marsh Posté le 24-05-2005 à 15:49:16    

voila :
 

Code :
  1. <?php
  2. switch($_SESSION['titre_etape'])
  3. {
  4. case "":
  5. $_SESSION['titre_etape']="Connectez-vous";
  6. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  7. include('etape_connect.php');
  8. echo "</div>";
  9. break;
  10. case "Connectez-vous" :
  11. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  12. include('etape_connect.php');
  13. echo "</div>";
  14. break;
  15. case "Saisie des coordonnées" :
  16. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  17. include('etape_coordonnees.php');
  18. echo "</div>";
  19. break;
  20. case "Choisissez votre logo" :
  21. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  22. include('etape_logo.php');
  23. echo "</div>";
  24. break;
  25. case "Choisissez un modèle" :
  26. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  27. include("modeles.php" );
  28. echo "</div>";
  29. break;
  30. case "Construction de votre document" :
  31. include("outils_home.php" );
  32. include("visu.php" );
  33. break;
  34. default :
  35. echo "<div id=\"divcentre\"><h1>$_SESSION[titre_etape]</h1>";
  36. include('etape_connect.php');
  37. echo "</div>";
  38. break;
  39. }
  40. ?>


Message édité par freed102 le 24-05-2005 à 15:50:42
Reply

Marsh Posté le 24-05-2005 à 16:04:59    

pour info... dans un include je fais ce genre de choses :
 

Code :
  1. [...]
  2. if ($pwd1 != $pwd2)
  3. {
  4. $field_pwd="Mauvais mot de passe !";
  5. }
  6. if (($pwd1==$pwd2)&&($mail==$mail2))
  7. {
  8. $result = mysql_query("SELECT * FROM clients WHERE email='$mail'" );
  9. $data_id = mysql_fetch_array($result);
  10. $_SESSION['id']= $data_id['id'];
  11. $_SESSION['titre_etape']="Saisie des coordonnées"; //valide pour l'etape suivante
  12. }

Reply

Marsh Posté le 24-05-2005 à 16:09:03    

pas de header dans ton script ??? c'est peu être çà non? lol

Reply

Marsh Posté le 24-05-2005 à 16:10:07    

bah je peux pas faire de header... mes include sont dans une page qui contient deja des elements HTML... donc header=DEAD !
et justement j'ai changé ma façon de faire parcequ'on m'a deconseillé d'utiliser les headers et d'utiliser un seul fichier avec des includes en revanche


Message édité par freed102 le 24-05-2005 à 16:11:12
Reply

Marsh Posté le 24-05-2005 à 16:19:50    

ah oui c'est vrai !  
 
essaie avec ca, mais faut le mettre dans le header de la page :
 
<meta http-equiv="refresh"
 content="1; url=http://tonsite">

Reply

Marsh Posté le 24-05-2005 à 16:21:36    

oula ! je pense pas que ce soit tres catholique cette methode ! de plus ma page risque de se reloader indefiniment !

Reply

Marsh Posté le 24-05-2005 à 16:35:20    

j'ai trouvé un moyen de detourner le probleme... c'est d'utiliser une page intermediaire
 
mon form action="$PHP_SELF" devient action="valid.php"
 
... dans valid.php je mets tous les scripts de validation (ps: cette page n'affiche rien.. elle ne fait que tester et valider le formulaire)
et à la fin un header("location: index.php" ); pour retourner sur la page index qui affiche les resultats...
 
qu'en pensez-vous ???


Message édité par freed102 le 24-05-2005 à 16:37:30
Reply

Marsh Posté le 24-05-2005 à 16:35:20   

Reply

Marsh Posté le 24-05-2005 à 18:23:30    

rohhh ! ecoutez... je sais pas si vous approuvez cette methode de navigation mais ça marche vraiment bien !!! :bounce:
 
je sais pas si c optimal par contre... car a chaque requete... ya deux pages qui se chargent...

Reply

Marsh Posté le 24-05-2005 à 20:15:49    

C'est très bien à mon goùt et souvent utilisé.
 
C'est toujours mieux qu'une redirection javascript ou meta refresh...

Reply

Marsh Posté le 25-05-2005 à 08:38:03    

bah voui ! et puis l'important, c'est que ca marche ! ;)

Reply

Marsh Posté le 25-05-2005 à 08:57:09    

yakob59 a écrit :

bah voui ! et puis l'important, c'est que ca marche ! ;)


 
Non l'important c'est que ca marche bien pour tout le monde. Ce qui est tres different  :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-05-2005 à 10:03:07    

si tu l'dis !

Reply

Marsh Posté le 25-05-2005 à 14:39:29    

esox_ch a écrit :

Non l'important c'est que ca marche bien pour tout le monde. Ce qui est tres different  :o


 
bah à priori ya pas de raison que ça marche pas pour tout le monde... c'est l'avantage du PHP ! c'est le serveur qui travail ! et c pas le navigateur qui reagit ! donc si ça marche pour un... ça marche pour tous !!!
 
non ?

Reply

Marsh Posté le 25-05-2005 à 14:50:50    

je crois aussi mais apparement esox ne pense pas comme nous !

Reply

Marsh Posté le 25-05-2005 à 14:51:54    

bah il veut peut etre dire que justement... c en evitant les meta-refresh et les javascript qu'on a plus de chance que ça marche PARTOUT !

Reply

Marsh Posté le 25-05-2005 à 14:54:13    

certes

Reply

Marsh Posté le 25-05-2005 à 14:57:13    

et puis l'important c'est que ça marche partout... certes ! mais faut pas non plus que le programme soit une usine à gaz pour le serveur... sinon les visiteurs risquent de fuire ! (c pourquoi je me demande si une action sur la page qui provoque deux évenements est une bonne solution!)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed