Bonjour !
Aujourd'hui je me retrouve confronté à un problème auquel je ne m'attendais pas. Présentation du cas :
J'affiche une liste des 5 dernières news en affichant leur titre.
Problème :
J'aurais voulu mettre le lien direct vers la news correspondante.
Le code :
<?php
require "./includes/config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD);
mysql_select_db(DB_BDD);
$sql="SELECT * FROM news ORDER BY id DESC LIMIT 5";
$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data=mysql_fetch_assoc($req)){
echo "<li><p>{$data["titre"]}<p></li>";
}
?>
Ta balise a devrait être autour du titre lui-même, pas autour du li.
Et si ce n'est pas ça dis nous ce c'est le problème exactement ? Le lien qui est mal construit ou qui ne marche pas ?
Erreur SQL !
SELECT * FROM news WHERE id=
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
J'ai changé la ligne :
<?php
$sql='SELECT * FROM news WHERE id='.mysql_real_escape_string($_GET['id']);
Par :
<?php
$sql='SELECT * FROM news WHERE id='.mysql_real_escape_string($_GET['id']).'';
et que tu cliques dessus, tu récupères dans la page 'index.php' la variable '$_GET['id'] qui vaut 'id_de_la_news'.
Donc pour que cette variable existe, il faut que tu aies cliqué sur le lien en question.
Salut toi! La je vien de finir de crée mon site et j'étais dans la meme galère que toi...
Mais tien moi g crée un page
news.php (indexant les 7 premiers news avec les 100 premiers caracteres)
viewnews.php (La reponse a ton probleme ^^)
news.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
</head>
<body>
<div class="contenant">
<div class="contenu">
<h1>A la une !</h1>
<?php
// Connexion à la base de données
try
{
$sql2 = "SELECT COUNT(id) FROM billets";
$result2 = mysql_query($sql2) or exit ( mysql_error () );
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
if(mysql_num_rows($result2) > 0)
{
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 7; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$sql3 = 'SELECT COUNT(*) AS nb_messages FROM billets';
$retour_count = mysql_query($sql3);
$donnees = mysql_fetch_assoc($retour_count);
$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo ' || <a href="news.php?page=' . $i . '">' . $i . '</a> ';
}
if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$sql = 'SELECT id, auteur, Titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr, id_sha1 FROM billets ORDER BY date_creation DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage;
$reponse = mysql_query($sql) or exit ( mysql_error() );
while ($row = mysql_fetch_assoc($reponse))
{
$contenu = stripslashes(html_entity_decode(nl2br(substr(htmlspecialchars($row['contenu']), 0, 100))));
?>
<h3 class="non_h3">
<a href="<?php echo ROOTPATH; ?>/membres/viewnews.ph?news_sha=<?php echo htmlspecialchars($row['id_sha1']);?>&news_id=<?php echo htmlspecialchars($row['id']);?>"><?php echo htmlspecialchars($row['Titre']);?></a>
le <em class="important"><?php echo $row['date_creation_fr']; ?></em> par <em class="important"><?php echo htmlspecialchars($row['auteur']);?></em>
</h3>
<?php echo $contenu ?></p> </br>
</p>
<br />
<?php
}
}
else
{
?>
<p>Il n'y a pas de news pour le moment si vous voulez en crée un, </br><a href="<?php echo ROOTPATH; ?>/membres/create-news.php">Crée un news</a></p>
<?php
}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
</div>
</div>
<?php
include("../include/footer.php");
?>
</body>
</html>
<?php
}
else
{
?>
<meta http-equiv="refresh" content="0;URL=<?php echo ROOTPATH; ?>/interdit.php">
<?php
}
viewnews.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
</head>
<?php
$formulaire_new_id = $_GET['news_id'];
$formulaire_new_sha = $_GET['news_sha'];
include('../include/haut.php'); //contient le doctype, et head.
if(isset($_SESSION['membre_id']))
{
if(isset($formulaire_new_id) && isset($formulaire_new_sha))
{
$sql2 = "SELECT id, auteur, Titre, contenu, DATE_FORMAT(date_creation, '%d/%m/%Y à %Hh%imin%ss') AS date_creation_fr, id_sha1 FROM billets WHERE id_sha1 =\"" . $formulaire_new_sha . "\"";
$sql_count = "SELECT COUNT(id) AS count_comments FROM commentaires";
$sql3 = "SELECT id, id_billet, auteur, DATE_FORMAT(date_creation, '%d/%m/%Y à %Hh%imin%ss') AS date_creation_comments FROM commentaires WHERE id_billet =\"" . $formulaire_new_sha . "\"";
$result2 = mysql_query($sql2) or exit ( mysql_error () );
$result3 = mysql_query($sql_count) or exit ( mysql_error());
$row2 = mysql_fetch_assoc($result2);
$row3 = mysql_fetch_assoc($result3);
$titre_view = htmlspecialchars($row2['Titre']);
$auteur_view = htmlspecialchars($row2['auteur']);
$date_view = htmlspecialchars($row2['date_creation_fr']);
$contenu_view = stripslashes(html_entity_decode(nl2br(htmlspecialchars($row2['contenu']))));
$titre = $titre_view;
echo '
<body>
<div class="contenant">
<div class="contenu">';
echo '<h1>' . $titre_view . '</h1>';
echo '<h3>le<span class="important"><em> ' . $date_view . '</em></span> par <span class="important"><em>' . $auteur_view . '</em></span></h3>';
echo '<p>' . $contenu_view .
'</p>
<br />
<br/>
<br/>
<hr/>
';
if($row3['count_comments'] > 0)
{
echo '<h4>Il y a ' . $row3['count_comments'] . 'commentaires.</h4></br>';
echo '<br/><br/> ';
}
else
{
echo '<h4>Il n\'y a pas de commentaires.</h4>';
}
echo '<hr/>
<textarea style="width:459px; height:300px; text-align:center">
</textarea></div></div></body></html>
';
}
}
else
{
?>
<meta http-equiv="refresh" content="0;URL=<?php echo ROOTPATH; ?>/interdit.php">
<?php
}
include("../include/footer.php");
?>
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.