8768 sujets

Développement web côté serveur, CMS

Bonjour ,
Est ce que quelqu'un peux m'aider a ajouté un lien premier et un lien dérnier pour ma pagination,sans oublié de raccourcir la pagination s'il y a beaucoup de pages.
J'ai fais quelques efforts mais sans résultat Smiley decu
Mon Code PHP:

<?php

							//connection
							mysql_connect('localhost','root','') or die ('erreur de connection');
							mysql_select_db('ssysitel') or die('erreur de la BDD');
							
							//methode GET pour récuperer le nombre de la page avec une condition pour la pagination
							$page = isset($_GET['page'])?intval($_GET['page']):1;
							if($page==0 || $page==1){
								$page1=1;
							}else{
								$page1=($page*3)-3;
							}
							//requette pour selectionner les news par date ordre décroissant avec LIMIT $page1 pour récuperer sa valeur 
							$sql="SELECT auteur,titre,date,texte_news FROM news ORDER BY date DESC LIMIT $page1,3;";
							$sql2='SELECT auteur,titre,date,texte_news FROM news ORDER BY date DESC;';
							$req=mysql_query($sql) or die('erreur d\'envoi de la requete sql au serveur');
							$req2=mysql_query($sql2) or die('erreur d\'envoi de la requete sql au serveur');
							//compter le nombre de news
							$nb_news=mysql_num_rows($req);
							$nb_news2=mysql_num_rows($req2);
							if($nb_news==0){
								echo 'aucune news enregistrée.';
							}else{
								while($data = mysql_fetch_array($req)){
									//decomposition de la date sscanf analyse la Chaine de charac
									sscanf($data['date'],"%4s-%2s-%2s %2s:%2s:%2s",$an,$mois,$jour,$heure,$min,$sec);
									?>
									<div id="newscontainer"><?php
									echo '<br><label class="newslabels">News de :</label> <label class="texts">'.htmlentities(trim($data['auteur'])).'</label><br>';
									echo '<label class="newslabels">Titre :</label> <label class="texts">'.htmlentities(trim($data['titre'])).'</label><br>';
									echo '<label class="newslabels">Postée le :</label> <label class="texts">'.$jour.'/'.$mois.'/'.$an.' à '.$heure.':'.$min.':'.$sec.'</label><br><br>';
									echo '<label class="newslabels">News :</label> <label class="texts">'.nl2br(htmlentities(trim($data['texte_news']))).'</label><br>';
									?></div>
									<?php
								}
								//retourner l'entier supérieur avec ceil de la valeur nombre article
								$nb_article=$nb_news2/3;
								$nb_article=ceil($nb_article);
								?><div id="pagination"><?php
								for($i=1;$i<=$nb_article;$i++){
									?><a href="activity.php?page=<?php echo $i ?>" class="pages"><?php echo $i.' ' ?></a><?php
								}
								?>
								</div>
								<?php
							}
							//libération mémoire alloué à la requête
							mysql_free_result($req);
							//fermeture de la connexion
							mysql_close();
						?>

Merci beaucoup pour votre aide précieuse Smiley smile
Bonjour
mathieu1004 a écrit :
Salut,
cela commence à faire quelques années que les fonctions mysql_XXX sont deprecated ... : http://php.net/manual/fr/function.mysql-connect.php

Comme indiqué dans le formulaire a remplacer par mysqli ou pdo

Je travail sur un projet de stage et on m'a imposé à travailler avec ces versions !
Est ce que c'est possible de trouver une solution à mon problème?
Merci pour votre aide Smiley smile !
Il me semble que dans les dernières versions de php (depuis un ou 2 ans quand même ), ces fonctions n'existe même plus... je trouve un peu triste comme stage :s

Bon bah du coup si c'est un stage je vais essayer de te faire réfléchir sur ce que tu fais xD

Je suppose que les lignes :
$sql2='SELECT auteur,titre,date,texte_news FROM news ORDER BY date DESC;';
$req2=mysql_query($sql2) or die('erreur d\'envoi de la requete sql au serveur');
$nb_news2=mysql_num_rows($req2);
$nb_article=$nb_news2/3;
$nb_article=ceil($nb_article);
sont de toi ?

Il n'y a pas besoin de récupérer TOUT le contenu de la table news pour au final ne faire qu'un compte du nombre de ligne puis le diviser par 3...
Commence donc par voir du coté de la fonction COUNT en sql, pour ton cas c'est assez simple et ça devrait être aussi plus rapide comme requête.
Je ne pense pas que cela soit une bonne pratique de mélanger des bouts de code qui n'ont pas la même utilité, j'aurai tendance à faire d'abord le traitement de req puis seulement ensuite le traitement de ta pagination et ainsi regrouper les lignes que je viens d'isoler de ton code.

Ensuite pour faire ta pagination, il me semble mieux d'utiliser une variable qui va contenir le nombre d'articles par page que de mettre des 3 un peu partout.
$page1=($page*3)-3;
et
$nb_article=$nb_news2/3;

Je ne sais pas exactement comment fonctionne ton site, mais je ne trouve pas tes variables très parlantes... nb_article semble être le nombre de page ?

Bref, à partir de la tu devrais pouvoir facilement obtenir le nombre de page total, éviter de mettre un lien qui renvoie sur la page courante, et si tu es d'un certains nombre de pages de la première ou de la dernière page, rajouter des ...
Modifié par mathieu1004 (10 May 2017 - 16:15)