Deux colonnes pour des news - SQL/NoSQL - Programmation
Marsh Posté le 15-10-2005 à 13:00:25
de tête ce que je ferais :
Code :
|
a verifier si ca fonctionne, mais ca peut te donner une piste
Marsh Posté le 15-10-2005 à 14:47:20
J'ai fait ça :
Code :
|
Je ne sais pas si c'est correct mais ça marche. Qu'en penses tu ?
Marsh Posté le 15-10-2005 à 14:50:58
en programmation il n'y a pas qu'une solution unique alors si ça marche alors c'est le principal
Marsh Posté le 15-10-2005 à 14:51:38
s'quoi le rapport avec "SGBD/SQL" ?
Là on faît bêtement de la présentation HTML/CSS et de l'algo.
Marsh Posté le 15-10-2005 à 14:51:51
ReplyMarsh Posté le 15-10-2005 à 14:56:57
rimb0 a écrit : J'ai dit que j'étais débutant... je comprends pas tout Beegee |
surtout que j'ai viré mon post ...
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.
Marsh Posté le 15-10-2005 à 20:40:49
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.
Marsh Posté le 15-10-2005 à 20:44:30
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 ?)
Marsh Posté le 15-10-2005 à 21:46:21
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.
Marsh Posté le 16-10-2005 à 11:03:08
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.
Marsh Posté le 15-10-2005 à 11:52:54
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.