Lien dans systéme de news

Résolu/Fermé
showMe9031 Messages postés 21 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 20 novembre 2015 - 18 sept. 2013 à 13:45
gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 - 19 sept. 2013 à 09:00
Bonjour,
Je vous explique:
J'ai un système de news et je voudrai avoir un "lire la suite" et que ça redirige vers le page de ma news et j'aimerai que le lien puisse être rajouter depuis ma page de création de news (insert_news.php). J'ai cherché sur le net, impossible de trouver un truc sur ça.

Voici le code de la page qui affiche les news:

<?php
// on se connecte à notre base
$base = mysql_connect ('', '', '');
mysql_select_db('', $base);

// lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)
$sql = 'SELECT auteur, titre, date, texte_news 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 !<br />'.$sql.'<br />'.mysql_error());

// on compte le nombre de news stockées dans la base de données
$nb_news = mysql_num_rows($req);

if ($nb_news == 0) {
echo 'Aucune news enregistrée.';
}
else {
// si on a au moins une news, on l'affiche
while ($data = mysql_fetch_array($req)) {

// on décompose la date
sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);

// on affiche les résultats
echo "<h2>" , htmlentities(trim($data['titre'])) , "</h2>";
echo '<font size="2.9em">' , nl2br(htmlentities(trim($data['texte_news']))) , '</font><br>';
echo '<font size="2.5em"><a href="' , htmlentities(trim($data['lien'])) ,'">Lire la suite...</a></font><br></br>';
echo "<font size=\"1\">Postée le : " , $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' , $min , ':' , $sec , ' par ' , htmlentities(trim($data['auteur'])) ,"</font> <br /><br /><hr></hr>";;
}
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);

// on ferme la connexion à la base de données
mysql_close ();
?>

Voici le code de la page insert_news.php:

<?php
// on teste si le formulaire a été validé
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
// on se connecte à notre base
$base = mysql_connect ('', '', '');
mysql_select_db('', $base);

// on teste la déclaration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['news'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['news'])) {
$erreur = 'Au moins un des champs est vide.';
}
// si tout est bon, on peut commencer l'insertion dans la base
else {
// lancement de la requête d'insertion
$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['news']).'")';

// 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)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base de données
mysql_close();

// on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site.
echo '<p>Pour revenir au Nexus, Cliquez sur < Retour</p>';
echo '<p><a href="../admin/formulaire.php">< Retour</a>';
// on termine le script courant
exit();
}
}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_news.php" method="post" enctype="multipart/form-data">
<center>
<u><h1>Nouvelle News</h1></u>
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Titre :</span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td></tr><tr><td>
<span class="gras">News :</span>
</td><td>
<textarea name="news" cols="50" rows="10"><?php if (isset($_POST['news'])) echo htmlentities(trim($_POST['news'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Poster la news">
</td></tr></table></center>
<p><a href="../admin/formulaire.php">< Retour au Nexus</a>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<centeer><br /><br />',$erreur , '</center>';
?>

Merci d'avance !

6 réponses

Tammera83 Messages postés 1 Date d'inscription mercredi 18 septembre 2013 Statut Membre Dernière intervention 18 septembre 2013 1
18 sept. 2013 à 16:21
Oui, c'est la solution php / mysql qui doit être choisie, même d'un point de vue SEO elle présente des avantages.

Tu fais ton premier SELECT qui affiche tes articles, tu récupères le contenu puis tu fais un substr après 150 caractères par exemple :

$contenu = substr($contenu ,0,150).'...';

Avec un lien <a href="/articles.php?id=1">Lire la suite</a>

Voila.
1
Utilisateur anonyme
18 sept. 2013 à 15:10
salut
regarde du côté de header :
https://www.php.net/manual/fr/function.header.php
ou du include :
http://php.net/manual/fr/function.include.php

qui pourront être couplés à un javascript pour rediriger / masquer.


sinon tout bête, il te suffit que ce soit un href .... :

<code>
<?php
...
echo "<a href=" . $page_a_rediriger . ">Lire la suite</a>";
...
?>

naga
0
showMe9031 Messages postés 21 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 20 novembre 2015 1
18 sept. 2013 à 15:13
ok merci, je vais regarder,
Sinon il y a rien a faire dans la base de donnée ?
0
Utilisateur anonyme
18 sept. 2013 à 16:15
vis à vis de la redirection, non. La base de donnée peu te permettre de stocker des info concernant ta redirection, tel que la page conteneur par exemple, mais un site dynamique voudrai que la page contenant un news complète soit générée à partir d'un identifiant de news (passé en paramètre , POST ou GET)
0
gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 5
Modifié par gign44 le 18/09/2013 à 16:14
Bonjour,

Personnellement je serais plutôt dans une autre méthode à ta place.
Je passerais l'ID de la news en parametre d'un lien du genre :


<?php
echo "<a href='index.php/?news=".$ID_DE_TA_NEWS."'>Lire la suite</a>";
?>

Puis dans ton index ou une autre page :


if((isset($_REQUEST['news']))&&(!empty($_REQUEST['news']))){

$IDnews=$_REQUEST['news'];


// on se connecte à notre base
$base = mysql_connect ('', '', '');
mysql_select_db('', $base);

$sql = "SELECT auteur, titre, date, texte_news FROM news WHERE ID=".$IDnews.";";

// 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 !<br />'.$sql.'<br />'.mysql_error());



}

je pense que tu as compris que après la requête il te reste plus qu'à faire l'affichage de ta news comme le code que tu as mis dans ton premier message.
Il te suffit juste d'avoir un colonne ID en AutoIncrementation pour les News dans ta table.
Je pense que c'est le plus automatisé.

Et afficher ta requete SQL dans ton "die" n'est pas très sécurisé contre de l'injection, c'est cadeau là ;)
die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());


Cordialement
0
Utilisateur anonyme
18 sept. 2013 à 16:17
tout dépend de ce qu'il possède en base, ton cas est trop restrictif car il concerne 1 cas ... je suppose qu'il a dû lui même faire son code et donc qu'il cherche des types options qu'il pourrait adopter plutot qu'un cas unique.

Sinon je suis d'accord, ton code est correcte et permet un dynamisme, ce n'est juste pas la seule possibilité.

naga
0
gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 5
Modifié par gign44 le 18/09/2013 à 16:35
En effet,
Mais c'est dynamique et moins restrictif que t'es headers ;) les headers surchargent très vite une page, et ne sont pas le meilleur moyen pour faire passer des paramètres.
Vis a vis de sa base, une colonne en AI s'ajoute très simplement s'il n'en a pas. Chacun ses solutions, nous sommes là pour proposer, mais evite de critiquer injustement alors qu'on est tous là pour aider, libre à lui de choisir la solution qu'il trouvera la meilleure ;)

Cordialement
0
Utilisateur anonyme
18 sept. 2013 à 17:23
L'idée était sur de dire que les possibilités étaient nombreuses mais que les majeurs parties sont celles que j'ai cité :
dire :
echo "<a href=" . $page_a_rediriger . ">Lire la suite</a>";  

ne sous entend pas nécessairement que '$page_a_rediriger' est fixe ou qu'il n'accepte pas de paramètre, mais simplement qu'un appel se fera de cette manière.

Après, exploiter l'include lui permettrai, en couplant avec du js, d'afficher l'article dans la même page, simplement en masquant la fin du texte (ce qui évite des redirections toutes les 5 minutes) et en "poussant" le corp de la page pour afficher l'article complet.
Ensuite, le header permet en effet des redirection, mais aussi de manager certaines info de ton en-tête de page.

Les utilisations sont plutôt vaste, d'où l'idée de ne pas donner de codes complets : on sait en effet qu'il exploite une bdd mySQL, qu'il insère son article dans la Table news , cependant on ne sait pas s'il utilise un identifiant ...

de même, il peu utiliser des variables globale (tel que la session) pour s'informer entre chaques pages , etc.
enfin je pense que j'apprends rien, mais je vois mal comment ne pas donner de point de vue en donnant un code tout fait.

et
critiquer injustement 
la seule "critique" (que je ne juge pas en tant que tel mais c'est mon avis) est d'avoir donné un cas unique : chaque développeur à sa technique de developpement si on lui donne les choix qui lui sont possibles, et surtout il pourra par la suite comprendre les developpeurs qui ont des techniques différentes (un site qui génère des pages de manières dynamiques peu être fait de différentes manières) .

bne soirée/
naga
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
showMe9031 Messages postés 21 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 20 novembre 2015 1
18 sept. 2013 à 16:29
ok merci ;)

je vais voir pour les solutions de gign44 et de Tammera83.

encore merci !
0
gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 5
18 sept. 2013 à 16:38
Si t'as besoin d'aide hesite pas,

Bonne continuation ;)
0
showMe9031 Messages postés 21 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 20 novembre 2015 1
18 sept. 2013 à 20:40
ok Merci à tout le monde ! Probleme resolu !
0
gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 5
19 sept. 2013 à 09:00
passe ton post en résolu dans ce cas ;)
Cordialement
0