news et page par page

Répondre
vincent16
le 04/02/2009 à 20:36
vincent16
Bonsoir,
J'ai fait votre 'comment faire' les news, je voudrais les mettre page par page !
Mais il y a une erreur a chaque fois que j'essayais !
'Parse error'

Je me demandé si il n'y avais pas plus simple ? pour réaliser un telle script !
Je poste pas le code, il serait rebutant pour vous smiley

...Merci d'avance
chuck norris peut te faire passer un sale quart d'heure en 8 minute ...
LA GLOBULE
le 04/02/2009 à 20:41
LA GLOBULE
Ben une parse error, c'est une erreur de syntaxe.

Normalement, PHP doit indiquer le numéro de la ligne où il a rencontré l'erreur de syntaxe.
Regarde ton code à ce numéro de ligne (ou la précédente) pour voir l'erreur.
vincent16
le 04/02/2009 à 20:46
vincent16
le probl
chuck norris peut te faire passer un sale quart d'heure en 8 minute ...
vincent16
le 04/02/2009 à 20:51
vincent16
Petite paranthése : le site bug , j'fais prévisualisation sa destroy ma session et j'envois un pavé de texte il m'affiche 2 mot le salopioo !

bref : l'erreur venait de la fermeture de la balise php

?>

Je recommene, je reposte mes éventuelles erreurs dans une dixaines de minutes !
chuck norris peut te faire passer un sale quart d'heure en 8 minute ...
vincent16
le 04/02/2009 à 21:11
vincent16
<?php


function barre_navigation ($nb_news,
$nb_affichage_par_page,
$debut,
$nb_liens_dans_la_barre) {
$barre = '';

// on recherche l'URL courante munie de ses param
chuck norris peut te faire passer un sale quart d&#039;heure en 8 minute ...
vincent16
le 04/02/2009 à 21:11
vincent16
<?php


function barre_navigation ($nb_news,
$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émente 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_news/$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;
// on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
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_news - ($nb_news % $nb_affichage_par_page));
if (($nb_news % $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 afficheun >> 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;

include('mysql_connect.php');
// 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 nesélectionnant que le nombre voulu de news à afficher (LIMIT)
$sql = 'SELECT auteur, titre, date, texte_news FROM news ORDER BY date DESC;';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête nese passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.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.';
}
// 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($_GET['debut'])) $_GET['debut'] = 0;
$nb_affichage_par_page = 1;
// Préparation de la requête avec le LIMIT
$sql = 'SELECT titre, description FROM catalogue ORDER BY titre ASC LIMIT '.$_GET[
'debut'].','.$nb_affichage_par_page;
// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// si on a au moins une news, on l'affiche
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);
// on affiche les résultats
echo '<br />News de : ' , htmlentities(trim($data['auteur'])) , '<br />';
echo 'Titre : ' , htmlentities(trim($data['titre'])) , '<br />';
echo 'Postée le : ' , $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' ,
$min , ':' , $sec , '<br /><br />';
echo 'News : ' , nl2br(htmlentities(trim($data['texte_news']))) , '<br />';
}
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
// on ferme la connexion à la base de données

// on affiche enfin notre barre
echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET[
'debut'], 3).'</span>';

// 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 ();
?>

Warning: mysql_close(): no MySQL-Link resource supplied in /home/www/63d383a3b3d49a15e3e2ecab9e956be6/web/test/news.php on line 154

c'est la l'vant derniére ligne ou il y a mysq_close();
chuck norris peut te faire passer un sale quart d&#039;heure en 8 minute ...
vincent16
le 04/02/2009 à 21:35
vincent16
je ne sais pas , j'ai copier coller le code de page par page pour voir si sa marche ou pas, parce que en le faisant à la main j'ai encore plus erreur !

Je détestes le php quand sa marche pas bien .. snif !

je suppr cette variable, mais toujours pareil pour l'erreur
chuck norris peut te faire passer un sale quart d&#039;heure en 8 minute ...
LA GLOBULE
le 04/02/2009 à 22:39
LA GLOBULE
smiley

Ben supprimes pas que la variable, mais aussi la fonction.
Si tu as toujours une erreur après cela, c'est forcement une erreur différente de la première.

Mais tu sais, le but des comment faire, ce n'est pas de les copier coller (c'est précisé en introduction).
Répondre
LoadingChargement en cours