Créer un compte
Connexion

Faire page suivante

Pour créer et répondre aux sujets, vous devez être connecté.
Ce sujet est résolu.
Pages: 1
Auteur Message
guilstunt
01/01/2011 à 16:42:40
guilstunt
Membre
Bonjour, je suis nouveau ici

dans mon site j'ai une page de news, j'aimerai limité par exemple a 20 news par page donc la 21eme sera sur la page 2

Vous savez comment faire?

J'allais oublié BONNE FETE A TOUS!!!!

ybouane
01/01/2011 à 18:39:21
ybouane
Admin
Bonjour,
Bienvenue parmi nous :D
Peut-tu nous donner le code que tu utilise pour afficher tes news.

Cordialement :) et joyeux nouvel an à toi aussi.

Image
Lolo44
03/01/2011 à 18:49:30
Lolo44
Membre
Je pense qu'il les a dans sa base de donnée est qu'il les affiches ensuite sur une page news.php par exemple ... Si c'est ca je suis preneur du code aussi :clin:

Ah et c'est cool la checkbox "Notification par Email lors de nouveaux messages" du forum du SDW

guilstunt
01/01/2011 à 20:15:29
guilstunt
Membre
Voici le code pour afficher les news, je les ai limiter a 15 car je ne savais pas mettre plusieurs pages


<?php// Fonction pour construire une table à partir des résultat de la requête
function buildnewsTable {

 
 // Construire la requete
$query = "SELECT news,maj,date_format(maj,'%Y-%m-%d') lastmaj
FROM news  ORDER BY maj DESC LIMIT 0,15";

// Executer la requete
$result = mysql_query($query) or die('Erreur SQL !<br>'.$result.mysql_error());

$lines = '';

        $now = new DateTime(date('Y-m-d'));
               
while ($row = mysql_fetch_array($result)) {
        $lastmaj = new DateTime($row['lastmaj']);
       
               
        if( $row['lastmaj'] <= 7)$style = 'background-color:red';
else $style = 'background-color:#D8D9EF';
 
 
    $lines .= '
    <tr style="'.$style.'">
        <td>'.$row['maj'].'</td>
        <td>'.$row['news'].'</td>
       
    </tr>';
    }
    return '
<table border="3" cellpadding=5 cellspacing=5 height=50>
    <tr>
        <th style="background-color:#F63744; font-size:18px;"> Date </th>
        <th style="background-color:#F63744;width:400px;font-size:18px;"> Mise A Jour</th>
         
    </tr>'.$lines.'
</table>';
}

 //Construire le tableau à partir du résultat de la requête
    $table = buildnewsTable("");
 
    echo $table;
       
?>

Merci de votre aide!  :D

Lolo44
02/01/2011 à 11:06:45
Lolo44
Membre
J'ai trouvé une méthode , tu limite les news aux 5 dernières par exemple , et tu met un lien "voir les autres news" et la tu met le reste (ou alors les 10 dernières et tu continue comme ca ...)





guilstunt
02/01/2011 à 19:34:58
guilstunt
Membre
tu fais comment pour faire ça?

ybouane
03/01/2011 à 02:16:30
ybouane
Admin
Bonjour,
Voici le code à utiliser:
<?php
// Fonction pour construire une table à partir des résultat de la requête
function buildnewsTable {

$nb_msgs_page = 20;//Nombre de messages par page
$nb_messages =  mysql_fetch_array(mysql_query('select count(*) as nb from new'));
$nb_messages = $nb_messages['nb'];
$page = $_GET['page'];
$nb_pages = ceil($nb_messages/$nb_msgs_page);
$pages_code = 'Pages: ';
for($i=1;$i<=$nb_pages;$i++)
{
        if($i>1)
        {
                $pages_code .= ' - ';
        }
        $pages_code .= '<a href="?page='.$i.'">'.$i.'</a>';
}
$premier_message = ($page-1)*$nb_msgs_page;


 // Construire la requete
$query = "SELECT news,maj,date_format(maj,'%Y-%m-%d') lastmaj
FROM news  ORDER BY maj DESC LIMIT ".$premier_message.",".$nb_msgs_page;

// Executer la requete
$result = mysql_query($query) or die('Erreur SQL !<br>'.$result.mysql_error());

$lines = '';

        $now = new DateTime(date('Y-m-d'));
               
while ($row = mysql_fetch_array($result)) {
        $lastmaj = new DateTime($row['lastmaj']);
       
               
        if( $row['lastmaj'] <= 7)$style = 'background-color:red';
else $style = 'background-color:#D8D9EF';
 
 
    $lines .= '
    <tr style="'.$style.'">
        <td>'.$row['maj'].'</td>
        <td>'.$row['news'].'</td>
       
    </tr>';
    }
    return $pages_code.'
<table border="3" cellpadding=5 cellspacing=5 height=50>
    <tr>
        <th style="background-color:#F63744; font-size:18px;"> Date </th>
        <th style="background-color:#F63744;width:400px;font-size:18px;"> Mise A Jour</th>
         
    </tr>'.$lines.'
</table>'.$pages_code;
}

 //Construire le tableau à partir du résultat de la requête
    $table = buildnewsTable("");
 
    echo $table;
       
?>

Je n'ai pas essayé, mais ça devrait fonctionner.

Cordialement :)

Image
guilstunt
03/01/2011 à 09:56:20
guilstunt
Membre
Bonjour, maintenant j' ai ses erreurs:


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\essaie\accueil.php on line 64

Notice: Undefined index: page in C:\wamp\www\essaie\accueil.php on line 66
Erreur SQL !
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 '-10,10' at line 1

Lolo44
03/01/2011 à 18:48:57
Lolo44
Membre
Pour faire ca :<?php
        mysql_connect(DB_HOST,DB_LOGIN,DB_PASS); //identifiants mysql
        mysql_select_db(DB_BDD);
       
        $sql="SELECT * FROM news ORDER BY id DESC LIMIT 0,2;"; // 2 news pour la page d'accueil DESC=afficher les dernières news (les plus récentes ) en premier
        $req = mysql_query($sql) or die ('Erreur SQL ! <br> '.$sql.'<br>'.mysql_error());
        while($data=mysql_fetch_assoc($req)){
                echo "<div style=\"padding:10px;background:#000000;border:2px solid #grey;border-radius:21px;-moz-border-radius:21px;-webkit-border-radius:21px;\">
<center><font color=\"gold\"><img src=\"http://www.koopa-legends.legtux.org/02.png\" /><font size=\"5\" color=\"green\">~ </font><font size=\"5\">{$data["titre"]} <font color=\"green\">~ </font></font></font><img src=\"http://www.koopa-legends.legtux.org/01.png\" /></center> </div><br> ";
                echo "<em><u>Posté par:<b>{$data["auteur"]}</b>";
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Le:".date("j/n/Y G:i:s",strtotime($data["date"]))."</u></em>";
                echo "<br><br>{$data["contenu"]}<hr><br>";
               

        }
       
?>

Et dessous un lien : "acceder aux autres news" et sur cette autre pages de news : tu supprime LIMIT donc :<?php
        mysql_connect(DB_HOST,DB_LOGIN,DB_PASS); //identifiants mysql
        mysql_select_db(DB_BDD);
       
        $sql="SELECT * FROM news ORDER BY id DESC "; // 2 news pour la page d'accueil DESC=afficher les dernières news (les plus récentes ) en premier
        $req = mysql_query($sql) or die ('Erreur SQL ! <br> '.$sql.'<br>'.mysql_error());
        while($data=mysql_fetch_assoc($req)){
                echo "<div style=\"padding:10px;background:#000000;border:2px solid #grey;border-radius:21px;-moz-border-radius:21px;-webkit-border-radius:21px;\">
<center><font color=\"gold\"><img src=\"http://www.koopa-legends.legtux.org/02.png\" /><font size=\"5\" color=\"green\">~ </font><font size=\"5\">{$data["titre"]} <font color=\"green\">~ </font></font></font><img src=\"http://www.koopa-legends.legtux.org/01.png\" /></center> </div><br> ";
                echo "<em><u>Posté par:<b>{$data["auteur"]}</b>";
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Le:".date("j/n/Y G:i:s",strtotime($data["date"]))."</u></em>";
                echo "<br><br>{$data["contenu"]}<hr><br>";
               

        }
       
