<?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%'> ";
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> ";
$mots = stripslashes(htmlspecialchars($mots));
echo "<INPUT TYPE='text' NAME='mots' VALUE=\"".$mots."\">";
echo " <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 = ' <A HREF="{cible}">{lien}</A> ';
$lien_off = ' {lien} ';
// --------------------------------------------------------------------
$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." <B>·</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." <B>·</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'> ".$cpt." </A> ";
}
else
{
$barre .= "<A HREF='".$query.(($cpt-1)*$cfg_nbres_ppage);
$barre .= "'> ".$cpt." </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 .= " <B>·</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>·</B> ".$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%"> <B>'.$cpt.'</B>. </TD>';
// date
echo '<TD ALIGN="left" NOWRAP WIDTH="1%"> ';
echo htmlspecialchars($enr['d']);
echo ' </TD>';
// nom+email
echo '<TD ALIGN="left" NOWRAP WIDTH="1%"> ';
$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 ' </TD>';
// message
echo '<TD WIDTH="100%"> ';
echo htmlspecialchars($enr['commentaire']);
echo ' </TD>';
echo '</TR>';
}
?>
</BODY>
</HTML>