8792 sujets

Développement web côté serveur, CMS

Bonjour tout le monde, voila je me pose une question et je n'arrive pas a trouver la réponse ... Un truc qui me parait simple ( enfin je n'y avait pas penser ). Donc voila : Je commence à creer un petit site ... Et j'ai mit dedans un script de news, fait par moi même.. Je met une "desc limit" pour ne pas encombrer mes pages mais ... car forcement il y a un mais .. Je voudrais qu'un lien du style page suivante soit creer et bien sur automatiser.. Je pourrais ajouter uen page Toute_News.php ou le lien serai en bas de chaque news ou en abs de la page.. Aucune limite d'affichage sur le toute_News.php mais je trouve pas ca tres joli .. Donc ma question si personne n'a suivit est :

Comment faire en sorte qu'apres le post de plusieur news, un autre page se creer mettant le lien en bas de page des news : page suivante ou tout simplement des numeros ..
Voila j'espere avoir ete clair.. Ce que je doute quand même, mais la question n'est pas facil a formuler !

Mon site : http://underground-psp.ifrance.com Smiley confused

Edit : En fait tout simplement un systeme de pagination !!

Voila mon code de news.php ( il est iclus dans ma page index ):



<h3>News</h3>
<?php
mysql_connect("SQL", "rOOt", "MDP");
mysql_select_db("BDD");


$retour = mysql_query('SELECT * FROM News ORDER BY id_News DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>


    <h4>
        <?php echo $donnees['titre_News']; ?>
        <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp_News']); ?></em>
    </h4>
      
	<p>
    <?php
    
    $contenu = nl2br(stripslashes($donnees['contenu_News']));
    echo $contenu;
    ?>
    </p>
</style>
<?php
} 
?>

</body>
</html>


voila je ne sais pas trop quoi rajouter pour la pagination ...
Modifié par immat (25 Oct 2006 - 12:08)
Je ne comprends pas ton probleme....

Bon si j'ai bien compris tu veux ça :
-Chaque news doit avoir un lien suivant ou précédent pointant vers une news plus récente ou plus ancienne.
-mais évidemment tu ne veux pas de lien suivant sur la derniere news que tu as posté.

Question : Comment sont gérer tes news? (fichier statiques? Base de données? fichier texte récupéré en php?)
alors en faite je voudrais un system de pagination... Je vais tenter de bien m'expliquer. Tout d'abord j'ai une page index.php ou il y a une include. Cette include appel le code d'affichage de news qui est news.php ( Je ne pense pas que cela soit bien important. Bref je continu, dans mon code de news.php, j'ai defini une limite. Ainsi sur une page, il ne s'affiche que 5 news. Et je voudrais simplement que les 5 prochaine et encore les 5 prochaine ainsi de suite soit sur une autre page.

Pour recapituler, creer une page toute les 5 news ou la page deux afficherai la 6ieme juska la 10ieme ect .... J'espere vous m'avez compris cettef ois ci Smiley smile
Salut immat Smiley cligne ,

Tu pourrais utiliser une variable (passée en GET) qui sauvegarderait ton positionnement. Par exemple :
href="page=news&limit=1"
...
ORDER BY id_News DESC LIMIT 1, 5


href="page=news&limit=6"
...
ORDER BY id_News DESC LIMIT 6, 11

etc...
Les limites hautes et basses étant recalculées à chaque fois.

@+
En fait j'ai bien en script qui me semble parfait.. Mais je ne sait pas trop comment l'adapter alors je vous mets gentilment le code Smiley cligne

Mais ca me fait progresser vos réponses a chaque fois je vous en remerci
Smiley smile )

Donc voila tout les code qui servent:

Le premier est le code news.php ( inclus dans l'index.php )




<?php
mysql_connect("SQL", "rOOt", "MDP");
mysql_select_db("BDD");


$retour = mysql_query('SELECT * FROM News ORDER BY id_News DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>


    <h4>
        <?php echo $donnees['titre_News']; ?>
        <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp_News']); ?></em>
    </h4>
      
	<p>
    <?php
     (<br />)
    $contenu = nl2br(stripslashes($donnees['contenu_News']));
    echo $contenu;
    ?>
    </p>
</style>
<?php
} 
?>

</body>
</html>


Puis le code qui av creer la pagination mais que je n'arrive pas a adapter pour mon site :

// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)

// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
$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="livreor.php?page=' . $i . '">' . $i . '</a> ';
}

?>

</p>

<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

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)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_fetch_array($reponse))
{
    echo '<p><gras>' . $donnees['pseudo'] . '</gras> a écrit :<br />' . $donnees['message'] . '</p>';
}

mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>

</body>
</html>


Voila tout ca !!

Mes source sont le site du zero.. le code que je vous ai mit en deuxieme position est baser sur la pagination d'un livre d'or pour afficher des message par page ...

Je vous met le cour si ca peut vous aider a le comprendre mieu que moi et peut être arriverez vous a m'aider a l'adapter a mon bout de code de news.php

Voila le lien direct au cours : http://www.siteduzero.com/tuto-3-188-1-tp-un-livre-d-or.html
Euh mais du coup c'est quoi ta question Smiley rolleyes ?

Le script me semble plutôt clair et dans ton cas il suffit de remplacer :
$nombreDeMessagesParPage = 20;
[b]par[/b]
$nombreDeNewsParPage = 5;
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
[b]par[/b]
$retour = mysql_query('SELECT COUNT(*) AS nb_news FROM News');
$totalDesMessages = $donnees['nb_messages'];
[b]par[/b]
$totalDesNews = $donnees['nb_news'];
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
[b]par[/b]
$nombreDePages  = ceil($totalDesNews / $nombreDeNewsParPage);
echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
[b]par[/b]
echo '<a href="kernel.php?page=news&limit=' . $i . '">' . $i . '</a> ';
$page
[b]par[/b]
$limit
$_GET['page']
[b]par[/b]
$_GET['limit']
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
[b]par[/b]
$premiereNewsAafficher = ($page - 1) * $nombreDeNewsParPage;
$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
[b]par[/b]
$reponse = mysql_query('SELECT * FROM News ORDER BY id DESC LIMIT ' . $premiereNewsAafficher . ', ' . $nombreDeNewsParPage);
echo '<p><gras>' . $donnees['pseudo'] . '</gras> a écrit :<br />' . $donnees['message'] . '</p>';
[b]par[/b]
echo ("<h4>".$donnees['titre_News']."<em>le ".date('d/m/Y à H\hi', $donnees['timestamp_News'])."</em></h4><p><br />");
$contenu = nl2br(stripslashes($donnees['contenu_News']));
echo $contenu."</p>";

Je n'ai pas testé mais à peu de choses près ça doit passer Smiley cligne

@+
Pfioou je galere ... Voila le bout de code que je n'arrete pas de modifier et ca me donne des choses un peu bizard ...

<h3>News</h3>
<?php
mysql_connect("SQL", "rOOt", "MDP");
mysql_select_db("BDD");
?>



    <h4>
        <?php echo $donnees['titre_News']; ?>
        <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp_News']); ?></em>
    </h4>
      
	<p>
    <?php
    // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
    $contenu = nl2br(stripslashes($donnees['contenu_News']));
    echo $contenu;
    ?>
<?php
$nombreDeNewsParPage = 5; 


$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM News');
$donnees = mysql_fetch_array($retour);
$totalDesNews = $donnees['nb_messages'];

// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesNews / $nombreDeNewsParPage);

// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="kernel.php?page=' . $i . '">' . $i . '</a> ';
}

?>


Pour te repondre Heyoan, ma vrai question est :
Comment faire en sorte que toutes mes news ne soit pas sur une seule page, mais que toute les 5 news, une nouvelle soit creer... Voila

Pour le résultat ( pas fameux ) voila le lien : http://underground-psp.ifrance.com

Categories news forcement Smiley smile

Merci !!
Modifié par immat (25 Oct 2006 - 00:28)
Je sais pas si c'est autoriser ou non de mettre des URL d'autre site web, mais peut-etre que ce lien va t'aider Smiley cligne

Il est temps de passer à autre chose que le site du zero Smiley cligne

Et pour ton site, on ne dis pas "acceuil" mais "accueil" Smiley biggrin
Modifié par chpego (25 Oct 2006 - 01:27)
Salut immat,

Essayes ça :
<h3>news</h3>
<p>
<?php
// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDenewsParPage = 5; // Essayez de changer ce nombre pour voir :o)

// Connexion à la base
mysql_connect("SQL", "rOOt", "MDP");
mysql_select_db("BDD");

// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_News FROM `news`');
$donnees = mysql_fetch_array($retour);
$totalDesnews = $donnees['nb_News'];

// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesnews / $nombreDenewsParPage);

// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="kernel.php?page=news&limit=' . $i . '">' . $i . '</a> ';
}
?>
</p>
<?php
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['limit']))
{
    $limit = $_GET['limit']; // 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
{
    $limit = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierenewsAafficher = ($limit - 1) * $nombreDenewsParPage;

$reponse = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT ' . $premierenewsAafficher . ', ' . $nombreDenewsParPage);
while ($donnees = mysql_fetch_array($reponse))
{
   echo ("<h4>".$donnees['titre_News']."<em> le ".date('d/m/Y à H\hi', $donnees['timestamp_News'])."</em></h4><p>");

$contenu = nl2br(stripslashes($donnees['contenu_News']));

echo $contenu."</p><br />";
}

// Déconnexion
mysql_close();
?>


@+ Smiley cligne
Modifié par Heyoan (25 Oct 2006 - 01:40)
Heyoan tu est au top Smiley smile !!! C'est exactement ce que je voulait.... Smiley smile

Je suis plonger dans le code pour le comprendre ... Vraiment c'est parfait.
Merci beaucoup... Tout marche nickel Smiley biggrin