[PHP] Passage de pages en pages

Passage de pages en pages [PHP] - PHP - Programmation

Marsh Posté le 29-04-2008 à 18:00:27    

Salut @ tous,
 
Il me manque certaines connaissances en php bien que j'arrive à faire quelque chose. mais je me soigne (ici, en l'occurence...).
Je ne sais pas basculer entre mes sections d'une façon propre, j'ai tendance à utilser des include à la fin de mes fichiers php faisant des opérations et ce n'est certainement pas bien fait...
 
Par exemple :
- J'affiche une news via l'url "index.php?page=lirenews"
- Sur cette page, j'ai un bouton supprimer la news qui appelle "index.php?page=supprimernews&id=1"
 
Dans ce dernier cas, le fichier supprimernews.php (inclus par index.php évidemment) supprime la news dont l'id est 1 et le seul moyen de ne pas avoir de page blanche est de faire par exemple un include('home.php') à la fin.
 
Résultat : après l'opération, l'url afficher reste "index.php?page=supprimernews&id=1" au lieu, d'avoir par exemple "index.php?page=home"
 
Y a t-il une méthode plus élégante ? Pour basculer directement sur l'url "index.php?page=home"

Reply

Marsh Posté le 29-04-2008 à 18:00:27   

Reply

Marsh Posté le 29-04-2008 à 18:01:28    

header('Location: ...');


Message édité par sielfried le 29-04-2008 à 18:02:01

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-04-2008 à 20:39:32    

Si je remplace mon include('toto.php'); par header('Location:toto.php');, j'ai un écran blanc avec toujours la même url (il n'y va pas du tout)...

Reply

Marsh Posté le 29-04-2008 à 20:56:26    

PacoDL a écrit :

Si je remplace mon include('toto.php'); par header('Location:toto.php');, j'ai un écran blanc avec toujours la même url (il n'y va pas du tout)...


 
- il ne doit y avoir aucun affichage avant ;
- l'url est censée être absolue (même si ça marche avec du relatif en général), voir la doc pour un exemple concret ;
- passe ton error_reporting sur E_ALL, juste au cas où...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-04-2008 à 21:32:24    

le problème mon fichier index.php est l'unique point d'entrée de mon site qui inclus de base le haut et le pied de la page :
 
<?
include ('haut.php');
 
switch(@$_GET['page'])
{
case "lirenews":
include ('lirenews.php')
break;
 
case "supprimernews":
include ('supprimernews.php')
break;
 
case "default":
include ('home.php')
break;
}
 
include ('pied.php');
?>
 
Comme cela, je ne vois pas trop comment ne pas faire l'affichage du haut ou du pied de la page, vous avez une autre architecture à me proposer ?
 
Répéter des include('haut.php') et include('bas.php') uniquement dans les cas où je veux faire de l'affichage ne semble pas tenable ni propre du tout...
 
Si l'url marche en relatif, pourquoi changer (l'absolu est trop contraignant) ?
 
Je n'ai pas compris ta dernière remarque, qu'est-ce que mon error_reporting et comment faire ta manip ?

Reply

Marsh Posté le 29-04-2008 à 21:44:35    

PacoDL a écrit :

le problème mon fichier index.php est l'unique point d'entrée de mon site qui inclus de base le haut et le pied de la page :
 
<?
include ('haut.php');
 
switch(@$_GET['page'])
{
case "lirenews":
include ('lirenews.php')
break;
 
case "supprimernews":
include ('supprimernews.php')
break;
 
case "default":
include ('home.php')
break;
}
 
include ('pied.php');
?>
 
Comme cela, je ne vois pas trop comment ne pas faire l'affichage du haut ou du pied de la page, vous avez une autre architecture à me proposer ?


 
Ben fait un fichier php à part quand t'as une requête de ce genre à effectuer, et redirige sur l'index. :spamafote:
 
Petit conseil au passage, une suppression est censée être requêtée par POST (donc pas par l'URL). Je te recommande de changer cela.
 

Citation :

Si l'url marche en relatif, pourquoi changer (l'absolu est trop contraignant) ?


 
Parce que ça ne respecte pas le standard, donc c'est risqué pour le long terme (future version d'Apache ou je ne sais quoi). Il n'y a aucune garantie que ça marche comme ça, quoi.
 

Citation :

Je n'ai pas compris ta dernière remarque, qu'est-ce que mon error_reporting et comment faire ta manip ?


 
error_reporting(E_ALL) tout en haut.


Message édité par sielfried le 29-04-2008 à 21:45:02

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-04-2008 à 22:53:14    

Merci pour tes réponses.
Ca marche en pointant directement vers le fichier seulement, l'intérêt de passer par un unique point d'entrée est de rendre complètement opaque l'existence d'autres fichiers.
Je peux ainsi changer le mécanisme de suppression comme je le souhaite, sachant que le point d'entrée restera le même ('index.php?page=suppr...').
 
Pourquoi dans un POST ? Un lien reste un lien, bouton ou non, non ?

Message cité 1 fois
Message édité par PacoDL le 29-04-2008 à 22:55:42
Reply

Marsh Posté le 30-04-2008 à 07:31:15    

PacoDL a écrit :

Merci pour tes réponses.
Ca marche en pointant directement vers le fichier seulement, l'intérêt de passer par un unique point d'entrée est de rendre complètement opaque l'existence d'autres fichiers.
Je peux ainsi changer le mécanisme de suppression comme je le souhaite, sachant que le point d'entrée restera le même ('index.php?page=suppr...').


 
Tu peux toujours passer outre la contrainte en utilisant ob_start() et ses potes (voir doc), histoire de mettre ton affichage dans un tampon au lieu de le sortir immédiatement. Pas certain que ce soit une bonne idée (lors d'une suppression t'auras encore des echo qui seront faits pour rien, même tamponnés).
 

Citation :

Pourquoi dans un POST ? Un lien reste un lien, bouton ou non, non ?


 
Une requête POST et une requête GET, du point de vue HTTP, ce n'est pas pareil non. Le POST est recommandé pour tout ce qui va avoir des effets de bord, typiquement la création, l'ajout, la modification ou la suppression d'une ou plusieurs entités. L'une des raisons est d'éviter de pouvoir justement matérialiser ces actions par une URL (ce qui est le cas quand ça passe par GET), par exemple en recommandant à Mme Michu d'aller "venir participer à un jeu concours" en cliquant sur le lien dans le mail. [:petrus75]


Message édité par sielfried le 30-04-2008 à 07:32:39

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

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