?>


J'ai laissé les balises de mise en forme de mon site ( tous les div et <font> ) mais tu peux les supprimer ...
Quelle est l'adresse de ton site ? Tu ne l'as pas mis dans ta signature....

ybouane
03/01/2011 à 19:23:33
ybouane
Admin
Bonjour,
@Lolo44: guilstunt veut un système de page toi ton code affiche toutes les news dans une seul page(et deux dans la page d'accueil).

@guilstunt peut-tu donner le code de la page d'accueil(accueil.php)

Cordialement :)

Image
guilstunt
03/01/2011 à 21:09:03
guilstunt
Membre
Voici toute ma page d'accueil.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

    <head>

        <title>jeux de role</title>

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

        <link rel="stylesheet" media="screen" type="text/css" title="combats" href="presentation.css" />



<?php include ("entete.php"); include("infos.php");

 date_default_timezone_set('Europe/Paris');

$date = date("d-m-Y");

$heure= date("H:i");

?>

 

  </head>

        <body><br

        <?php

include('menu.php');

if (isset($_SESSION['utilisateur']))

{

?>

<br>

<div id="corps">

<center>

<h2 style="color:black;background-color:#D8D9EF;border:3px double;width:auto;height: 40px; -moz-border-radius: 15px">Bonjour

<?php if(isset($_SESSION['utilisateur']))

{echo ' '.htmlentities($_SESSION['utilisateur']);}

 ?>,  <?php echo"Nous sommes le $date et il est $heure"?> <br /><br /></h2></center>



<center>

<?php
// Fonction pour construire une table à partir des résultat de la requête
function buildnewsTable ($where='') {

$nb_msgs_page = 10;//Nombre de messages par page
$nb_messages =  mysql_fetch_array(mysql_query('select count(*) as nb from new'));
$nb_messages = $nb_messages['nb'];
$page = $_GET['page'];
$nb_pages = ceil($nb_messages/$nb_msgs_page);
$pages_code = 'Pages: ';
for($i=1;$i<=$nb_pages;$i++)
{
        if($i>1)
        {
                $pages_code .= ' - ';
        }
        $pages_code .= '<a href="?page='.$i.'">'.$i.'</a>';
}
$premier_message = ($page-1)*$nb_msgs_page;


 // Construire la requete
$query = "SELECT news,maj,date_format(maj,'%Y-%m-%d') lastmaj
FROM news  ORDER BY maj DESC LIMIT ".$premier_message.",".$nb_msgs_page;

// Executer la requete
$result = mysql_query($query) or die('Erreur SQL !<br>'.$result.mysql_error());

$lines = '';

        $now = new DateTime(date('Y-m-d'));
               
while ($row = mysql_fetch_array($result)) {
        $lastmaj = new DateTime($row['lastmaj']);
       
               
        if( $row['lastmaj'] <= 7)$style = 'background-color:red';
else $style = 'background-color:#D8D9EF';
 
 
    $lines .= '
    <tr style="'.$style.'">
        <td>'.$row['maj'].'</td>
        <td>'.$row['news'].'</td>
       
    </tr>';
    }
    return $pages_code.'
<table border="3" cellpadding=5 cellspacing=5 height=50>
    <tr>
        <th style="background-color:#F63744; font-size:18px;"> Date </th>
        <th style="background-color:#F63744;width:400px;font-size:18px;"> Mise A Jour</th>
         
    </tr>'.$lines.'
</table>'.$pages_code;
}

 //Construire le tableau à partir du résultat de la requête
    $table = buildnewsTable("");
 
    echo $table;
       
?>


</center>



        </div><? }

        else

{

?>







<center>

La connection est obligatoire pour acceder à cette page.<br />

<a href="connection.php">se connecter</a>

</center>

<?php



}



?></body>

</html>



 


ybouane
03/01/2011 à 22:01:08
ybouane
Admin
Bonjour,
Le problème, c'est que j'ai oublié un "s" dans news, voici le code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

    <head>

        <title>jeux de role</title>

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

        <link rel="stylesheet" media="screen" type="text/css" title="combats" href="presentation.css" />



<?php include ("entete.php"); include("infos.php");

 date_default_timezone_set('Europe/Paris');

$date = date("d-m-Y");

$heure= date("H:i");

?>

 

  </head>

        <body><br

        <?php

include('menu.php');

if (isset($_SESSION['utilisateur']))

{

?>

<br>

<div id="corps">

<center>

<h2 style="color:black;background-color:#D8D9EF;border:3px double;width:auto;height: 40px; -moz-border-radius: 15px">Bonjour

<?php if(isset($_SESSION['utilisateur']))

{echo ' '.htmlentities($_SESSION['utilisateur']);}

 ?>,  <?php echo"Nous sommes le $date et il est $heure"?> <br /><br /></h2></center>



<center>

<?php
// Fonction pour construire une table à partir des résultat de la requête
function buildnewsTable ($where='') {

$nb_msgs_page = 10;//Nombre de messages par page
$nb_messages =  mysql_fetch_array(mysql_query('select count(*) as nb from news'));
$nb_messages = $nb_messages['nb'];
$page = $_GET['page'];
$nb_pages = ceil($nb_messages/$nb_msgs_page);
$pages_code = 'Pages: ';
for($i=1;$i<=$nb_pages;$i++)
{
        if($i>1)
        {
                $pages_code .= ' - ';
        }
        $pages_code .= '<a href="?page='.$i.'">'.$i.'</a>';
}
$premier_message = ($page-1)*$nb_msgs_page;


 // Construire la requete
$query = "SELECT news,maj,date_format(maj,'%Y-%m-%d') lastmaj
FROM news  ORDER BY maj DESC LIMIT ".$premier_message.",".$nb_msgs_page;

// Executer la requete
$result = mysql_query($query) or die('Erreur SQL !<br>'.$result.mysql_error());

$lines = '';

        $now = new DateTime(date('Y-m-d'));
               
while ($row = mysql_fetch_array($result)) {
        $lastmaj = new DateTime($row['lastmaj']);
       
               
        if( $row['lastmaj'] <= 7)$style = 'background-color:red';
else $style = 'background-color:#D8D9EF';
 
 
    $lines .= '
    <tr style="'.$style.'">
        <td>'.$row['maj'].'</td>
        <td>'.$row['news'].'</td>
       
    </tr>';
    }
    return $pages_code.'
<table border="3" cellpadding=5 cellspacing=5 height=50>
    <tr>
        <th style="background-color:#F63744; font-size:18px;"> Date </th>
        <th style="background-color:#F63744;width:400px;font-size:18px;"> Mise A Jour</th>
         
    </tr>'.$lines.'
</table>'.$pages_code;
}

 //Construire le tableau à partir du résultat de la requête
    $table = buildnewsTable("");
 
    echo $table;
       
?>


</center>



        </div><? }

        else

{

?>







<center>

La connection est obligatoire pour acceder à cette page.<br />

<a href="connection.php">se connecter</a>

</center>

<?php



}



?></body>

</html>
 

Cordialement :)

Image
guilstunt
04/01/2011 à 08:21:24
guilstunt
Membre
Bonjour, maintenant j'ai cette erreur:


Notice: Undefined index: page in C:\wamp\www\essaie\accueil.php on line 66
Erreur SQL !
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 '-10,10' at line 1

Lolo44
04/01/2011 à 17:53:44
Lolo44
Membre
@Ybouane , moi j'utilise deux pages (index.php et news.php) mais il peut en faire autant qu'il veut mais ca ne sera pas automatique ...

ybouane
05/01/2011 à 02:31:00
ybouane
Admin
Bonjour,
essaye:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

    <head>

        <title>jeux de role</title>

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

        <link rel="stylesheet" media="screen" type="text/css" title="combats" href="presentation.css" />



<?php include ("entete.php"); include("infos.php");

 date_default_timezone_set('Europe/Paris');

$date = date("d-m-Y");

$heure= date("H:i");

?>

 

  </head>

        <body><br

        <?php

include('menu.php');

if (isset($_SESSION['utilisateur']))

{

?>

<br>

<div id="corps">

<center>

<h2 style="color:black;background-color:#D8D9EF;border:3px double;width:auto;height: 40px; -moz-border-radius: 15px">Bonjour

<?php if(isset($_SESSION['utilisateur']))

{echo ' '.htmlentities($_SESSION['utilisateur']);}

 ?>,  <?php echo"Nous sommes le $date et il est $heure"?> <br /><br /></h2></center>



<center>

<?php
// Fonction pour construire une table à partir des résultat de la requête
function buildnewsTable ($where='') {

$nb_msgs_page = 10;//Nombre de messages par page
$nb_messages =  mysql_fetch_array(mysql_query('select count(*) as nb from news'));
$nb_messages = $nb_messages['nb'];
if(isset($_GET['page']))
{
        $page = $_GET['page'];
}
else
{
        $page=1;
}
$nb_pages = ceil($nb_messages/$nb_msgs_page);
$pages_code = 'Pages: ';
for($i=1;$i<=$nb_pages;$i++)
{
        if($i>1)
        {
                $pages_code .= ' - ';
        }
        $pages_code .= '<a href="?page='.$i.'">'.$i.'</a>';
}
$premier_message = ($page-1)*$nb_msgs_page;


 // Construire la requete
$query = "SELECT news,maj,date_format(maj,'%Y-%m-%d') lastmaj
FROM news  ORDER BY maj DESC LIMIT ".$premier_message.",".$nb_msgs_page;

// Executer la requete
$result = mysql_query($query) or die('Erreur SQL !<br>'.$result.mysql_error());

$lines = '';

        $now = new DateTime(date('Y-m-d'));
               
while ($row = mysql_fetch_array($result)) {
        $lastmaj = new DateTime($row['lastmaj']);
       
               
        if( $row['lastmaj'] <= 7)$style = 'background-color:red';
else $style = 'background-color:#D8D9EF';
 
 
    $lines .= '
    <tr style="'.$style.'">
        <td>'.$row['maj'].'</td>
        <td>'.$row['news'].'</td>
       
    </tr>';
    }
    return $pages_code.'
<table border="3" cellpadding=5 cellspacing=5 height=50>
    <tr>
        <th style="background-color:#F63744; font-size:18px;"> Date </th>
        <th style="background-color:#F63744;width:400px;font-size:18px;"> Mise A Jour</th>
         
    </tr>'.$lines.'
</table>'.$pages_code;
}

 //Construire le tableau à partir du résultat de la requête
    $table = buildnewsTable("");
 
    echo $table;
       
?>


</center>



        </div><? }

        else

{

?>







<center>

La connection est obligatoire pour acceder à cette page.<br />

<a href="connection.php">se connecter</a>

</center>

<?php



}



?></body>

</html>

cordialement :)

Image
guilstunt
05/01/2011 à 08:51:05
guilstunt
Membre
Merci c'est exactement ca que je voulais!!!!

Merci Ybouane  :#1:

Pages: 1