8768 sujets

Développement web côté serveur, CMS

Je suis entrain de réalisé un petit script de pagination pour mes news,et je me retrouve avec un message d'erreur que je n'est pas su gérer (je suis encore débutant en PHP).
j'utilise WAMPSERVER comme plateforme de développement web.
Le message d'erreur:


Notice: Undefined index: page in C:\wamp\www\****\news.php on line 8

le code de ma page news:


//connection
	mysql_connect('localhost','root','') or die ('erreur de connection');
	mysql_select_db('ssys') or die('erreur de la BDD');
	
	//methode GET pour récuperer le nombre de la page avec une condition pour la pagination
	$page=$_GET['page'];
	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);
			echo '<br>News de <font color="red">: '.htmlentities(trim($data['auteur'])).'</font><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>';
		}
		//retourner le nombre supérieur avec ceil de la valeur nombre article
		$nb_article=$nb_news2/3;
		$nb_article=ceil($nb_article);
		for($i=1;$i<=$nb_article;$i++){
			?><a href="activity.php?page=<?php echo $i ?>" style="text-decoration:none;"><?php echo $i.' ' ?></a> <?php
		}
	}
	//libération mémoire alloué à la requête
	mysql_free_result($req);
	//fermeture de la connexion
	mysql_close();
?>

J'ai fais un à la page où je veux les mettre:

<?php include('news.php');?>

et c'est tout
Merci d'avance Smiley smile
Modifié par imnotouf (07 May 2017 - 19:26)
Bonjour,
Si aucun paramètre n'est transmis à la page, l'index 'page' n'existe pas dans le tableau $_GET.
Il faut prévoir une page par défaut dans ce cas-là :
$page = isset($_GET['page'])?intval($_GET['page']):1;


Et comme vous débutez :
- la syntaxe condition?instruction1:instruction2 est un opérateur ternaire qui correspond à un if. Si la condition est vraie, l'instruction 1 s'exécute, sinon l'instruction 2.
- isset vérifie l'existence ou l'affectation d'une variable
- intval fait un cast en entier.

Remarques :
- le module mysql est obsolète depuis des lustres. Prévoyez de passer à PDO (au pire, mysqli).
- htmlentities en fait beaucoup (trop). htmlspecialchars fait le minimum vital.
Modifié par Seven tears (07 May 2017 - 19:51)
Meilleure solution