Afficher 2-3 résultat d'une requète Mysql

Eléphanteau du PHP | 39 Messages

09 nov. 2010, 06:06

Bonjour a tous,

Alors aujourd'hui je revien vers vous parceque j'ai un autre petit soucis :

Je m'explique j'ai un site internet avec une catégorie News (code plus bas) et sur la page d'accueil ce n'est pas très visible donc j'ai fais un petit script pour afficher les deux ou trois dernière news qui ont été poster et inviter les gens a cliquez dessus pour découvrir le reste des news.

Mon problème est que je n'ai que la dernière que j'ai poster qui s'affiche, ou alors j'ai toutes les news qui s'affiche ! Il n'y a pas de demi mesure lol

Donc voici mon script de news :
<?php 
include ('_connexion.php'); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style.css" type="text/css">
</head>

<body topmargin="0" bottommargin="0" rightmargin="0" leftmargin="0">
<?
if (($_GET['action']!="poster") and ($_POST['rechercher']!="OK"))
	{
	$query="SELECT ordre_news, nbr_news FROM 1two_news_preferences";
	$res_ordre_news = @mysql_query($query,$db);
	$list_ordre_news=mysql_fetch_row($res_ordre_news);
	if ($list_ordre_news[0]=="du plus ancien au plus récent")
		{
		$query="SELECT titre, texte, photo, DATE_FORMAT(date_ins, '%d-%m-%Y'), heure_ins, compteur FROM 1two_news_news ORDER BY date_ins ASC , heure_ins ASC";
		$res_news = @mysql_query($query,$db);
		}
	else
		{
		$query="SELECT titre, texte, photo, DATE_FORMAT(date_ins, '%d-%m-%Y'), heure_ins, compteur FROM 1two_news_news ORDER BY date_ins DESC , heure_ins DESC";
		$res_news = @mysql_query($query,$db);
		}
	if (@mysql_num_rows($res_news)!=0)
		{
		$nb=mysql_num_rows($res_news);
		$nbpage=ceil($nb/$list_ordre_news[1]);
		if ($_GET['page']=="") {$page=1;}
		for ($i=0; $i<$nb; $i=$i+1)
			{ 
			$list_news=@mysql_fetch_row($res_news);
			if ( ($i>=$list_ordre_news[1]*$page-$list_ordre_news[1]) and ($i<$list_ordre_news[1]*$page) )
				{
				echo "<table width='100%' border='0' cellspacing='2' cellpadding='0' bgcolor='#F7F7F7' class='cadrenews'>";
				echo "<tr>"; 
				echo "<td>";
				echo "<table width='100%' border='0' cellspacing='0' cellpadding='3'>";
				echo "<tr>";
				echo "<td width='60%' valign='top' class='textebig'>$list_news[0]</td>";
				echo "<td width='40%' align='right' valign='top' class='textedate'>Posté le $list_news[3]<br>à $list_news[4]</td>";
				echo "</tr>";
				echo "</table>";
				echo "<table width='100%'>";
				echo "<tr>";
				echo "<td width='100%' valign='top' class='texte'>"; if ($list_news[2]!="") {echo "<img src='$list_news[2]' width='150' align='left'>";} echo $list_news[1] . "</td>";
				echo "</tr>";
				echo "</table><br>";
				$query="SELECT newscompteur FROM 1two_news_commentaires WHERE newscompteur='$list_news[5]'";
				$res_nb_commentaires = @mysql_query($query,$db);
				$list_nb_commentaires=mysql_num_rows($res_nb_commentaires);
				echo "</td></tr>";
				echo "</table><br><br>";
				}
			else {}
			}
		}
		echo "<div align='right' class='texte'>Page "; 
		for ($j=1; $j<=$nbpage; $j++) { echo " <a href='?page=$j' class='lien1'>$j</a> "; }
		echo "</div>";
	}
?>	
</body>
</html>
Et voici le petit script que j'ai fabriquer
<?php 
$query="SELECT titre FROM 1two_news_news ORDER BY date_ins ASC , heure_ins ASC";
$requete = mysql_query($query);
while( $result = mysql_fetch_object( $requete ) )
{
$mess = ("$result->titre ");
}
?>
et pour appeler cet net news
<?php echo $mess; ?>
Merci

Mammouth du PHP | 661 Messages

09 nov. 2010, 08:29

salut ::

J'ai pas lu tout ton premier script, il y a un peu trop de code pas trrès propre à mon gout :)

donc commence par virer les @ si ça pete, c'est que tu as fais une bêtises, donc il ne sert à rien d'essayer de la camoufler, ça ne te rendra le débug que plus difficile ...

le principe est celui-ci ::
$mess = "<div id='newsFrame'>" ;
$sql = "SELECT .....ORDER BY ...  LIMIT 0,3" ; // utilises LIMIT pour te limiter à 3 résultats et order by pour les ranger
$result = mysql_query($sql) ; // requete au serveur mysql
while($row = mysql_fetch_object($result) ){
    $mess .= '<div>'.$row->message.'</div>' ; // attention à la concaténation ..
}
$mess .="</div>";
echo $mess ;
ensuite, à toi de monter les requêtes :)

Eléphanteau du PHP | 39 Messages

09 nov. 2010, 18:18

Merci Nours 312 pour les @ c'est un script que j'ai télécharger tel quel avec juste l'installation a faire.

Donc le code ca donne :
<?php 
include ('news/_connexion.php');
$mess = "<div id='newsFrame'>" ;
$sql = "SELECT titre FROM 1two_news_news LIMIT 0,3 ORDER BY date_ins ASC , heure_ins ASC" ; // utilises LIMIT pour te limiter à 3 résultats et order by pour les ranger
$result = mysql_query($sql) ; // requete au serveur mysql
while($row = mysql_fetch_object($result) ){
    $mess .= '<div>'.$row->titre.'</div>' ; // attention à la concaténation ..
}
$mess .="</div>";
echo $mess ;
?>
Le problème c'est que rien ne s'affiche :(

Eléphanteau du PHP | 39 Messages

09 nov. 2010, 18:33

C'est bon après avoir utiliser phpmyadmin j'ai tester ma reqète qui présenter une erreur

SELECT titre FROM 1two_news_news ORDER BY date_ins ASC , heure_ins ASC LIMIT 0,3

Il falais que je fasse le tri avant d'imposer la limite, merci tout marche bien maintenant

Mammouth du PHP | 661 Messages

09 nov. 2010, 20:55

un peu de doc, ça ne fait pas de mal ;)