afficher les news de la + récente à la + ancienne

Eléphant du PHP | 258 Messages

27 oct. 2006, 20:12

Sinon j'ai essayer sa mais sa ne marche pas non plus:
	    <table width="617" border="1" cellspacing="0" cellpadding="0">
<?php do { ?>
              <tr>
                <td width="153" bgcolor="#FFFFFF"><div align="center"><?php echo $row_RTnews['DATEn']; ?></div></td>
                <td width="394" bgcolor="#FFFFFF"><?php echo $row_RTnews['TITnew']; ?></td>
                <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Applications.gif" alt="Modifier" width="16" height="16"></div></td>
                <td width="30" bgcolor="#FFFFFF"><div align="center">
<img src="../icones/images/Recycle%20Bin%20(full).gif" alt="Supprimer" width="16" height="16"></div></td>
              </tr>
<?php } while ($row_RTnews = mysql_num_rows($RTnews));?>

            </table>
			
Bon en esperant que vous pourrez m'aider
Modifié en dernier par 2501gigi le 27 oct. 2006, 20:41, modifié 1 fois.

ViPHP
ViPHP | 1961 Messages

27 oct. 2006, 20:24

Re,

Essaie ceci
<?php
$colname_RTnews = "1";
if (isset($_SERVER['IDTn'])) {
  $colname_RTnews = (get_magic_quotes_gpc()) ? $_SERVER['IDTn'] : addslashes($_SERVER['IDTn']);
}
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTnews = sprintf("SELECT * FROM tnews WHERE IDTn = %s ORDER BY IDTn DESC", $colname_RTnews);
$RTnews = mysql_query($query_RTnews, $Debaseconnect) or die(mysql_error());
while ($row_RTnews = mysql_fetch_assoc($RTnews))
 { ?>
            <table width="617" border="1" cellspacing="0" cellpadding="0">
              <tr>
                <td width="153" bgcolor="#FFFFFF"><div align="center"><?php echo $row_RTnews['DATEn']; ?></div></td>
                <td width="394" bgcolor="#FFFFFF"><?php echo $row_RTnews['TITnew']; ?></td>
                <td width="30" bgcolor="#FFFFFF"><div align="center">
<img src="../icones/images/Applications.gif" alt="Modifier" width="16" height="16"></div></td>
                <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Recycle%20Bin%20(full).gif" alt="Supprimer" width="16" height="16"></div></td>
              </tr>
            </table>
            
            <?php } ?>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 258 Messages

27 oct. 2006, 20:37

Marche pas

ViPHP
ViPHP | 1961 Messages

27 oct. 2006, 20:49

Re,

C'est clair comme du goudron. C'est quoi qui ne marche pas? Le message d'erreur? La valeur des variables ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 258 Messages

27 oct. 2006, 20:52

Comme t'a put le voir c'est dans un tableau que je veut faire aparaitre ces valeur donc si sa marché il crérait plusieurs tableau pour afficher les differentes news et la ce n'est pas le cas.

Pas de messages d'erreur.

Se que j'ai essayé aussi sa me fait la meme chose.

ViPHP
ViPHP | 1961 Messages

27 oct. 2006, 20:58

Re,

Pour voir le contenu retourné par MySQL, remplace ton code par celui-ci et poste la première partie du résultat
<?php
$colname_RTnews = "1";
if (isset($_SERVER['IDTn'])) {
  $colname_RTnews = (get_magic_quotes_gpc()) ? $_SERVER['IDTn'] : addslashes($_SERVER['IDTn']);
}
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTnews = sprintf("SELECT * FROM tnews WHERE IDTn = %s ORDER BY IDTn DESC", $colname_RTnews);
$RTnews = mysql_query($query_RTnews, $Debaseconnect) or die(mysql_error());
echo '<pre>';
while ($row_RTnews = mysql_fetch_assoc($RTnews))
 { 
 	print_r($row_RTnews);
 }
 echo '</pre>';
?>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 oct. 2006, 23:34

Y a plusieurs chose qui ne vont pas à mon avis... déjà je te recommande de remplacer ton do/while par un while. La différence entre les deux se trouve dans le fait que dans une boucle do/while les instructions sont toujours exécutées au moins une fois, même si la condition est fausse.
Du coup si tu n'as pas de news en base, tu vas afficher ton tableau quand même et comme il n'y aura pas de valeur, ça peut poser problème :)

Ensuite je ne comprend pas ça :
$colname_RTnews = "1"; 
if (isset($_SERVER['IDTn'])) { 
  $colname_RTnews = (get_magic_quotes_gpc()) ? $_SERVER['IDTn'] : addslashes($_SERVER['IDTn']); 
}
C'est quoi cette variable $_SERVER['IDTn'] ???

Puis dans ta requête :
$query_RTnews = sprintf("SELECT * FROM tnews WHERE IDTn = %s ORDER BY IDTn DESC", $colname_RTnews);
Si tu mets une clause WHERE IDTn = xxx il ne te ramenera que la ligne correspondant à cet Id, tu n'auras qu'un enregistrment, qui ne sera pas nécessairement le dernier et ta clause d'order by ne sert à rien (ou alors j'ai loupé un épisode et IDTn n'est pas ta clé auto-incrémentée ?) :)

Enfin, et effectivement, quand quelque chose ne fonctionne pas, ce serait bien de nous ce qui se passe par rapport à ce que tu attends, vu que "ca marche pas" on s'en doutait vu que ça n'a pas de jambes ! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

28 oct. 2006, 09:50

Bon jai mis ton code ajola ca et voila se qui me retourne :

Array
(
[IDTn] => 1
[DATEn] => 2006-10-27 17:48:29
[TITnew] => bon c'est fait
[TEXnew] => rsalut
)

Merci ryle de te moquer de moi mais je pense qu'il faut que j'enleve ca :
$colname_RTnews = "1";  
if (isset($_SERVER['IDTn'])) {  
  $colname_RTnews = (get_magic_quotes_gpc()) ? $_SERVER['IDTn'] : addslashes($_SERVER['IDTn']);  
}

Je vais essaye 2 trois truc

Eléphant du PHP | 258 Messages

28 oct. 2006, 09:55

Bon en efait c'est se
$colname_RTnews = "1";   
if (isset($_SERVER['IDTn'])) {   
  $colname_RTnews = (get_magic_quotes_gpc()) ? $_SERVER['IDTn'] : addslashes($_SERVER['IDTn']);   
}

qu'il fallait que j'enleve.


Merci a tous pour votre aide.

Eléphant du PHP | 258 Messages

28 oct. 2006, 10:04

C'est marrant , j'ai 4 entrée dans ma base de donnée, donc 4 news et a la boucle while il ne m'en affiche que trois alors qu'avec la boucle do/while il m'affiche les 4.

Comment cela se fait il?


boucle while:
 <?php while ($row_RTnews = mysql_fetch_assoc($RTnews)) { ?> 
              <tr>
                  <td width="153" bgcolor="#FFFFFF"><div align="center"><?php echo $row_RTnews['DATEn']; ?></div></td>
                  <td width="394" bgcolor="#FFFFFF"><?php echo $row_RTnews['TITnew']; ?></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Applications.gif" alt="Modifier" width="16" height="16"></div></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Recycle%20Bin%20(full).gif" alt="Supprimer" width="16" height="16"></div></td>
              </tr>
              <?php } ?>

boucle do/while :
 <?php do { ?>
              <tr>
                  <td width="153" bgcolor="#FFFFFF"><div align="center"><?php echo $row_RTnews['DATEn']; ?></div></td>
                  <td width="394" bgcolor="#FFFFFF"><?php echo $row_RTnews['TITnew']; ?></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Applications.gif" alt="Modifier" width="16" height="16"></div></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Recycle%20Bin%20(full).gif" alt="Supprimer" width="16" height="16"></div></td>
              </tr>
              <?php } while ($row_RTnews = mysql_fetch_assoc($RTnews)); ?>
Bizarre.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 oct. 2006, 11:29

Je ne me moquais pas méchament, t'es loin d'être le seul à envoyer des messages sur le forum en disant "ça ne marche pas", ce qui nous avance drolement et c'est un peu pour les autres aussi qu'on insiste là dessus ;)

As tu également enlevé le " WHERE IDTn = %s " dans ta requête ?

Si le do/while t'affiche les 4 enregistrement alors que le while ne t'en affiche que 3, c'est que tu as déjà commencé à en lire un avec un mysql_fetch_* avant d'entrer dans la boucle, au lieu de laisser la boucle faire les tests toute seule... montre nous un peu plus de code (à partir de la requête par exemple ) :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

28 oct. 2006, 12:34

Salut ryle t'inquiete je comprend et c'est normal donc je vais vous mettre le code :


<?php
mysql_select_db($database_Debaseconnect, $Debaseconnect);
$query_RTnews = "SELECT * FROM tnews ORDER BY IDTn DESC";
$RTnews = mysql_query($query_RTnews, $Debaseconnect) or die(mysql_error());
$row_RTnews = mysql_fetch_assoc($RTnews);
$totalRows_RTnews = mysql_num_rows($RTnews);
?>
 <?php while ($row_RTnews = mysql_fetch_assoc($RTnews)); ?>
              <tr>
                  <td width="153" bgcolor="#FFFFFF"><div align="center"><?php echo $row_RTnews['DATEn']; ?></div></td>
                  <td width="394" bgcolor="#FFFFFF"><?php echo $row_RTnews['TITnew']; ?></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Applications.gif" alt="Modifier" width="16" height="16"></div></td>
                  <td width="30" bgcolor="#FFFFFF"><div align="center"><img src="../icones/images/Recycle%20Bin%20(full).gif" alt="Supprimer" width="16" height="16"></div></td>
              </tr>
              <?php } ?>
Bon je sais mon code et pas tres commenté(pas du tout meme)

ViPHP
ViPHP | 2144 Messages

28 oct. 2006, 14:15

Comme Ryle te l'a dit tu dois enlever le fetch qui est avant le while, sinon tu "manges" le premier enregistrement.

La ligne :
$row_RTnews = mysql_fetch_assoc($RTnews);
est donc à supprimer.

Eléphant du PHP | 258 Messages

28 oct. 2006, 14:34

Merci iclo en faite merci a tous ca marche

Bon comme je sais pas si il faut que je crais un nouveau post car ma question va en suivant.

C'est pour supprimer une news, bon je sais qu'il faut le supprimer par apport a l'IDTn ou on peut le faire aussi par apport a la date.

Moi j'ai fais sa mais sa ne fonctionne pas sa ne me supp la ligne dans mon tableau.
if ($suppNews == "SUPPRIMER"){
mysql_select_db ($database_Debaseconnect,$Debaseconnect);
		$delteNews = "DELETE * FROM tnews WHERE DATEn = '%s'";
		$Result7 = mysql_query($deleteNews, $Debaseconnect) or die(mysql_error());

}

Pourriez vous m'aider,je suis sur que c'est pas grand chose mais je trouve pas.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 oct. 2006, 15:30

Déjà dans un delete, le * ne sert à rien, si tu supprimes, c'est toute la ligne de toute façon :)

Code : Tout sélectionner

DELETE // Supprime FROM tnews // Dans la table tnews WHERE DATEn = '%s' // Tous les enregistrements où daten est égal à "%s"
Question => c'est quoi ton %s ? :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...