Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
815 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Deux colonnes pour des news

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Deux colonnes pour des news

n°1223663
rimb0
Posté le 15-10-2005 à 11:52:54  profilanswer
 

Bonjour à tous !
Je suis débutant en php mais surtout avec MySQL.
J'ai trouvé un script sympa de news qui marche plutot bien mais que je n'arrive pas à personaliser. Je m'explique.
 
Dans mon admin, j'ajoute un texte. Il s'affiche dans une colonne.
 
Ex :
Texte 3
Texte 2
Texte 1
 
J'aimerai que ça fasse ça (donc deux colonnes de tableau)
Texte 6      Texte 3
Texte 5      Texte 2
Texte 4      Texte 1
 
Donc voici mon script :
<?php
$db = mysql_connect("$NEWS_host", "$NEWS_login", "$NEWS_pass" );
mysql_select_db("$NEWS_base",$db);
 
if ($p == "5" )
    $query = "SELECT * FROM NEWSnews ORDER BY id DESC LIMIT 0,2";
   
if ($p == "4" )
    $query = "SELECT * FROM NEWSnews ORDER BY id DESC LIMIT 2,4";
 
else
    $query = "SELECT * FROM NEWSnews ORDER BY id DESC LIMIT 0,2";
 
$result = mysql_query($query);
 
while ($row = mysql_fetch_array($result)) {
 
    $contenu = nl2br($row[contenu]);
 
    echo "<table>\n";
    echo "<tr>\n";
    echo "<td>$row[titre]</td>\n";
    echo "<td>$contenu</td>\n";
    echo "</tr>\n";
    echo "</table>\n";
   
}
mysql_close($db);
?>
 
 
J'ai esseyé ça :
 
echo "<table>\n";
    echo "<tr>\n";
    echo "<td>$row[titre]</td>\n";
    echo "<td>$contenu</td>\n";
    echo "</tr>\n";
    echo "<tr>\n";
    echo "<td>$row[titre]</td>\n";
    echo "<td>$contenu</td>\n";
    echo "</tr>\n";
    echo "</table>\n";
 
 
Le probleme c'est qu'il affiche deux fois le contenu... bref, j'ai vraiment du mal. Auriez vous une petite idée ?  
Je vous remercie d'avance.

mood
Publicité
Posté le 15-10-2005 à 11:52:54  profilanswer
 

n°1223687
fluminis
Posté le 15-10-2005 à 13:00:25  profilanswer
 

de tête ce que je ferais :
 

Code :
  1. $q1 = "SELECT * FROM NEWSnews ORDER BY id DESC LIMIT 0,2";
  2. $q2 = "SELECT * FROM NEWSnews ORDER BY id DESC LIMIT 2,2";
  3. $res1 = mysql_query($q1);
  4. $res2 = mysql_query($q2);
  5. if($res1 && $res2){
  6. //ok les deux req se sont bien executées
  7. if($nb1 = mysql_num_rows($res1) &&  $nb2 = mysql_num_rows($res2)){
  8.  //entete du tableau
  9.  print("<table class='news'>" );
  10.  for($i = 0; $i < max($nb1,$nb2); $i++){
  11.   print("<tr>" );
  12.   if($i < $nb1){
  13.    $uneNews = mysql_fetch_assoc($res1);
  14.    print("<td>".$uneNews['nom_d_un_champ_de_la_bdd_a_afficher']."</td>" );
  15.   }else{
  16.    print("<td>&nbsp;</td>" );
  17.   }
  18.   if($i < $nb2){
  19.    $uneNews = mysql_fetch_assoc($res2);
  20.    print("<td>".$uneNews['nom_d_un_champ_de_la_bdd_a_afficher']."</td>" );
  21.   }else{
  22.    print("<td>&nbsp;</td>" );
  23.   }
  24.   print("</tr>" );
  25.  }
  26.  print("</table>" );
  27. }
  28. }else{
  29.   //la requete sql est fausse
  30. }


 
a verifier si ca fonctionne, mais ca peut te donner une piste


Message édité par fluminis le 15-10-2005 à 13:02:44

---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1223727
rimb0
Posté le 15-10-2005 à 14:31:01  profilanswer
 

Merci beaucoup je regarde.

n°1223739
rimb0
Posté le 15-10-2005 à 14:47:20  profilanswer
 

J'ai fait ça :
 

Code :
  1. <table width="380" border="0" cellspacing="0" cellpadding="0">
  2.   <tr>
  3.     <td width="172" bgcolor="#990000">
  4. <?php
  5. $db = mysql_connect("$dv_host", "$dv_login", "$dv_pass" );
  6. mysql_select_db("$dv_base",$db);
  7. $query = "SELECT * FROM DVnews ORDER BY id DESC LIMIT 0,6";
  8. $result = mysql_query($query);
  9. while ($row = mysql_fetch_array($result)) {
  10. $contenu = nl2br($row[contenu]);
  11. echo "$row[titre]$contenu<br>";
  12. }
  13. ?>
  14. </td>
  15. <td width="208">
  16. <?php
  17. $query = "SELECT * FROM DVnews ORDER BY id DESC LIMIT 6,6";
  18. $result = mysql_query($query);
  19. while ($row = mysql_fetch_array($result)) {
  20. $contenu = nl2br($row[contenu]);
  21. echo "$row[titre]$contenu\n";
  22. }
  23. mysql_close($db);
  24. ?>
  25. </td>
  26.   </tr>
  27. </table>


 
 
Je ne sais pas si c'est correct mais ça marche. Qu'en penses tu ?

n°1223743
fluminis
Posté le 15-10-2005 à 14:50:58  profilanswer
 

en programmation il n'y a pas qu'une solution unique alors si ça marche alors c'est le principal :)


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1223745
Arjuna
Aircraft Ident.: F-MBSD
Posté le 15-10-2005 à 14:51:38  profilanswer
 

s'quoi le rapport avec "SGBD/SQL" ?
 
Là on faît bêtement de la présentation HTML/CSS et de l'algo.

n°1223746
rimb0
Posté le 15-10-2005 à 14:51:51  profilanswer
 

J'ai dit que j'étais débutant... je comprends pas tout Beegee :(

n°1223756
Beegee
Posté le 15-10-2005 à 14:56:57  profilanswer
 

rimb0 a écrit :

J'ai dit que j'étais débutant... je comprends pas tout Beegee :(


 
surtout que j'ai viré mon post ... :lol:
 
Enfin en gros tu pourrais le faire en SQL directement, mais vu que mySql est assez limité, pas sûr que ça marche.
Le plus simple est de le faire dans le code php, tu stoques le résultat d'une seule et unique requête dans un vecteur, que tu parcoures ensuite intelligemment pour afficher les news dans l'ordre que tu veux.

n°1223823
Arjuna
Aircraft Ident.: F-MBSD
Posté le 15-10-2005 à 20:40:49  profilanswer
 

De tout façon, à mon avis c'est mieu de gérer ça via le PHP que via la requête, parceque l'affichage c'est quelquechose de trop dynamique pour être dépendant du flux de données.

n°1223824
betsamee
Asterisk Zeperyl
Posté le 15-10-2005 à 20:44:30  profilanswer
 

en l'occurence ca a l'air plutot statique comme affichage et je pense que plusieurs requets pourraient etre economisees (=>rajouter dans le select le numero de colone calcule(modulo?) ou le texte doit apparaitre ?)

mood
Publicité
Posté le 15-10-2005 à 20:44:30  profilanswer
 

n°1223846
Beegee
Posté le 15-10-2005 à 21:46:21  profilanswer
 

C'est ce que j'avais mis dans le post que j'ai supprimé (le modulo), mais franchement, si c'est juste pour afficher les 6 news les plus récentes selon une certaine mise en page, vaut mieux stoquer dans un vecteur et faire ça en php.

n°1223913
Arjuna
Aircraft Ident.: F-MBSD
Posté le 16-10-2005 à 11:03:08  profilanswer
 

Le coup du modulo ne marchera pas, il veut que les news s'affichent en colonne comme dans un journal de petites annonces : on part du haut et on va jusqu'en bas avant de passer à la colonne suivante.
 
En réalité, au lieu de faire un modulo, votre solution se fait sans rien du tout et avec un bête : <p style="float: right">. C'est encore plus simple.
 
Pour ce qu'il veut faire, un algo tout simple :
 
x = mon nombre de colonnes
y = mon nombre de news par colonne
 
select * from news limit 1, x*y
 
for i = 1 to x
   j = 0
   Affichage de <p width="100/x%" float:left>
   while j < y
      j = j + 1
      Affichage de <p>la news</p>
   loop
   Affichage de </p>
next
 
Et c'est fini. Une seule requête. Le truc 100% paramètrable, et on passe aisément en mode mono-colonne, ou une colonne sur deux.
Affichage indépendant du flux de données quoi. Le B-A-BA du développement web.


Message édité par Arjuna le 16-10-2005 à 11:05:00
n°1224101
betsamee
Asterisk Zeperyl
Posté le 16-10-2005 à 20:23:42  profilanswer
 

oui tu as raison
le modulo n'est pas adapte a ce cas


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Deux colonnes pour des news

 

Sujets relatifs
MySQL et contrainte d'unicité sur plusieurs colonnesprobleme script news
affichage de newsScript de news et de galerie
Problème affichage de newsAfficher juste le nom des colonnes "varchar" et les 3 1er tuples
Module de commentaire de news qui pointe vers un forum InvisionPB 1.3Problème affichage news?
Liste tables et propriété colonnes[PHP/HTML...] Créer une boîte de news
Plus de sujets relatifs à : Deux colonnes pour des news


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR