<?php

// ------------------------------------------------------------------------- //
// Afficher les données d'une table ou d'une requête par pages.              //
// ------------------------------------------------------------------------- //
// Auteur: J-Pierre DEZELUS                                                  //
// Email:  jpdezelus@phpinfo.net                                             //
// Web:    http://www.phpinfo.net/                                           //
// ------------------------------------------------------------------------- //

?>

<HTML>
<HEAD>
<TITLE> phpInfo.net </TITLE>
<STYLE>
BODY { font-family: Arial; font-size: 13px; color: #1C2D67 }
TD   { font-family: Arial; font-size: 13px; color: #1C2D67 }

A         {font-family:Arial;font-size:13px;color:#003FFF;text-decoration:none}
A:link    {font-family:Arial;font-size:13px;color:#003FFF;font-weight:bold}
A:visited {font-family:Arial;font-size:13px;color:#003FFF;font-weight:bold}
A:hover   {font-family:Arial;font-size:13px;color:#003FFF;font-weight:bold}

A.off     {font-family:Arial;font-size:13px;color:#C0D780;font-weight:bold}
</STYLE>
</HEAD>

<BODY BGCOLOR="#9DAEE8">

<?php

// ------------------------------------------------------------------------
    
$cfgHote = 'localhost';
    
$cfgBase = 'ma_base';
    
$cfgUser = 'mon_user';
    
$cfgPass = 'mon_pw';
// ------------------------------------------------------------------------
    
$nom_table = 'livredor';
    
$champs    = 'nom, commentaire, DATE_FORMAT(date, "%d/%m %H:%i") AS d, email';
// ------------------------------------------------------------------------
    
$cfg_nbres_ppage = 10; // Nombre de réponses par page
    
$cfg_nb_pages    = 10; // Nombre de n° de pages affichés dans la barre
// ------------------------------------------------------------------------

mysql_connect($cfgHote, $cfgUser, $cfgPass);

// on regarde si il faut rechercher des mots clés
$mots = str_replace('%', '', $mots);
$mots = str_replace('_', '', $mots);
$mots = trim($mots);
if (
$mots != '')
{
   
$where  = " WHERE nom LIKE '%".addslashes($mots)."%' OR ";
   
$where .= "commentaire LIKE '%".addslashes($mots)."%'";
   
$criteres = "?mots=".urlencode($mots);
}
else
{
    
$where = '';
   
$criteres = "?";
}

// Recherche du nombre de lignes
$sql  = 'SELECT count(*) ';
$sql .= 'FROM '.$nom_table;
$sql .= $where;

$resultat = mysql_db_query($cfgBase, $sql);
$enr = mysql_fetch_array($resultat);

if ((
$nbtotal = $enr[0]) == 0)
{
    echo
'Aucune réponse trouvée';
}
else
{
    if (!isset(
$debut)) $debut = 0;
    
    
// recherche des réponses
    
$sql  = 'SELECT '.$champs.' ';
    
$sql .= 'FROM '.$nom_table.' ';
    
$sql .= $where;
    
$sql .= ' ORDER BY code DESC';
    
$sql .= ' LIMIT '.$debut.','.$cfg_nbres_ppage;

    
$resultat = mysql_db_query($cfgBase, $sql);
    
$nbenr = mysql_num_rows($resultat);

    
// plage de réponses
    
$barre_nav  = '<TABLE BORDER=0 WIDTH="100%" CELLPADDING=3 CELLSPACING=1>';
    
$barre_nav .= '<TR><TD BGCOLOR=#DCDCDC WIDTH="40%" ALIGN="left">';
    
$barre_nav .= 'Réponses <B>'.($debut + 1).'</B> à <B>'.($debut + $nbenr).'</B>';
    
$barre_nav .= ' sur <B>'.($nbtotal).'</B></TD>';
    
    
// barre de navigation
    
$barre_nav .= "<TD  BGCOLOR=#FCFDDF ALIGN='left' WIDTH='60%'>&nbsp;";
    if (
$nbtotal > $cfg_nbres_ppage)
    {
        
$barre_nav .= barre_navigation($nbtotal, $nbenr,
                                       
$cfg_nbres_ppage,
                                       
$debut, $cfg_nb_pages,
                                       
$criteres);
    }
    
$barre_nav .= "</TD></TR></TABLE>\n";

    
// affichage de la barre de navigation
    
echo $barre_nav;

    
// affichage des données
    
$cpt = 0;
    echo
"<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=1 WIDTH='100%'>";
    while (
$enr = mysql_fetch_array($resultat))
    {
        echo
afficher_ligne($debut + $cpt + 1, $enr);
        
$cpt++;
    }
    echo
"</TABLE>\n";

    
// 2ème barre après les résultats si nécessaire
    
if ($nbtotal > $cfg_nbres_ppage && $cpt > ($cfg_nbres_ppage / 2))
    {
        echo
$barre_nav;
    }
}

// Zone de recherche
echo "<FORM METHOD=GET>\n";
echo
"<B>Rechercher</B>&nbsp;&nbsp;";
$mots = stripslashes(htmlspecialchars($mots));
echo
"<INPUT TYPE='text' NAME='mots' VALUE=\"".$mots."\">";
echo
"&nbsp;&nbsp;<INPUT TYPE='submit' VALUE='Go !'>";
echo
"</FORM>\n";

// ------------------------------------------------------------------------
// barre_navigation
// ------------------------------------------------------------------------
function barre_navigation($nbtotal,
                          
$nbenr,
                          
$cfg_nbres_ppage,
                          
$debut, $cfg_nb_pages,
                          
$criteres)
{
    
// --------------------------------------------------------------------
       
$cfg_nb_pages    = 10; // Nb de n° de pages affichées dans la barre
       
$lien_on         = '&nbsp;<A HREF="{cible}">{lien}</A>&nbsp;';
       
$lien_off        = '&nbsp;{lien}&nbsp;';
    
// --------------------------------------------------------------------
    
    
$query  = $criteres.'&debut=';

    
// début << .
    // --------------------------------------------------------------------
    
if ($debut >= $cfg_nbres_ppage)
    {
        
$cible = $query.(0);
        
$image = image_html('images/gauche_on.gif');
        
$lien = str_replace('{lien}', $image.$image, $lien_on);
        
$lien = str_replace('{cible}', $cible, $lien);
    }
    else
    {
        
$image = image_html('images/gauche_off.gif');
        
$lien = str_replace('{lien}', $image.$image, $lien_off);
    }
    
$barre .= $lien."&nbsp;<B>&middot;</B>";


    
// précédent < .
    // --------------------------------------------------------------------
    
if ($debut >= $cfg_nbres_ppage)
    {
        
$cible = $query.($debut-$cfg_nbres_ppage);
        
$image = image_html('images/gauche_on.gif');
        
$lien = str_replace('{lien}', $image, $lien_on);
        
$lien = str_replace('{cible}', $cible, $lien);
    }
    else
    {
        
$image = image_html('images/gauche_off.gif');
        
$lien = str_replace('{lien}', $image, $lien_off);
    }
    
$barre .= $lien."&nbsp;<B>&middot;</B>";
    

    
// pages 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10
    // -------------------------------------------------------------------

    
if ($debut >= ($cfg_nb_pages * $cfg_nbres_ppage))
    {
        
$cpt_fin = ($debut / $cfg_nbres_ppage) + 1;
        
$cpt_deb = $cpt_fin - $cfg_nb_pages + 1;
    }
    else
    {
        
$cpt_deb = 1;
        
        
$cpt_fin = (int)($nbtotal / $cfg_nbres_ppage);
        if ((
$nbtotal % $cfg_nbres_ppage) != 0) $cpt_fin++;
        
        if (
$cpt_fin > $cfg_nb_pages) $cpt_fin = $cfg_nb_pages;
    }

    for (
$cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++)
    {
        if (
$cpt == ($debut / $cfg_nbres_ppage) + 1)
        {
            
$barre .= "<A CLASS='off'>&nbsp;".$cpt."&nbsp;</A> ";
        }
        else
        {
            
$barre .= "<A HREF='".$query.(($cpt-1)*$cfg_nbres_ppage);
            
$barre .= "'>&nbsp;".$cpt."&nbsp;</A> ";
        }
    }
    

    
// suivant . >
    // --------------------------------------------------------------------
    
if ($debut + $cfg_nbres_ppage < $nbtotal)
    {
        
$cible = $query.($debut+$cfg_nbres_ppage);
        
$image = image_html('images/droite_on.gif');
        
$lien = str_replace('{lien}', $image, $lien_on);
        
$lien = str_replace('{cible}', $cible, $lien);
    }
    else
    {
        
$image = image_html('images/droite_off.gif');
        
$lien = str_replace('{lien}', $image, $lien_off);
    }
    
$barre .= "&nbsp;<B>&middot;</B>".$lien;

    
// fin . >>
    // --------------------------------------------------------------------
    
$fin = ($nbtotal - ($nbtotal % $cfg_nbres_ppage));
    if ((
$nbtotal % $cfg_nbres_ppage) == 0) $fin = $fin - $cfg_nbres_ppage;

    if (
$fin != $debut)
    {
        
$cible = $query.$fin;
        
$image = image_html('images/droite_on.gif');
        
$lien = str_replace('{lien}', $image.$image, $lien_on);
        
$lien = str_replace('{cible}', $cible, $lien);
    }
    else
    {
        
$image = image_html('images/droite_off.gif');
        
$lien = str_replace('{lien}', $image.$image, $lien_off);
    }
    
$barre .= "<B>&middot;</B>&nbsp;".$lien;

    return(
$barre);
}


// ------------------------------------------------------------------------
// image_html          
// ------------------------------------------------------------------------
function image_html($img, $align = "absmiddle")
{
    
$taille = @getimagesize($img);
    return
'<IMG SRC="'.$img.'" '.$taille[3].' BORDER=0 ALIGN="'.$align.'">';
}

// ------------------------------------------------------------------------
// afficher_ligne      
// ------------------------------------------------------------------------
function afficher_ligne($cpt, $enr)
{
    
// alternance des couleurs des lignes de réponses
    
$couleur = ($cpt % 2)
                  ?
'#EEEEEE'
                  
: '#FFFFFF';
    echo
'<TR BGCOLOR="'.$couleur.'">';

    
// n° de  réponse
    
echo '<TD ALIGN="right" NOWRAP WIDTH="1%">&nbsp;<B>'.$cpt.'</B>.&nbsp;</TD>';

    
// date
    
echo '<TD ALIGN="left"  NOWRAP WIDTH="1%">&nbsp;';
    echo
htmlspecialchars($enr['d']);
    echo
'&nbsp;</TD>';

    
// nom+email
    
echo '<TD ALIGN="left"  NOWRAP WIDTH="1%">&nbsp;';
    
$nom = htmlspecialchars($enr['nom']);
    if (
$enr['email'] != "")
    {   
        
$mail = str_replace('@', '_at_', $enr['email']);
        echo
"<A HREF='mailto:".htmlspecialchars($mail)."'>";
        echo
$nom;
        echo
"</A>";
    }
    else
    {
        echo
$nom;
    }
    echo
'&nbsp;</TD>';

    
// message
    
echo '<TD WIDTH="100%">&nbsp;';
    echo
htmlspecialchars($enr['commentaire']);
    echo
'&nbsp;</TD>';

    echo
'</TR>';
}

?>

</BODY>
</HTML>