j'arrive pas !! :o( pour l'affichage page par page

page 1 page 2
Répondre
kronemburg
kronemburg
Déconnecté
Kro kro kro kronemburg
Salut,
J'essais depuis quelques tems d'afficher mes news page par page smiley... Docnc je vais sur lephpfacile est je copie bêtement le code que l'on trouve exprès pour cela dans les comments faire, je le teste pour voir si je suis un bon recopieur, et tout marche. Bon jusque la ça va ! Mais c'est lorsque que j'adapte le code pour mes news que ça ne marche plus ! Je ne comprend pas pourquoi smiley !! Voyez le wall:

<?
function barre_navigation ($nb_total,
$nb_affichage_par_page,
$debut) {

// on indique le nombre de liens représentants des chiffres dans la barre de navigation
$nb_liens_dans_la_barre = 10;

// on prépare l'URL de la page qui va être visitée
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=';
}
}
}


// début <<
if ($debut >= $nb_affichage_par_page) {
// si $debut, qui correspond donc au x de notre LIMIT est supérieur ou égal au nombre d'éléments affichés par page, et bien c'est que l'on est pas sur la première page, du coup, on affiche un lien << vers la page 1 (et le x du LIMIT vaut donc 0) - on rappelle également que < = <
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'"><<</A> ';
}
else {
// sinon on affiche rien
$lien = '';
}
// on rappelle que la notation $barre .= $lien est equivalente à : $barre = $barre.$lien (une simple concaténation)
$barre .= $lien;

// précédent <
if ($debut >= $nb_affichage_par_page) {
// si $debut est supérieur ou égal au nombre d'éléments à afficher sur chaque page, cela implique que l'on ne se trouve pas sur la première page, et on affiche alors un lien < pointant vers la page précédente sur laquelle on se trouve ($cible)
$cible = $query.($debut-$nb_affichage_par_page);
$lien = ' <A HREF="'.$cible.'"><</A> ';
}
else {
// sinon, cela veut dire que l'on est sur la première page et par conséquent on affiche rien
$lien = '';
}
$barre .= $lien;

// pages 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10
if ($debut >= ($nb_liens_dans_la_barre*$nb_affichage_par_page)) {
// on initialise deux compteurs
$cpt_fin = ($debut / $nb_affichage_par_page) + 1;
$cpt_deb = $cpt_fin - $nb_liens_dans_la_barre + 1;
}
else {
$cpt_deb = 1;
$cpt_fin = (int)($nb_total / $nb_affichage_par_page);
if (($nb_total % $nb_affichage_par_page) != 0) {
$cpt_fin++;
}
if ($cpt_fin > $nb_liens_dans_la_barre) {
$cpt_fin = $nb_liens_dans_la_barre;
}
}

for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
// on affiche tous les numéros de la barre de navigation, en prenant soin ne ne pas afficher de lien pour la page qui est en cours de consultation
if ($cpt == $cpt_fin) {
if ($cpt == ($debut / $nb_affichage_par_page) + 1) {
$barre .= " ".$cpt."  ";
}
else {
$barre .= " <A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A> ";
}
}
else {
if ($cpt == ($debut / $nb_affichage_par_page) + 1) {
$barre .= " ".$cpt." - ";
}
else {
$barre .= " <A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A> - ";
}
}
}

// suivant >
if ($debut + $nb_affichage_par_page < $nb_total) {
// si $debut plus le nombre éléments d'afficher par page est inférieur au nombre total d'éléments à, cela implique que l'on ne se trouve pas sur la dernière page, et on affiche alors un lien > pointant vers la page suivante sur laquelle on se trouve ($cible)
$cible = $query.($debut+$nb_affichage_par_page);
$lien = ' <A HREF="'.$cible.'">></A> ';
}
else {
$lien = '';
}
$barre .= $lien;

// fin >>
// on calcule le reste d'une division euclidienne (le %, cf. les opérateurs mathématiques) entre le nombre total d'éléments à afficher et le nombre d'éléments que l'on affiche sur une seule page, et enfin, on ôte le résultat par le nombre total d'élément
$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}
if ($fin != $debut) {
// si $fin est différent de $debut, c'est que l'on ne se trouve pas sur la dernière page, et on affiche donc un lien >> permettant d'accéder directement à la dernière page
$cible = $query.$fin;
$lien = ' <A HREF="'.$cible.'">>></A>';
}
else {
// dans ce cas, le visiteur se trouve sur la dernière page, et par conséquent, on n'affiche pas le lien >>
$lien = '';
}
$barre .= $lien;

return ($barre);
}
?>

<html>
<head>
<title>news</title>
</head>

</body>
<table width="100%" border="0">
<?
// on se connecte à notre base
include("connection.php");

// on choisit le nombre d'éléments à afficher sur chaque page
$nb_affichage_par_page = 6;

// 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 catalogue';

// on exécute cette requête
$resultat = mysql_query($sql);

// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);

// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune réponse trouvé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($debut)) $debut = 0;

// Préparation de la requête avec le LIMIT
$sql = 'SELECT titre, date, texte_news FROM news ORDER BY id DESC LIMIT 0,'.$nb_news_a_afficher.';';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while ($data = mysql_fetch_array($req)) {
$auteur = $data['auteur'];
$titre = $data['titre'];
$date = $data['date'];
$texte_news = $data['texte_news'];
$texte_news = nl2br ($texte_news);

sscanf($date, "%4s-%2s-%2s %2s:%2s:%2s", &$an, &$mois, &$jour, &$heure, &$min, &$sec);
// on affiches les résultats dans la <table>
echo ' <tr>
<td height="123"> <div align="center">
<p>News</p>
<p><br>
</p>
<table cellpadding=0 cellspacing=0 border=0 width=439>
<tr>
<td width=439 height="19" colspan=3 valign=middle background="images/home_49.gif">
<table cellpadding=0 cellspacing=0 border=0>
<tr>
<TD><img src="images/pixtrans.gif" width=10 height=18></TD>
<td class=TITREBLANC>News du '.$jour.'/'.$mois.'/'.$an.'</td>
<td>'.$titre.'</td>
</tr>
</table></td>
</tr>
<tr>
<td background="images/home_39.gif" valign=top width=3><img src="images/home_33.gif"></td>
<td width=433 class=TEXT height=50><p>'.$texte_news.'</p>
<p align="right"><em>Le webmaster</em></p></td>
<td background="images/home_40.gif" valign=top width=3><img src="images/home_35.gif" width=3 height=31></td>
</tr>
<tr>
<td colspan=3 valign=top background="images/home_39.gif"><img src="images/home_43.gif" width=439 height=3></td>
</tr>
</table>
<tr> </tr>
</div></td>
</tr>';
}

// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
}
// on ferme la connexion à la base de données.
mysql_close ();
echo '</table><br>';

// on lance la création de la barre de navigation à l'aide de notre fonction, le dernier argument de la fonction étant le nom de notre page WEB sur laquelle on va afficher les résultats de notre requête
$barre = barre_navigation($nb_total, $nb_affichage_par_page, $debut);

// on affiche enfin notre barre
echo ' <tr>
<td height="21" align="center"> <div align="center"></div></td>
</tr>
<tr>
<td height="21" align="center">'.$barre.'</td>
</tr>
</table>';
?>
</body>
</html>

Je peux aussi vous dire que cela ne vient pas de ma requete car la même marche sans l'affichage page par page...
Merci smiley
kronemburg
kronemburg
Déconnecté
Kro kro kro kronemburg
http://www.lephpfacile.com/wall/lire_wall.php?wall=465

pardon le wall automatque n'a pas marché pour moi :'( !
kronemburg
kronemburg
Déconnecté
Kro kro kro kronemburg
le message d'erreure est :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\testes\index.php on line 147
Aucune réponse trouvée
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
je me trompe peut etre mais
$sql = 'SELECT count(*) FROM catalogue';
au lieu de catalogue ca serait pas plutot news ??
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
et puis pour le wall automatique faut mettre ton code entre les balises [code]
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Zebden a raison, tu as copier coller en oubliant de modifier une requete SQL (table news au lieu de catalogue).
kronemburg
kronemburg
Déconnecté
Kro kro kro kronemburg
je me sens un peu con là... smiley
kronemburg
kronemburg
Déconnecté
Kro kro kro kronemburg
merci au fait !!
Alkaid
Alkaid
Déconnecté
O_o
  1. je me sens un peu con là... 


......il faut pas ... smiley
L4_Hyr3
L4_Hyr3
Déconnecté
epita promo 2009
coi cette pub sur "copier" la globule ????
L4_Hyr3
L4_Hyr3
Déconnecté
epita promo 2009
coi cette pub sur "copier" la globule ????
L4_Hyr3
L4_Hyr3
Déconnecté
epita promo 2009
chuis fort pr ecrire le meme message moi
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
smiley
L4_Hyr3
L4_Hyr3
Déconnecté
epita promo 2009
encore un message ou y a ke un smiley :p
Koboneil
Koboneil
Déconnecté
Koboneil
T'es surtout fort pour le flood et les post pourris !
page 1 page 2
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique