par
lakawet » 12 sept. 2008, 12:29
bonjour,
Voila mon petit souci, j'ai créer une pagination en limitant à 18 enregistrement par page ( c'est un petit soft de compta ). le probleme c'est que les totos de chaque enregistrement sont calculés et stockés dans un tableau (array).
Mais comment faire pour que le array stop l'affichage à 18 enregistrements à la premiere page et que lorsque je passe à la page 2 ou 3 ou 4.... le pointeur du tableau commence bien en ajoutant bien les 18 à c haque fois page 1 = 18, page 2 = 36, page 3 = 54 etc...
je vous met mon code :
Code : Tout sélectionner
<?php
$p=$_GET['p'];
/* Appel du fichier contenant la fonction pagination() */
include('paginate.php');
/* Connexion à la BDD (se place normalement dans un fichier externe) */
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'intracompta');
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$dbc)
{
trigger_error('Connexion à la BDD impossible : ' . mysqli_connect_error() );
exit();
}
/* Calcul du nombre total d'entrées $total dans la table posts */
$res = mysqli_query($dbc, 'SELECT COUNT(*) FROM compte');
$row = mysqli_fetch_row($res);
$total = $row[0];
/* Libération du résultat */
mysqli_free_result($res);
/* Déclaration des variables */
$epp = 18; // nombre d'entrées à afficher par page (entries per page)
$countp = ceil($total/$epp); // calcul du nombre de pages $countp (on arrondit à l'entier supérieur avec la fonction ceil() )
/* Récupération du numéro de la page courante depuis l'URL avec la méthode GET */
if(!isset($_GET['p']) || !is_numeric($_GET['p']) ) // si $_GET['p'] n'existe pas OU $_GET['p'] n'est pas un nombre (petite sécurité supplémentaire)
$current = 1; // la page courante devient 1
else
{
$page = intval($_GET['p']); // stockage de la valeur entière uniquement
if ($page < 1) $current=1; // cas où le numéro de page est inférieure 1 : on affecte 1 à la page courante
elseif ($page > $countp) $current=$countp; //cas où le numéro de page est supérieur au nombre total de pages : on affecte le numéro de la dernière page à la page courante
else $current=$page; // sinon la page courante est bien celle indiquée dans l'URL
}
/* $start est la valeur de départ du LIMIT dans notre requête SQL (est fonction de la page courante) */
$start = ($current * $epp - $epp);
/* Récupération des données à afficher pour la page courante */
$qry = "SELECT * FROM compte ORDER BY id DESC LIMIT $start, $epp";
$res = @mysqli_query($dbc, $qry);
$toto = 2507.85;
if ($res)
{
/* Affichage des données */
echo '<table width="100%" border="0" cellpadding="0" cellspacing="3">';
while($item = mysqli_fetch_array($res)) {
$encaisse = $item['encaisse'];
$id = $item['id'];
$id2 = $id+1;
$credit =$item['credit'];
$debit =$item['debit'];
$info = $item['info'];
$qry2 = "SELECT * FROM compte WHERE id=$id2 ORDER BY id DESC LIMIT $start, $epp";
$res2 = @mysqli_query($dbc, $qry2);
while($item2 = mysqli_fetch_array($res2)) {
$credit2 =$item2['credit'];
$debit2 =$item2['debit'];
if ( $debit2 != 0.00 )
{
$toto = $toto+$debit2;
}
else {
$toto = $toto-$credit2;
}
$tab_toto = array($toto);
}
echo '<tr bgcolor="#CCCCCC">';
echo '<td width="17%" align="left" valign="middle"><span class="Style8">'.substr($item['date'],8,2)."-".substr($item['date'],5,2)."-".substr($item['date'],0,4).'</span><br></td>';
echo '<td width="25%" align="left" valign="middle"><span class="Style8">'.$item['emetteur'].'</span><br></td>';
if ( $encaisse == 0 )
{
echo '<td width="10%" align="center" valign="middle"><span class="Style17">';if ( $credit != 0.00 ) { echo''.$item['credit'].''; }echo'</span><br></td>';
}
else {
echo '<td width="10%" align="center" valign="middle"><span class="Style18">';if ( $credit != 0.00 ) { echo''.$item['credit'].''; }echo'</span><br></td>';
}
if ( $encaisse == 0 )
{
echo '<td width="10%" align="center" valign="middle"><span class="Style17">';if ( $debit != 0.00 ) { echo''.$item['debit'].''; }echo'</span><br></td>';
}
else {
echo '<td width="10%" align="center" valign="middle"><span class="Style18">';if ( $debit != 0.00 ) { echo''.$item['debit'].''; }echo'</span><br></td>';
}
echo '<td width="18%" align="center" valign="middle"><span class="Style8">'.$tab_toto['0'].'</span><br></td>';
if ( $encaisse == 0 )
{
echo'<td align="center" valign="middle"><span class="Style17"><a href="encaisse.php?encaisse=1&id='.$id.'"><img src="images/euro.gif" width="14" height="18" alt="encaisser" border="0"/></a> - '; if ( $info!=NULL ) { echo'<A href="#"><img src="images/info.gif" width="18" height="18" alt="'.$info.'" border="0"/></a> - '; } echo'<a href="modifier.php?id='.$id.'&p='.$p.'"><img src="images/modif.gif" width="18" height="18" alt="modifier" border="0"/></a></span><br></td></tr>';
}
else{
echo'<td align="center" valign="middle"><span class="Style17">'; if ( $info!=NULL ) { echo'<A href="#"><img src="images/info.gif" width="18" height="18" alt="'.$info.'" border="0"/></a> -'; } echo'<a href="modifier.php?id='.$id.'&p='.$p.'"><img src="images/modif.gif" width="18" height="18" alt="modifier" border="0"/></a></span><br></td></tr>';
}
echo'</tr>';
}
echo '</table>';
/* Libération du résultat */
mysqli_free_result($res);
}
else echo mysqli_error($dbc);
echo paginate($_SERVER['PHP_SELF'], '?p=', $countp, $current);
?>
merci pour votre aide

bonjour,
Voila mon petit souci, j'ai créer une pagination en limitant à 18 enregistrement par page ( c'est un petit soft de compta ). le probleme c'est que les totos de chaque enregistrement sont calculés et stockés dans un tableau (array).
Mais comment faire pour que le array stop l'affichage à 18 enregistrements à la premiere page et que lorsque je passe à la page 2 ou 3 ou 4.... le pointeur du tableau commence bien en ajoutant bien les 18 à c haque fois page 1 = 18, page 2 = 36, page 3 = 54 etc...
je vous met mon code :
[code]<?php
$p=$_GET['p'];
/* Appel du fichier contenant la fonction pagination() */
include('paginate.php');
/* Connexion à la BDD (se place normalement dans un fichier externe) */
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'intracompta');
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$dbc)
{
trigger_error('Connexion à la BDD impossible : ' . mysqli_connect_error() );
exit();
}
/* Calcul du nombre total d'entrées $total dans la table posts */
$res = mysqli_query($dbc, 'SELECT COUNT(*) FROM compte');
$row = mysqli_fetch_row($res);
$total = $row[0];
/* Libération du résultat */
mysqli_free_result($res);
/* Déclaration des variables */
$epp = 18; // nombre d'entrées à afficher par page (entries per page)
$countp = ceil($total/$epp); // calcul du nombre de pages $countp (on arrondit à l'entier supérieur avec la fonction ceil() )
/* Récupération du numéro de la page courante depuis l'URL avec la méthode GET */
if(!isset($_GET['p']) || !is_numeric($_GET['p']) ) // si $_GET['p'] n'existe pas OU $_GET['p'] n'est pas un nombre (petite sécurité supplémentaire)
$current = 1; // la page courante devient 1
else
{
$page = intval($_GET['p']); // stockage de la valeur entière uniquement
if ($page < 1) $current=1; // cas où le numéro de page est inférieure 1 : on affecte 1 à la page courante
elseif ($page > $countp) $current=$countp; //cas où le numéro de page est supérieur au nombre total de pages : on affecte le numéro de la dernière page à la page courante
else $current=$page; // sinon la page courante est bien celle indiquée dans l'URL
}
/* $start est la valeur de départ du LIMIT dans notre requête SQL (est fonction de la page courante) */
$start = ($current * $epp - $epp);
/* Récupération des données à afficher pour la page courante */
$qry = "SELECT * FROM compte ORDER BY id DESC LIMIT $start, $epp";
$res = @mysqli_query($dbc, $qry);
$toto = 2507.85;
if ($res)
{
/* Affichage des données */
echo '<table width="100%" border="0" cellpadding="0" cellspacing="3">';
while($item = mysqli_fetch_array($res)) {
$encaisse = $item['encaisse'];
$id = $item['id'];
$id2 = $id+1;
$credit =$item['credit'];
$debit =$item['debit'];
$info = $item['info'];
$qry2 = "SELECT * FROM compte WHERE id=$id2 ORDER BY id DESC LIMIT $start, $epp";
$res2 = @mysqli_query($dbc, $qry2);
while($item2 = mysqli_fetch_array($res2)) {
$credit2 =$item2['credit'];
$debit2 =$item2['debit'];
if ( $debit2 != 0.00 )
{
$toto = $toto+$debit2;
}
else {
$toto = $toto-$credit2;
}
$tab_toto = array($toto);
}
echo '<tr bgcolor="#CCCCCC">';
echo '<td width="17%" align="left" valign="middle"><span class="Style8">'.substr($item['date'],8,2)."-".substr($item['date'],5,2)."-".substr($item['date'],0,4).'</span><br></td>';
echo '<td width="25%" align="left" valign="middle"><span class="Style8">'.$item['emetteur'].'</span><br></td>';
if ( $encaisse == 0 )
{
echo '<td width="10%" align="center" valign="middle"><span class="Style17">';if ( $credit != 0.00 ) { echo''.$item['credit'].''; }echo'</span><br></td>';
}
else {
echo '<td width="10%" align="center" valign="middle"><span class="Style18">';if ( $credit != 0.00 ) { echo''.$item['credit'].''; }echo'</span><br></td>';
}
if ( $encaisse == 0 )
{
echo '<td width="10%" align="center" valign="middle"><span class="Style17">';if ( $debit != 0.00 ) { echo''.$item['debit'].''; }echo'</span><br></td>';
}
else {
echo '<td width="10%" align="center" valign="middle"><span class="Style18">';if ( $debit != 0.00 ) { echo''.$item['debit'].''; }echo'</span><br></td>';
}
echo '<td width="18%" align="center" valign="middle"><span class="Style8">'.$tab_toto['0'].'</span><br></td>';
if ( $encaisse == 0 )
{
echo'<td align="center" valign="middle"><span class="Style17"><a href="encaisse.php?encaisse=1&id='.$id.'"><img src="images/euro.gif" width="14" height="18" alt="encaisser" border="0"/></a> - '; if ( $info!=NULL ) { echo'<A href="#"><img src="images/info.gif" width="18" height="18" alt="'.$info.'" border="0"/></a> - '; } echo'<a href="modifier.php?id='.$id.'&p='.$p.'"><img src="images/modif.gif" width="18" height="18" alt="modifier" border="0"/></a></span><br></td></tr>';
}
else{
echo'<td align="center" valign="middle"><span class="Style17">'; if ( $info!=NULL ) { echo'<A href="#"><img src="images/info.gif" width="18" height="18" alt="'.$info.'" border="0"/></a> -'; } echo'<a href="modifier.php?id='.$id.'&p='.$p.'"><img src="images/modif.gif" width="18" height="18" alt="modifier" border="0"/></a></span><br></td></tr>';
}
echo'</tr>';
}
echo '</table>';
/* Libération du résultat */
mysqli_free_result($res);
}
else echo mysqli_error($dbc);
echo paginate($_SERVER['PHP_SELF'], '?p=', $countp, $current);
?>[/code]
merci pour votre aide :)