Kamisori

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
Kamisori
le 15/06/2005 à 20:38
Pb avec l'affichage page par page
Je débute en PHP, je me suis servit de la rubrique "comment ca marche pour faire une page de news et j'ai voulu ajouter la fonction affichage page par page mais sans succès, j'ai entré tout les codes, je n'ai aucube erreur mais pourtant je ne voi pas la barre de défilement.
Voilà le code de ma page :
<?php
function barre_navigation ($nb_total,
$nb_affichage_par_page,
$debut,
$nb_liens_dans_la_barre) {

$barre = '';

// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}

// on calcul le numéro de la page active
$page_active = floor(($debut/$nb_affichage_par_page)+1);
// on calcul le nombre de pages total que va prendre notre affichage
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
if ($nb_liens_dans_la_barre%2==0) {
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}
else {
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}

if ($cpt_deb1 <= 1) {
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}
elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}
else {
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}

if ($nb_pages_total <= $nb_liens_dans_la_barre) {
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}

// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if ($cpt_deb != 1) {
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';
}
else {
$lien='';
}
$barre .= $lien;
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
if ($cpt == $page_active) {
if ($cpt == $nb_pages_total) {
$barre .= $cpt;
}
else {
$barre .= $cpt.'&nbsp;-&nbsp;';
}
}
else {
if ($cpt == $cpt_fin) {
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>";
}
else {

$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
}
}
}

$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';
}
else {
$lien='';
}
$barre .= $lien;

return $barre;
}
?>
<html>
<head>
<title>Mon Agenda</title>
</head>

<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'kamisori', '');
mysql_select_db('kamisori_db', $base);

// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = 'SELECT count(*) FROM news';

// lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)
$sql = 'SELECT auteur, titre, date, texte_news FROM news ORDER BY date DESC LIMIT 0,1;';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on compte le nombre de news stockées dans la base de données
$nb_news = mysql_num_rows($req);

if ($nb_news == 0) {
echo 'Aucune news enregistrée.';
}
else {

// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 1;

// Préparation de la requête avec le LIMIT
$sql = 'SELECT auteur, titre, date, texte_news FROM news ORDER BY date DESC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;

// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {

// on décompose la date
sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);
echo "<table width='550' height='500' border='0' cellspacing='0' background='http://membres.lycos.fr/kamisori/Images/agenda.gif'>
<tr>
<td height='40' colspan='4'>&nbsp;</td>
</tr>
<tr>
<td width='160' height='40'>&nbsp;</td>
<td width='40'>&nbsp;</td>
<td width='300' height='40'> <div align='center'><font color='#000000'><br>";
echo $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' , $min , ':' , $sec , '';

echo "</font></div></td>
<td width='50'>&nbsp;</td>
</tr>
<tr>
<td height='218' rowspan='2'>&nbsp;</td>
<td rowspan='2'>&nbsp;</td>
<td height='380' valign='top'>
<div align='justify'><font color='#000000'>";
echo stripslashes(htmlentities(trim($data['titre']))) , '';
echo nl2br(stripslashes(htmlentities(trim($data['texte_news'])))) , '';
echo "</font></div></td>
<td width='60' height='420' rowspan='2' valign='top'>&nbsp;</td>
</tr>
<tr>
<td height='40' valign='top'>&nbsp;</td>
</tr>";

}

// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
echo '</table>';

// on affiche enfin notre barre
echo ".barre_navigation($nb_total, $nb_affichage_par_page, $_GET[ 'debut'], 1).";
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);


// on ferme la connexion à la base de données
mysql_close ();
?>

</body>
</html>

Please help me, T-T ca fait 2 jours que je reli tout et sans succès je ne voi pas d'où peux provenir l'erreur.

Ses derniers messages sur les forums

forum
Kamisori
le 16/06/2005 à 11:58
Pb avec l'affichage page par page
Tu oubli que je débute donc quand tu dis d'augmenter le nombre de liens de la barre, tu sous entend quoi ?! Car je suis un peu perdu, je pourrai avoir un petit dessin ^_^
Pour la ligne à virer c'est fait et aucun changement.
Kamisori
le 15/06/2005 à 20:38
Pb avec l'affichage page par page
Je débute en PHP, je me suis servit de la rubrique "comment ca marche pour faire une page de news et j'ai voulu ajouter la fonction affichage page par page mais sans succès, j'ai entré tout les codes, je n'ai aucube erreur mais pourtant je ne voi pas la barre de défilement.
Voilà le code de ma page :
<?php
function barre_navigation ($nb_total,
$nb_affichage_par_page,
$debut,
$nb_liens_dans_la_barre) {

$barre = '';

// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}

// on calcul le numéro de la page active
$page_active = floor(($debut/$nb_affichage_par_page)+1);
// on calcul le nombre de pages total que va prendre notre affichage
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
if ($nb_liens_dans_la_barre%2==0) {
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}
else {
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}

if ($cpt_deb1 <= 1) {
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}
elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}
else {
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}

if ($nb_pages_total <= $nb_liens_dans_la_barre) {
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}

// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if ($cpt_deb != 1) {
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';
}
else {
$lien='';
}
$barre .= $lien;
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
if ($cpt == $page_active) {
if ($cpt == $nb_pages_total) {
$barre .= $cpt;
}
else {
$barre .= $cpt.'&nbsp;-&nbsp;';
}
}
else {
if ($cpt == $cpt_fin) {
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>";
}
else {

$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
}
}
}

$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';
}
else {
$lien='';
}
$barre .= $lien;

return $barre;
}
?>
<html>
<head>
<title>Mon Agenda</title>
</head>

<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'kamisori', '');
mysql_select_db('kamisori_db', $base);

// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = 'SELECT count(*) FROM news';

// lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)
$sql = 'SELECT auteur, titre, date, texte_news FROM news ORDER BY date DESC LIMIT 0,1;';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on compte le nombre de news stockées dans la base de données
$nb_news = mysql_num_rows($req);

if ($nb_news == 0) {
echo 'Aucune news enregistrée.';
}
else {

// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 1;

// Préparation de la requête avec le LIMIT
$sql = 'SELECT auteur, titre, date, texte_news FROM news ORDER BY date DESC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;

// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {

// on décompose la date
sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);
echo "<table width='550' height='500' border='0' cellspacing='0' background='http://membres.lycos.fr/kamisori/Images/agenda.gif'>
<tr>
<td height='40' colspan='4'>&nbsp;</td>
</tr>
<tr>
<td width='160' height='40'>&nbsp;</td>
<td width='40'>&nbsp;</td>
<td width='300' height='40'> <div align='center'><font color='#000000'><br>";
echo $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' , $min , ':' , $sec , '';

echo "</font></div></td>
<td width='50'>&nbsp;</td>
</tr>
<tr>
<td height='218' rowspan='2'>&nbsp;</td>
<td rowspan='2'>&nbsp;</td>
<td height='380' valign='top'>
<div align='justify'><font color='#000000'>";
echo stripslashes(htmlentities(trim($data['titre']))) , '';
echo nl2br(stripslashes(htmlentities(trim($data['texte_news'])))) , '';
echo "</font></div></td>
<td width='60' height='420' rowspan='2' valign='top'>&nbsp;</td>
</tr>
<tr>
<td height='40' valign='top'>&nbsp;</td>
</tr>";

}

// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
echo '</table>';

// on affiche enfin notre barre
echo ".barre_navigation($nb_total, $nb_affichage_par_page, $_GET[ 'debut'], 1).";
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);


// on ferme la connexion à la base de données
mysql_close ();
?>

</body>
</html>

Please help me, T-T ca fait 2 jours que je reli tout et sans succès je ne voi pas d'où peux provenir l'erreur.

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours