Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
880 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Lien de page avec _GET

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lien de page avec _GET

n°526611
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 09:27:19  profilanswer
 

Bonjour,
 
Voila il y a qq temps, j'avais bricoler un fichier pour pouvoir redirigé vers mes pages en fonction de la variable du lien,
jusque la, j'utlisait un header pour repartir sur les pages. Mais ce qui me deplait, c'est l'url change aussi
dossier/page.htm au lieu de site.com/go.php?action=variable
 
Donc, j'ai voulu faire un include mais la page ne s'affiche pas.
 
Que faire ?
 

Code :
  1. <? ob_start();
  2. $variable = addslashes($_GET['action']);
  3. include ("connexion.php" );
  4. $id = MYSQL_CONNECT($serveur,$login,$pass);
  5. mysql_select_db("$base" );
  6. $query = "SELECT * FROM table WHERE champ = '$variable'" ; 
  7. $result=mysql_query($query) ; 
  8. $var = mysql_fetch_row($result);
  9. $lien = $var[2];
  10. if ($lien == ''){  $lien = 'index.htm' ; }
  11. include "$lien" ;
  12. //header("Location: $lien " );
  13. ?>


Message édité par bodbod le 30-09-2003 à 10:01:57

---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
mood
Publicité
Posté le 30-09-2003 à 09:27:19  profilanswer
 

n°526629
Mara's dad
Yes I can !
Posté le 30-09-2003 à 09:51:17  profilanswer
 

Si tu as judte des fichiers dans le même répertoire, çà devrait marcher, sinon faut voir.
 
Essaye avec require(), s'il y a une erreur, include() ne l'indique pas.
 
Fait un echo de $lien pour t'assurer de son contenu.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°526643
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 10:03:34  profilanswer
 

Mara's dad a écrit :

Si tu as judte des fichiers dans le même répertoire, çà devrait marcher, sinon faut voir.
 
Essaye avec require(), s'il y a une erreur, include() ne l'indique pas.
 
Fait un echo de $lien pour t'assurer de son contenu.
 

euh, je connais pas require (je suis novice)
 
J'ai deja fais un echo pour verifie et ca donne bien "dossier/fichier.ext" ou "fichier.ext".


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°526648
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 10:11:44  profilanswer
 

je viens d'essayer require mais le resultat est le meme que pour un include => Page blanche
 
Au fait, ce qui est bizarre, c'est que ca marche quand la variable est vide


Message édité par bodbod le 30-09-2003 à 10:14:27

---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°526652
Mara's dad
Yes I can !
Posté le 30-09-2003 à 10:23:55  profilanswer
 

Heu, un truc, quand même :
 
Tu commence par ob_start(), je suppose que c'est à cause du header que tu faisait  ;)  
 
Maintenant, soit tu fait un ob_end_flush(), soit tu virre le ob_start() !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°526654
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 10:26:43  profilanswer
 

euh oui mais je met l'autre avec include ou require ?


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°526656
Mara's dad
Yes I can !
Posté le 30-09-2003 à 10:28:41  profilanswer
 

Comme tu veux, la seule différence entre include() et require(), c'est que la première génère un warning si le fichier n'éxiste pas alors que l'autre provoque une erreur fatale : http://fr2.php.net/manual/fr/function.include.php
 
Sinon, çà marche maintenant ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°526658
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 10:29:50  profilanswer
 

j'ai une erreur sur la ligne 3  :(  
La ou esty le _GET


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°526659
Mara's dad
Yes I can !
Posté le 30-09-2003 à 10:31:38  profilanswer
 

Montre ton nouveau code et l'intitulé de l'erreur...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°526663
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 10:35:07  profilanswer
 

Mara's dad a écrit :

Montre ton nouveau code et l'intitulé de l'erreur...

Code :
  1. <? ob_end_flush()
  2. $variable = addslashes($_GET['action']);
  3. include ("connexion.php" );
  4. $id = MYSQL_CONNECT($serveur,$login,$pass);
  5. mysql_select_db("$base" );
  6. $query = "SELECT * FROM table WHERE action = '$variable'" ; 
  7. $result=mysql_query($query) ; 
  8. $var = mysql_fetch_row($result);
  9. $lien = $var[2];
  10. if ($lien == ''){  $lien = 'index.htm' ; }
  11. //include $lien ;
  12. //echo "$lien" ;
  13. //header("Location: $lien " );
  14. require $lien;
  15. ?>


 

Code :
  1. Parse error: parse error in /home/bodbod/www/go.php on line 3


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
mood
Publicité
Posté le 30-09-2003 à 10:35:07  profilanswer
 

n°526674
Mara's dad
Yes I can !
Posté le 30-09-2003 à 10:44:02  profilanswer
 

Arf !
 
Quand je dis de mettre ob_end_flush(), c'est pas à la place d'ob_start() !
 
Tu sais à quoi sert ob_start() ? ? ?
 
Ton erreur (PHP) vient du fait que tu as oublié un ; après ob_end_flush().
 
 
Bon, reprenons :
 
ob_start() est une fonction qui sert à mettre en buffer tout ce qui est normalement envoyé au client (navigateur). C'est utile si tu commence à envoyer des choses et que tu te rends compte que tu dois envoyer un header. Comme les headers doivent être envoyés avant tout autre chose, la mise en buffer peut être utilisée pour çà même si çà veux dire que ton code est ... bourrin :)
Quand on utilise la mise en buffer, il faut dire à PHP quand envoyer les données, c'est à çà que sert ob_end_flush().
 
Comme tu ne veux plus utiliser de header, çà ne te sert à rien.
 
Donc :
 

Code :
  1. <?php
  2. $variable = addslashes( $_GET['action'] );
  3. include( "connexion.php" );
  4. $id = MYSQL_CONNECT( $serveur, $login, $pass );
  5. mysql_select_db( "$base" );
  6. $query = "SELECT * FROM table WHERE action = '$variable'" ; 
  7. $result = mysql_query( $query ); 
  8. $var = mysql_fetch_row( $result );
  9. $lien = $var[2];
  10. if ($lien == '')
  11. {
  12.     $lien = 'index.htm';
  13. }
  14. include( $lien );
  15. ?>

 
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°526695
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 10:53:17  profilanswer
 

Voila mon nouveau code :

Code :
  1. <?
  2. $variable = addslashes($_GET['action']);
  3. include ("connexion.php" );
  4. $id = MYSQL_CONNECT($serveur,$login,$pass);
  5. mysql_select_db("$base" );
  6. $query = "SELECT * FROM bodbod_lien_site WHERE action = '$variable'" ; 
  7. $result=mysql_query($query) ; 
  8. $var = mysql_fetch_row($result);
  9. $lien = $var[2];
  10. if ($lien == ''){  $lien = 'index.htm' ; }
  11. include ($lien) ;
  12. echo "$lien" ;
  13. //header("Location: $lien " );
  14. //require $lien;
  15. ?>


Et la page est toujours vide mise a part le echo qui renvoi la valeur de "$lien".
Regarde : http://www.bodbod.com/go.php?action=informatique


Message édité par bodbod le 30-09-2003 à 10:53:38

---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°526732
Mara's dad
Yes I can !
Posté le 30-09-2003 à 11:11:19  profilanswer
 

Je ne suis pas d'accord avec toi !
 
Va là http://www.bodbod.com/go.php?action=informatique avec ton navigateur préféré.
 
Il affiche bien :

Informatique/index.php


 
Mais va voir le source, et tu comprendras !
 
 
 
 
 
 
Si tu ne comprend pas, l'explication est simple :
 
Ton url est http://www.bodbod.com/go.php?action=informatique
Donc tu est à la racine du site. Le fichier HTML que reçoi ton navigateur est une page qui décrit des frames.
 
MAIS, ton navigateur va pas aller les chercher dans le dossier Informatique, il va les chercher là où il est, à la racine du site.
 
Bon, y'a des solutions pour ton problème. La plus simple est de changer tous tes liens pour les mettre en Absolu au lieu de relatif. Dans le HTML en tout cas.
 
Dans /Informatique/index.php, au lieu  de mettre :
 

<frame name="banniere" scrolling="no" noresize target="sommaire" src="banniereH.htm">


Met un chemin complet :
 

<frame name="banniere" scrolling="no" noresize target="sommaire" src="/Informatique/banniereH.htm">


 
Mais attention à tes liens dans ta base MySql si tu les modifie avec un \ devant, c'est le include() qui va merder si tu le fais tel-quel. Tu comprends pourquoi ?
 
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°526748
bodbod
Planquez vous, bodbod arrive..
Posté le 30-09-2003 à 11:19:12  profilanswer
 

ah OK
En fait, en faisant un include, la page se met dans l'autre comme si elle etait dans le meme repertoir et donc, elle cherche les pages de frame dans ce meme repertoire.
 
Donc j'arrive au limite de mes bidouilles :d
 
Je vais voir ce que je peux faire.
La je dois partir, on verra ca une autre fois


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Lien de page avec _GET

 

Sujets relatifs
Probleme d'affichage avec une page en asp.netComment forcer une page html à ne pas venir du cache
[debutant][Resolu]Passer la page suivante ?Empecher l'arret du chargement des images lors d'un click sur la page?
Vérifier la présence d'un cookie dans une page appelée par un include.Rotation d'images pour page d'acceuil
[autorun] lancer une page html dans une fenêtre aux dimensions voulues[JS] tjs le logo 'Terminé mais il reste des erreurs sur la page'
Rafraichissement automatique et "transparent" d'une page web ?[HELP] Utiliser donner excel sur page html
Plus de sujets relatifs à : Lien de page avec _GET


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR