les liens !

Répondre
Keika
le 30/04/2006 à 17:08
Keika
Bonjour !

Alors voici le probleme du jour:

Lorsque j'ai commencé mon site j'ai créé plusieurs dossiers afin de mettre de l'ordre dans les pages.
J'ai ainsi des dossiers tels que "admin" "pages" "script".Tous ces dossiers sont à la racine du site, ainsi que la page index.php et les style.css.

Aussi j'utilise ce morceau de code pour ouvrir les différentes pages :

<?php

//Gestion de l' affichage des différentes pages
$variables = explode("/",$_SERVER['QUERY_STRING'] );

if( ! isset($variables) ) { $variables[0] = "news"; }

if( file_exists("./pages/".$variables[0].".php") ){

require("./pages/".$variables[0].".php");

}else{ require("./pages/news.php"); }
?>


maintenant mon probleme est le suivant:

J'ai parfois besoin d'appeller par un lien des pages situées dans les autres dossiers.

Exemple:

Pour la modification des news. j'ai une page modify.php contenant tout le code necessaire. Ce code fait qu'il affiche d'abords les différents titres des news afin que je selectionne celui que je veux modifier. Ensuite vient ce lien:

echo '<a href="./pages/modify.php?id='.$data['id'].'">'.$data['titre'].'</a><br>';


Et là est tout le probleme. Si je ne réclame pas une page avec un <a href="?page">, jamais le serveur ne m'affiche la page normalement. Là je dois donc mettre modify.php comme lien et lorsque je clique dessus, il m'affiche bien mon formulaire pour modifier la news, mais sans la charte graphique, juste en noir et blanc.

Voyez vous comment je pourrais résoudre cela ?

Je suis un peu compliqué dans mes explications mais je peux donner le lien du site afin que vous voyez vraiment ce que ca donne.

Merci d'avance

K.
Le PHP --> C'est dur !
bibi
le 01/05/2006 à 00:52
bibi
echo '<a href="?page=./pages/modifiy.php&id='.$data['id'].'"'.$data['titre'].'</a>';
commit suicide
Keika
le 01/05/2006 à 16:59
Keika
non ca ne passe pas.

Mes liens se font en <a href="?page">

sans le .php et sans le page=, juste avec le ?

en fait il faudrait que quand je clique sur le lien, ca recharge la page tout en envoyant l'id de la news.
ou alors faut que je crée une autre page avec le formulaire et l'acces à la bdd dedans...
Le PHP --> C'est dur !
Michel_57
le 01/05/2006 à 19:25
Michel_57
je n'ai pas compris où est le problème, tu as su le résoudre entre temps ?
Merci LEPHPFACILE et tous ses membres :)
bibi
le 01/05/2006 à 20:28
bibi
tu veux dire que tu fais de l'url rewriting ?
commit suicide
Keika
le 01/05/2006 à 21:25
Keika
non je n'ai pas résolu le probleme
et oui je pense qu'il vaudrait mieux faire de l'url rewritting, mais je ne sais pas le faire.
je vais finir par vous envoyer mes codes sources ca ira plus vite. !
Le PHP --> C'est dur !
bibi
le 01/05/2006 à 22:29
bibi
au lieu de "finir" par ca , faudrait ptet commencer par ca ..
commit suicide
Keika
le 02/05/2006 à 00:50
Keika
ok alors,

voici la page modify.php:

<html>
<title>Modification de news</title>
<?php
//on se connecte a la bdd
include ('bdd.php.inc') ;

// lancement de la requête
$sql = 'SELECT titre, id FROM news ORDER BY date DESC;';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {

// on affiche les résultats

echo '<a href="./pages/modify.php?id='.$data['id'].'">'.$data['titre'].'</a><br>';
}
if (isset ($_GET['id'])) {

//requete SQL pour tiré les infos du tableau NEWS
$sql = 'SELECT titre, auteur, texte_news, id FROM news WHERE id="'.$_GET['id'].'"';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

while ($data = mysql_fetch_array($req)) {
?>
<body>
<font size="1" family="Verdana, Arial">
<!-- on fait pointer le formulaire vers la page traitant les données -->

<form action="../admin/modify_news.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="
<?php
echo ''.$data['auteur'].'' ;
?>
">
</td></tr><tr><td>
<span class="gras">Titre :</span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="
<?php
echo ''.$data['titre'].'' ;
?>
">
</td></tr><tr><td>
<span class="gras">News :</span>
</td><td>
<textarea name="texte_news" cols="50" rows="10"><?php
echo ''.$data['texte_news'].'' ;
?>
</textarea>
</br>
<input type="text" name="id" maxlength="30" size="50" value="
<?php
echo ''.$data['id'].'' ;
?>
">
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Poster la news">
</td></tr></table>
</form>

</font>
</body>
</html>
<?php
}
}
mysql_free_result ($req);
mysql_close ();

?>


Ensuite comme je l'ai dit, j'ai ma page d'index.php dans laquelle j'ai un div nommé "news" (utilisé pour afficher les infos contenus dans les pages). Et dans ce div j'ai ce code :

<!--Div du milieu -->
<div id="news">
<?php

//Gestion de l' affichage des différentes pages
$variables = explode("/",$_SERVER['QUERY_STRING'] );

if( ! isset($variables) ) { $variables[0] = "news"; }

if( file_exists("./pages/".$variables[0].".php") ){

require("./pages/".$variables[0].".php");

}else{ require("./pages/news.php"); }
?>
<!--Fin div milieu -->


Comme vous le voyez, afin qu'une page s'affiche dans ce div il faut que je fasse un lien du style:

<a href="?galerie">Galerie</a>

sinon ca ne s'affichera pas.

Maintenant pour reussir à envoyer l'id de ma news je passe par le lien :

<a href="./pages/modify.php?id='.$data['id'].'">

et là ca m'affiche la page sans pour autant la mettre dans le div "news" (ce qui est normal) et donc sans la charte graphique du site...

le site est hébergé là pour le moment:

http://supermu.free.fr/test/

Merci de votre aide ^_^
Le PHP --> C'est dur !
mojorisin
le 02/05/2006 à 07:42
mojorisin
Salut,
Bon déjà une petite remarque :
evite ça :include ('bdd.php.inc') ;
Le type .inc n'est sans doute pas reconnu comme script php par le serveur, donc si quelqu'un y accede directement il sera trainté comme text/plaain et donc affiché directement en clair.

Ensuite le lien que tu dois utiliser devrait être :
<a href="?modify">Modifier</a>

Il faudra donc que tu modifie ton controleur (la page index) pour traiter les arguments.
Nouveau lien :
<a href="?modify&id='.$id.'">Modifier</a>

il faudra que tu récupere la position du premier esperluette dans la chaine pour la scinder et traiter les arguments.
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
bibi
le 02/05/2006 à 15:42
bibi
ALors premierement , remplacer echo ''.$variale.''; par echo $variable; ca marche aussi.

Ensuite, ta méthode est un peu "bourrine".
Pourquoi ne pas créer un tableau associatif nom => page

par exemple

$pages = array();
$pages['modify'] = "/dossier/page.php";

et ensuite tu fais un truc du style

if(isset($variable[0]) && isset($pages[$variable[0])) { require_once ROOT_PATH.$pages[$variable[0]; }

ROOT_PATH étant une constante pour définir comment acceder a la racine du projet par rapport a la page d'ou t'appelles le require.

J'espere avoir été clair :)
commit suicide
Répondre
LoadingChargement en cours