Page 1 sur 1

print PHP <li>

Posté : 08 nov. 2011, 22:25
par lanza
Bonjour,

Je rencontre à nouveau un soucis :)

Je dispose du code suivant, qui me permet d'aller chercher dans une table des infos et il les affiche avec les deux "print" :
<?php
include ("includes/connect_sql.php"); # parametres de connection SQL

$rs = mysql_query("select count(*) from news"); # nombre de news
$r = mysql_fetch_row($rs);
$tot = $r[0];
$limit = 6;  # nombre de news affichées par défaut

if (isset($_GET['l'])) {$_GET['l'];$limit = $_GET['l']; # si la variable 'l' existe alors $limit = l;
                                          # permet de modifier $limit via l'url du type [news.php?l=10]
                  }#end_if

$result = mysql_query("SELECT date,news FROM news WHERE 1 ORDER BY date DESC LIMIT $limit"); # on selection les $limit dernieres news

if(mysql_num_rows($result)) # si resultat different de vide alors
{
   while($row=mysql_fetch_row($result)) # boucle pour séparer les resultats
      {   $date = $row[0];
         $date = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1', $date); # DateSQL => DateFR
         $news = $row[1];

         print ("<h3>$date</h3>");
         print ("$news<br>");
      }#end_while
}#end_if
if ($limit > $tot){} else { # si on affiche plus de news qu'il n'y en a alors rien sinon faire un lien pour tout afficher
                  $i = $tot + $limit; # $i est forcément > à $limit
                  print("<a href='index.php?n=news&l=".$i."'>Pour voir toutes les news.</a>");
                  }#end_if
?>

C'est un module de news. Pour afficher mes news j'écris le "print" a l'endroit voulu, cela fonctionne. Mais l'architecture de présentation de mes news est sous forme de
<ul>
<li>Premiere news</li>
<li>deuxieme news</li>
</ul>


J'aurais besoin d'afficher qu'une seule news par "<li>" , comment faire ?

merci d'avance

Re: print PHP <li>

Posté : 09 nov. 2011, 02:39
par Ryle
J'aurais tendance à dire qu'il te suffit d'ouvrir ta balise UL avant ta boucle. Dans ta boucle pour chaque itération qui doit donc correspondre à une news différente, tu affiche le LI, la news et la balise de fin. Et une fois que tu as quitté la boucle, tu peux refermer le UL... :)

Re: print PHP <li>

Posté : 09 nov. 2011, 16:16
par lanza
Je n'ai pas tout compris ce que vous m'avez écrit

Re: print PHP <li>

Posté : 09 nov. 2011, 17:02
par moogli
en gros

afficher '<ul>'
pour chaque news
afficher '<li>'
afficher titre de la news
afficher '</li>'
fin pour

@+

Re: print PHP <li>

Posté : 09 nov. 2011, 21:21
par lanza
Je suis vraiment désolé mais je ne comprends vraiment pas :(

J'avais aussi pensé a supprimer la boucle while, mais je ne dois pas le faire correctement car cela ne fonctionne plus.

Re: print PHP <li>

Posté : 09 nov. 2011, 21:37
par Ryle
Si on comprend bien, le but de ton code php, c'est de construire le code html suivant :
<ul>
  <li>Ta première niouze</li>
  <li>Ta deuxième niouze</li>
  <li>...</li>
</ul>
Voici donc ce qu'on veut obtenir.

Toutes tes news sont dans une base de données, il faut donc exécuter une requête sql pour aller les chercher (ça tu l'as), puis parcourir les résultat de la requête (ça tu le fais aussi), et afficher chacune de tes actualités, une par une :
<?php

  ....

  print '<ul>'; // tu ouvres la liste

  while (...) {
     print '<li>'; // affiche le début de la balise
     .... // ici tu affiches ce que tu veux voir apparaître entre tes balises
     print '</li>'; // affiche la fin de la balise
  }

  print '<ul>'; // tu fermes la liste
?>
C'est y plus clair ? :)

Re: print PHP <li>

Posté : 09 nov. 2011, 21:44
par lanza
Yes ! Merci beaucoup.