Bonjour,
J'ajoute des news au fur et à mesure sur mon site (pas encore en ligne), et je trouve que la lsite devient longue. Je vais utiliser un gestionnaire de news que je vais faire avec une DB en MySQL et un script PHP. Donc en gros je voudrais que dès qu'on ajoute une news ca décale celle d'en dessous en dessous, et la 5ème à la page 2 et ainsi de suite. En gros je voudrais que ca affiche du plus récent au plus vient de 1 à ... et que ca fasse un décalage des news et de page automatique. Mais je sais pas commetn faire ce système donc si vous pouvier m'aider, merci.
Enfete la news est faites en plusieurs parties, le titre, une image, le contenu, la date. Tout ca incorporé dans divers endroit d'un tableau. Je donne le code de mon tableau avec les endroits ou je veux ajouter les contenu. PS : Sinon comment faire un système de UP d'image dans les gestionnaire des news et que doit on mettre comme type sur la DB pour une image ?
A mon avis il y a plus simple, en incluant un "LIMIT" dans ta requête SQL.
<?php
mysql_connect('localhost','login','pass'); //connexion au serveur
mysql_select_db('bdd'); //sélection de la base de données
extract($_GET); // extraction du $_GET['page'] en $page
$lim1 = ($page - 1)*5; //définition de la limite minimum
$lim2 = $page * 5; // définition de la limite maximum
$tbl = mysql_query("SELECT * FROM news LIMIT $lim1,$lim2" ); //requête SQL pour sélectionner seulement 5 news suivant la page
J'ai une erreur : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/160/sdb/9/c/*****/contact.php on line 29
Ca le rapporte à cette ligne : while ($row = mysql_fetch_array($tbl)) {
Par contre moi j'ai une table qui s'appelle News, qui contient comme champ id, titre, contenu, date, image
Petite parenthèse : je crois que "localhost" à la place de "sql.free.fr" est mieux, car sql.free.fr n'est pas l'adresse du serveur SQL de free.
Et je ne comprends pas... Chez moi ça marche très bien. J'ai créé une table appelée "news" avec les même champs que toi, ensuite je suis allé sur test.php?page=1 et test.php?page=2 et ça marchait nickel.
Je pense que tu as oublié de préciser dans l'adresse : page=x, ce que beaucoup d'internautes oublieront également. Pour empêcher l'erreur, il faut préciser un nombre par défaut si $page n'existe pas :
if (!$page) { $page = 1; }
Et voilà!
Je te donne le code complet que j'ai essayé d'optimiser au maximum. J'ai aussi rajouté la variable $nbnews. Elle définit le nombre de news à afficher par page
<?php
$nbnews = 5; //nombre de news à afficher par page
mysql_connect('localhost','*****','*****'); //connexion au serveur
mysql_select_db('*****'); //sélection de la base de données
extract($_GET); // extraction du $_GET['page'] en $page
if (!$page) { $page = 1; }
$lim1 = ($page - 1) * $nbnews; //définition de la limite minimum
$lim2 = $page * $nbnews; // définition de la limite maximum
$tbl = mysql_query("SELECT * FROM news LIMIT $lim1,$lim2" ); //requête SQL pour sélectionner seulement 5 news suivant la page
Toujours cette erreur : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/160/sdb/9/c/*******/contact.php on line 17
Pourtant j'ai mis localhost, et j'ai mis ton dernier code. Et sql.free.fr marche, j'en suis sur je l'utilise pour une lecture dans la base de donné. Mais là je comprend pas pourquoi ca ne veut pas marcher snif
Ca marche !! J'ai recréer ma table et ca à marché, car dans la table j'avais id. Maintenant j'essaye de l'insérer sur le site, et voir si les 5 news par page marche
Par contre ca me fait un gros bordel, j'ai 2 problèmes : 1/ La news en haut est la plus vieille, moi je voudrais que la news la plus récente, avec la date s'affiche en haut, donc que les autres descendent d'un "case". 2/ La première s'affiche bien ou je veux, mais lotre sort complètement du cadre et la troisième aussi, voilà le code de ma page, c'est un morceau de la page car mon site est fait en includes.
Tu as oublié le ORDER BY id DESC (remplace id par le nom de champ de la clé primaire) par contre ca risque de t'afficher de la 5eme a la 1ere news sur la premiere page, il faut changer les limites.
par exemple, si tu as 20 news, sur la premiere page, tu affichage :
20 19 18 17 16
donc il faut que $lim1 soit egal a 20 et $lim2 soit egal a 16 sur la page 1.
J'espère m'etre fait comprendre
Message édité par Le22 le 06-07-2007 à 00:05:53
------------------------------Triple Champion du monde, à titre honorifique, de Kamoulox !
Répondre à Le22
Merci encore de votre aide. 1/J'ai résolu mon problème, presque tout marche ^^ mais j'ai essayé de comprendre ton résonnement le22, mais j'ai pas tout compris, donc si tu pouvais me modifier le code ^^.
2/Comment faire une barre de changement de page en bas de la page et que ca ajoute les numéros de page à chaque fois que l'on doit svp ?
3/Sinon les guillemets c'est pas mon point fort ni les balises au bon endroit donc mon script marche pas car je m'embrouille les pinceaux , l'erreur vient surement dans le insert to avec des mélanges balises html et php Donc si on peut me dire les erreurs svp
Ok, merci
Le truc enfete c'est que je dois garder ca pour lien : "<a href="photos/'.$lien'/index.html">ICI</a>" et ce pour image "<img src=" $image " width="150">". Il faut que ca soit écrit dans la BDD Bon je sais qu'il y a des fautes ^^, car c me met erreur de variables. Sinon demon_jouable tu as pas msn pour en parler ? Si oui envoi le moi en MP stp
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.