PB affichage page suite à un lien

Répondre
Forrest
le 15/07/2009 à 12:36
Forrest
Bonjour,
J'ai déjà fait et pourtant, je ne trouve pas mon erreur...
J'ai une table "actualites" dans une première page j'affiche le contenu de la table et classant par l'id dans l'ordre desc.
Ici pas de pb voici le code avec le "<?php do { ?>"(while):

<?php

mysql_select_db($database_emoi, $emoi);
$query_actu = "SELECT id, titre, imageSmall, resume FROM actualites ORDER BY id DESC";
$actu = mysql_query($query_actu, $emoi) or die(mysql_error());
$row_actu = mysql_fetch_assoc($actu);
$totalRows_actu = mysql_num_rows($actu);

?>

<?php do { ?>
<div class="resume">
<img src="./images/actu/small/<?php echo $row_actu['imageSmall']; ?>" title="<?php echo $row_actu['title']; ?>" border="0" class="cartoucheimg"/>

<h2><?php echo $row_actu['titre']; ?></h2>
<br />
<p class="actuResume">
<?php echo ereg_replace("\n", "<br :>",$row_actu['resume']); ?></p>
<p class="suite" style="text-align:right; font-size:10px; margin-top:5px;">
<a href="index.php?page=actualite/article&?ficheArticle=<?php echo $row_actu['id']; ?>">Lire la suite...</a></p>
</div>
<?php } while ($row_actu = mysql_fetch_assoc($actu)); ?>


Le href pointe sur une page article.php, mais malgré le contenu de 2 articles dans la base, j'affiche toujours la même page, que l'id soit à 1 ou 2...

Et zut je ne vois pas ce qui cloche ! Voici le code de la page article.php :

<?php

$colname_actu = "1";
if (isset($_GET['id'])) {
$colname_actu = (get_magic_quotes_gpc()) ? $_GET['id'] :
addslashes($_GET['id']);
}
if (isset($_POST['id'])) {
$colname_actu = (get_magic_quotes_gpc()) ? $_POST['id'] :
addslashes($_POST['id']);
}

mysql_select_db($database_emoi, $emoi);
$query_actu = sprintf("SELECT titre, imageLarge, intro, texte FROM actualites WHERE id = '%s'", $colname_actu);
$actu = mysql_query($query_actu, $emoi) or die(mysql_error());
$row_actu = mysql_fetch_assoc($actu);
$totalRows_actu = mysql_num_rows($actu);

?>

<?php echo $row_actu['titre']; ?>

<img src="./images/actu/medium/<?php echo $row_actu['imageLarge']; ?>" title="<?php echo $row_actu['title']; ?>" border="0" class="cartoucheimg"/>

<?php echo ereg_replace("\n", "<br :>",$row_actu['intro']); ?>
<br />
<p class="actuResume">
<?php echo ereg_replace("\n", "<br :>",$row_actu['texte']); ?>
</p>
<br /><br />

<p class="suite">
<a href="index.php?page=actualite/actualite">
<img src="./images/charte/fleche_prec.gif" border="0" />
Voir les autres Actualit&eacute;s...</a></p>


le lien pour visualiser le résultat : http://www.emoi.asso.fr/index.php?page=actualite/actualite

A toute fin utile, ma table :
`actualites` (
`id` int(11) NOT NULL auto_increment,
`theme` varchar(20) NOT NULL,
`titre` varchar(50) NOT NULL,
`resume` varchar(200) NOT NULL,
`intro` text NOT NULL,
`texte` text NOT NULL,
`imageSmall` varchar(20) NOT NULL,
`imageLarge` varchar(20) NOT NULL,
`title` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


Merci pour votre aide.

Jean-Pierre
Jean-Pierre
LA GLOBULE
le 15/07/2009 à 13:43
LA GLOBULE
Es tu sur de recevoir un id dans ta page article.php ? Tu peux le voir en faisant un echo de $colname_actu.

En effet, il y'a un truc louche : ton href ne pointe pas sur article.php mais sur index.php : index.php?page=actualite/article&?ficheArticle=<?php echo $row_actu['id']; ?>

Alors après, je ne sais pas ce que tu fais pour passer d'index.php à article.php, mais c'est Z (si tu fais un include d'article.php dans index.php, c'est normal de ne pas obtenir $_GET['id'] dans article.php car on ne voit aucun endroit ou le paramètre id s'initialise en GET).
Forrest
le 15/07/2009 à 15:53
Forrest
Bonjour La Globule, réponse rapide !...

Alors oui effectivement mon href ne pointe pas sur article.php c'est effectivement un iclude dans la page index, voici le code de la page index :
<?php
if ($_GET['page'] != '')
{
include ($_GET['page'].'.php');
}
else
{
include ("accueil.php");
}
?>

J'ai suivi ton conseil, "echo $colname_actu;" le résultat, "1" est retourné quelque soit le lien.

Pour ta dernière question, ai-je mal compris comment on passe un id ?

Dans la première page (actualite.php) sur l'href je clic sur un des liens, ici id=1 ou id=2.

http://www.emoi.asso.fr/index.php?page=actualite/actualite


Et dans la seconde page (article.php) j'ai if
...(isset($_GET['id']))... le code que j'ai mentionné dans la première question.

Mais c'est certainement là que je me suis loupé...

Qu'elle est la bonne méthode ???
Merci

Jean-Pierre
Jean-Pierre
LA GLOBULE
le 15/07/2009 à 16:55
LA GLOBULE
Bon en fait, le problème est simple, c'est que tu ne recupères pas de $_GET['id'] dans article.php.

En effet, le lien est de la forme : http://www.emoi.asso.fr/index.php?page=actualite/actualite (personnellement, je ne vois pas le mot 'id' dans cette URL).

Ensuite, ce qu'il se passe, c'est que dans article.php, tu ne recois pas de $_GET['id'], donc $colname_actu prend la valeur que tu lui colles par défaut, c'est à dire 1.

Donc modifie ton URL pour y inclure ce fameux paramètre id.

PS : ton code avec tes include est une faille de sécurité. Le mieux, c'est de tester $_GET['page'] pour vérifier qu'il appartient bien à une liste de page que tu définies avant de l'inclure aveuglement.
Forrest
le 15/07/2009 à 17:09
Forrest
Ok ! Mais comment ?...

mon url, lorsque la souris passe sur un lien de la liste d'articles est :

http://www.emoi.asso.fr/index.php?page=actualite/article&?ficheArticle=2 (2 étant le second enregistrement)

Le code pour en arrviver là :
<a href="index.php?page=actualite/article&?ficheArticle=<?php echo $row_actu['id']; ?>">Lire la suite...</a>

Maintenant j'ai bien compris que je ne recevais pas cet id dans la seconde page, mais je n'ai pas compris comment faire pour y arriver !...
Cordialement
Jean-Pierre
Jean-Pierre
LA GLOBULE
le 15/07/2009 à 17:30
LA GLOBULE
Dans ton lien, le deuxième paramètre ficheArticle, tu ne dois pas mettre de ? devant, un & suffit (seul le premier paramètre nécessite un ?).

Ensuite, dans article.php ben au lieu d'utiliser $_GET['id'], utilise $_GET['ficheArticle'].
Forrest
le 15/07/2009 à 17:38
Forrest
Merci La Globule !
Je savais que c'était trop c--, mais plus c'est c-- et plus c'est dur à trouver pour un novice comme moi !
Je fais tout pour m'améliorer mais le chemin est encore long et ce n'est pas toujours un long fleuve tranquille...
Mais cette fois c'est pour une bonne cause et j'veux vraiment avoir qq chose qui fonctionne bien.

Pour sécuriser mes pages, je vais m'en occuper.

Grand merci à Toi.

Jean-Pierre
Jean-Pierre
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours