Système page
Dernière réponse : dans Programmation
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.
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.
Autres pages sur : systeme page
Lassé par la pub ? Créez un compte
Si la table contenant les news a pour nom news et pour clé primaire news_id, la premeire page devrait donner a peut pres ceci (pas testé):
en esperat que ca t'aide. J'ai essayé de commenter un maximum pour que ca soit comprehensible. Si ca te pôse probleme, hesites pas a demander
<?
//identifiants
$host = "";
$login = "";
$pass = "";
$base = "";
//initialisation de la variable $i à 0
$i = 1;
//connexion à la base de donnée
$bd=mysql_connect($host , $login , $pass);
$bd=mysql_select_db($base);
//requete sql
$query="SELECT * FROM news ORDER BY news_id DESC";
$result=mysql_query($query);
//boucle d'affichage du contenu
while ($row = mysql_fetch_array($result)) {
//on teste $i
// $i correspond au nombre de news affichées
if (i != 6) {
$id = $row[news_id];
echo $id;
//ainsi de suite pour chaque champ ...
//on implemente i
$i++
}
}
?>
en esperat que ca t'aide. J'ai essayé de commenter un maximum pour que ca soit comprehensible. Si ca te pôse probleme, hesites pas a demander
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 ?
Merci d'avance
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" background="img_site/medias/titre.png" class="Texte" scope="col" >TITRE</th>
</tr>
<tr>
<th width="124" scope="row">IMAGE</th>
<td width="522">CONTENU</td>
</tr>
<tr>
<th colspan="2" bgcolor="#D26C6C" scope="row">DATE, autres.. </th>
</tr>
</table>
<br />
<br />
</div></th>
</tr>
</table>
Merci d'avance
Yo!
A mon avis il y a plus simple, en incluant un "LIMIT" dans ta requête SQL.
Voilà j'ai pas testé
. Il te faut ensuite une table dans une bdd qui s'appelle "news" et qui contient les champs "date", "image" et "contenu"
Ensuite va juste sur news.php?page=1 pour avoir la première page, etc...
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
while ($row = mysql_fetch_array($tbl)) { //début de la boucle d'affichage
echo '<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" background="img_site/medias/titre.png" class="Texte" scope="col" >TITRE</th>
</tr>
<tr>
<th width="124" scope="row">'.$row['image'].'</th>
<td width="522">'.$row['contenu'].'</td>
</tr>
<tr>
<th colspan="2" bgcolor="#D26C6C" scope="row">'.$row['date'].'</th>
</tr>
</table>
<br>
<br>
</div></th>
</tr>
</table>
';
} // fin de la boucle d'affichage
mysql_close(); // arrêt de la connexion SQL
?>
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
while ($row = mysql_fetch_array($tbl)) { //début de la boucle d'affichage
echo '<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" background="img_site/medias/titre.png" class="Texte" scope="col" >TITRE</th>
</tr>
<tr>
<th width="124" scope="row">'.$row['image'].'</th>
<td width="522">'.$row['contenu'].'</td>
</tr>
<tr>
<th colspan="2" bgcolor="#D26C6C" scope="row">'.$row['date'].'</th>
</tr>
</table>
<br>
<br>
</div></th>
</tr>
</table>
';
} // fin de la boucle d'affichage
mysql_close(); // arrêt de la connexion SQL
?>
Voilà j'ai pas testé
. Il te faut ensuite une table dans une bdd qui s'appelle "news" et qui contient les champs "date", "image" et "contenu"Ensuite va juste sur news.php?page=1 pour avoir la première page, etc...
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
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
J'ai beau essayer d'optimiser le code avec ce que je sais, mais l'erreur es toujours au même endroit :
<?php
mysql_connect("sql.free.fr", "*****", "*****"); // Connexion à MySQL
mysql_select_db("*****"); // Sélection de la base coursphp
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
while ($row = mysql_fetch_array($tbl) )
{ ?>
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" background="img_site/medias/titre.png" class="Texte" scope="col" ><?php echo $row['titre']; ?></th>
</tr>
<tr>
<th width="124" scope="row"><?php echo $row['image']; ?></th>
<td width="522"><?php echo $row['contenu']; ?></td>
</tr>
<tr>
<th colspan="2" bgcolor="#D26C6C" scope="row"><?php echo $row['date']; ?></th>
</tr>
</table>
<br>
<br>
</div></th>
</tr>
</table>
<?php } // fin de la boucle d'affichage
mysql_close(); // arrêt de la connexion SQL
?>
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 :
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
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
while ($row = mysql_fetch_array($tbl)) { //début de la boucle d'affichage
echo '<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" background="img_site/medias/titre.png" class="Texte" scope="col" >'.$row['titre'].'</th>
</tr>
<tr>
<th width="124" scope="row">'.$row['image'].'</th>
<td width="522">'.$row['contenu'].'</td>
</tr>
<tr>
<th colspan="2" bgcolor="#D26C6C" scope="row">'.$row['date'].'</th>
</tr>
</table>
<br>
<br>
</div></th>
</tr>
</table>
';
} // fin de la boucle d'affichage
mysql_close(); // arrêt de la connexion SQL
?>
$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
while ($row = mysql_fetch_array($tbl)) { //début de la boucle d'affichage
echo '<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" background="img_site/medias/titre.png" class="Texte" scope="col" >'.$row['titre'].'</th>
</tr>
<tr>
<th width="124" scope="row">'.$row['image'].'</th>
<td width="522">'.$row['contenu'].'</td>
</tr>
<tr>
<th colspan="2" bgcolor="#D26C6C" scope="row">'.$row['date'].'</th>
</tr>
</table>
<br>
<br>
</div></th>
</tr>
</table>
';
} // fin de la boucle d'affichage
mysql_close(); // arrêt de la connexion SQL
?>
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
Merci beaucoup de ta patience pour m'aider
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
Merci beaucoup de ta patience pour m'aider
Alors la je suis sur le cul parce que chez moi ça marche très bien... Et je l'ai testé sur un site sous free aussi...
Sans l'inclure à ta page, en le mettant sur une page à part en recopiant juste le code que je t'ai donné, tu peux vérifier si ça marche?
Vérifie aussi que la variable $page est préservée et que toutes les informations de connexion sont correctes (sans faute de frappe)
Sans l'inclure à ta page, en le mettant sur une page à part en recopiant juste le code que je t'ai donné, tu peux vérifier si ça marche?
Vérifie aussi que la variable $page est préservée et que toutes les informations de connexion sont correctes (sans faute de frappe)
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.
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.
<?php include("haut.php"); //Appelle du logo include("menu.php"); //Appelle du menu ?> <html> <style type="text/css"> .Texte { font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-style: normal; color: #C33939; } </style> </html> <body onLoad="MM_preloadImages('img_site/le_bar/bar1bis.jpg','img_site/le_bar/bar2bis.jpg','img_site/le_bar/billard2.jpg')"> <th width="4" scope="col" valign="top"> </th> <th width="646" scope="col" valign="top"><table width="646" height="400" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000"> <tr> <th align="left" valign="top" scope="col" ><?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 while ($row = mysql_fetch_array($tbl)) { //début de la boucle d'affichage echo '<br/><table width="600" border="0" cellspacing="0" cellpadding="0"> <tr> <th colspan="2" background="img_site/medias/titre.png" class="Texte" scope="col" >'.$row['titre'].'</th> </tr> <tr> <th width="124" scope="row">'.$row['image'].'</th> <td width="522">'.$row['contenu'].'</td> </tr> <tr> <th colspan="2" bgcolor="#D26C6C" scope="row">'.$row['date'].'</th> </tr> </table> <br> <br> </div></th> </tr> </table><br/> '; } // fin de la boucle d'affichage mysql_close(); // arrêt de la connexion SQL ?> <p> </p></th> </tr> </table> <br /> <?php include("bas.php"); //Appelle du bas ?>
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
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
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
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
$titre = $_POST['titre']; $contenu = $_POST['contenu']; $image = $_POST['image']; $lien = $_POST['lien']; mysql_query("INSERT INTO `medias` ( `id` , `titre` , `image` , `contenu` , `date` , `lien` ) VALUES ('', '.$titre', '<img src=".$image" width="150">', '.$contenu', NOW( ) , '<a href="photos/.$lien/index.html">ICI</a>')"); mysql_close(); ?>
Déjà remplace
par
C'est magique et ça fait la même chose
Sinon pour ta requête ça ferait plutôt : mysql_query("INSERT INTO medias(titre,image,contenu,date,lien) VALUES($titre,$image,$contenu,$date,$lien)");
avec un auto-incerement sur ton id
$titre = $_POST['titre'];
$contenu = $_POST['contenu'];
$image = $_POST['image'];
$lien = $_POST['lien'];
$contenu = $_POST['contenu'];
$image = $_POST['image'];
$lien = $_POST['lien'];
par
extract($_POST);
C'est magique et ça fait la même chose
Sinon pour ta requête ça ferait plutôt : mysql_query("INSERT INTO medias(titre,image,contenu,date,lien) VALUES($titre,$image,$contenu,$date,$lien)");
avec un auto-incerement sur ton id
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
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
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumMysql select max date
- ForumBase de donnée mysql free
- ForumMysql mysql, php et apache
- ForumQu est ce que mysql
- ForumConnecter une base de donne mysql netbeans
- ForumComment fonctionne mysql
- ForumBase de données mysql free
- ForumDeux galerie coppermine sur un seul serveur
- ForumMysql select sur deux bases
- ForumPhp-mysql probleme de selection de base
- Voir plus