[résolu] Alterner couleur tableau en php

WRInaute impliqué
Bonjour, j'ai besoin d'une aide svp

J'utilise punbb comme forum et j'ai crée une page http://www.bladitour.fr/forum/dernier-post.php qui met les 10 derniers post du forum.

Je voudrais alterner la couleur des lignes, je trouve quelque code mais je sais pas ou les inserer.
j'ai mis cela dans mon tr mais ca donne ni erreur ni rien
<?
if (($compteur % 2) == 0)
echo "bgcolor=\"#FFFFFF\"";
else
echo "bgcolor=\"#000000\"";
?>


voila le code de ma page si ca pourrait aider

Code:
<?php
//-------------------------------------------------//
//--Fonctions pour recuperer les messages recents--//
//-------------------------------------------------//

define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';

//requete pour récuperer le nombre de ligne
$sql = 'SELECT t.id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.posted DESC LIMIT 0,10';
$result = $db->query($sql) or error('Unable to fetch topic list', __FILE__, __LINE__, $db->error());
$num_hits = $db->num_rows($result);

$search_ids = array();
while ($row = $db->fetch_row($result))
$search_ids[] = $row[0];
$db->free_result($result);
$search_results = implode(',', $search_ids);

//requete pour récuperer les derniers messages
$sql = 'SELECT t.id AS tid, t.poster, t.subject, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.closed, t.forum_id FROM '.$db->prefix.'topics AS t WHERE t.id IN('.$search_results.') ORDER BY t.last_post';
$result = $db->query($sql) or error('Unable to fetch search results', __FILE__, __LINE__, $db->error());
$search_set = array();
while ($row = $db->fetch_assoc($result))
$search_set[] = $row;
?>
<div id="vf" class="blocktable">
<h2><span>Discussions récents</span></h2>
<div class="box">
<div class="inbox">
<table cellspacing="0" border="1">
<thead>
<tr>
<th class="tcl" scope="col"><?php echo $lang_common['Topic']; ?></th>
<th class="tc2" scope="col"><?php echo $lang_common['Forum'] ?></th>
<th class="tc3" scope="col"><?php echo $lang_common['Replies'] ?></th>
<th class="tcr" scope="col"><?php echo $lang_common['Last post'] ?></th>
</tr>
</thead>
<tbody>
<? // Fetch the list of forums
$result = $db->query('SELECT id, forum_name FROM '.$db->prefix.'forums') or error('Unable to fetch forum list', __FILE__, __LINE__, $db->error());

$forum_list = array();
while ($forum_list[] = $db->fetch_row($result))
;
// Finally, lets loop through the results and output them
for ($i = count($search_set)-1; $i >=0; $i--)
{
_AT_reset($forum_list);
while (list(, $temp) = _AT_each($forum_list))
{
if ($temp[0] == $search_set[$i]['forum_id'])
$forum = '<a href="viewforum.php?id='.$temp[0].'">'.pun_htmlspecialchars($temp[1]).'</a>';
}
$icon = '<div class="icon"><div class="nosize">'.$lang_common['Normal icon'].'</div></div>'."\n";

$icon_text = $lang_common['Normal icon'];
$item_status = '';
$icon_type = 'icon';


$subject = '<a href="viewtopic.php?id='.$search_set[$i]['tid'].'">'.pun_htmlspecialchars($search_set[$i]['subject']).'</a> <span class="byuser">'.$lang_common['by'].' '.pun_htmlspecialchars($search_set[$i]['poster']).'</span>';

if ($search_set[$i]['closed'] != '0')
{
$icon_text = $lang_common['Closed icon'];
$item_status = 'iclosed';
}

if (!$pun_user['is_guest'] && $search_set[$i]['last_post'] > $pun_user['last_visit'])
{
$icon_text .= ' '.$lang_common['New icon'];
$item_status .= ' inew';
$icon_type = 'icon inew';
$subject = '<strong>'.$subject.'</strong>';
$subject_new_posts = '<span class="newtext">[ <a href="viewtopic.php?id='.$search_set[$i]['tid'].'&action=new" title="'.$lang_common['New posts info'].'">'.$lang_common['New posts'].'</a> ]</span>';
}
else
$subject_new_posts = null;

$num_pages_topic = ceil(($search_set[$i]['num_replies'] + 1) / $pun_user['disp_posts']);

if ($num_pages_topic > 1)
$subject_multipage = '[ '.paginate($num_pages_topic, -1, 'viewtopic.php?id='.$search_set[$i]['tid']).' ]';
else
$subject_multipage = null;

// Should we show the "New posts" and/or the multipage links?
if (!empty($subject_new_posts) || !empty($subject_multipage))
{
$subject .= ' '.(!empty($subject_new_posts) ? $subject_new_posts : '');
$subject .= !empty($subject_multipage) ? ' '.$subject_multipage : '';
}

?>
<tr<?php if ($item_status != '') echo ' class="'.trim($item_status).'"'; ?>>
<td class="tcl"> <div class="intd">
<div class="<?php echo $icon_type ?>">
<div class="nosize"><?php echo trim($icon_text) ?></div>
</div>
<div class="tclcon"> <?php echo $subject."\n" ?> </div>
</div></td>
<td class="tc2"><?php echo $forum ?></td>
<td class="tc3"><?php echo $search_set[$i]['num_replies'] ?></td>
<td class="tcr"><?php echo '<a href="viewtopic.php?pid='.$search_set[$i]['last_post_id'].'#p'.$search_set[$i]['last_post_id'].'">'.format_time($search_set[$i]['last_post']).'</a> '.$lang_common['by'].' '.pun_htmlspecialchars($search_set[$i]['last_poster']) ?></td>
</tr>
<? } echo "\t\t\t".'</tbody>'."\n\t\t\t".'</table>'."\n\t\t".'</div>'."\n\t".'</div>'."\n".'</div>'."\n\n"; ?>

Merci
 
WRInaute occasionnel
La classe css doit être appliquée sur les td, et pas sur les tr, si tu veux être sûr de valider, et que cela fonctionne sur tous les navigateurs.

Bonne journée
 
WRInaute impliqué
merci d'avoir répondu mais j'ai pas compris grand chose.

la page est tellement pleine que je sais pas sur quel td mettre et comment.

Si ca ne te gene pas de m'eclairer un peu plus.


Merci
 
WRInaute accro
Pour les TR et TD, a priori je dirais :

Code:
<tr<?php if ($item_status != '') echo ' class="'.trim($item_status).'"'; ?>>
<td class="tcl"> <div class="intd">
<div class="<?php echo $icon_type ?>">
<div class="nosize"><?php echo trim($icon_text) ?></div>
</div>
<div class="tclcon"> <?php echo $subject."\n" ?> </div>
</div></td>
<td class="tc2"><?php echo $forum ?></td>
<td class="tc3"><?php echo $search_set[$i]['num_replies'] ?></td>
<td class="tcr"><?php echo '<a href="viewtopic.php?pid='.$search_set[$i]['last_post_id'].'#p'.$search_set[$i]['last_post_id'].'">'.format_time($search_set[$i]['last_post']).'</a> '.$lang_common['by'].' '.pun_htmlspecialchars($search_set[$i]['last_poster']) ?></td>
</tr>


Il te faut aussi changer un peu la fonction pour que la variable $compteur soit la même que le décompte de la boucle for

($i)


Code:
<? if (($i % 2) == 0) echo "bgcolor=\"#FFFFFF\""; else echo "bgcolor=\"#000000\"";?>

Si tu veux les appliquer sur le TR, tu mets le bout de code php comme ça :

Code:
<tr <? if (($i % 2) == 0) echo "bgcolor=\"#FFFFFF\""; else echo "bgcolor=\"#000000\"";?> 
 <?php if ($item_status != '') echo ' class="'.trim($item_status).'"'; ?>>

Si tu veux les appliquer sur les TD, tu mets le bout de code php comme ça dans chaque TD:

Code:
<td <? if (($i % 2) == 0) echo "bgcolor=\"#FFFFFF\""; else echo "bgcolor=\"#000000\"";?> 
class= ...etc
 
WRInaute impliqué
Je vais en profiter pour poser une autre question si ca gene pas.

j'ai fait un include qui appelle la page des 10 derniers posts, mais il me sort une erreur alors que le chemin est correcte.

la page en question est http://www.bladitour.fr/dernier-post.php et l'autre page est sur forum/recent.php

ca me parrait bizzar ca, alors que quand je laisse les 2 sur forum ca marche tres bien.

Merci
 
WRInaute accro
Le message indique que le chemin n'est pas bon.

si le dossier include est à la racine, essaie
Code:
<?php include"/include/common.php"; ?>

peut etre
 
WRInaute impliqué
J'ai essayé ca

<?php include"/forum/recent.php"; ?>


puisque ma page dernier-post.php a la racine appelle recent.php sur forum/
et ca donne toujours la meme chose.


Merci

ps: l'erreur est la
require PUN_ROOT.'include/common.php';

mais je pense ne rien changer puisque ce fichier est tjs a sa place. je voulais l'appeler de la racine de mon site c'est tout.
 
WRInaute occasionnel
chtipepere a dit:
La classe css doit être appliquée sur les td, et pas sur les tr, si tu veux être sûr de valider, et que cela fonctionne sur tous les navigateurs.

Bonne journée

spécifier la classe pour chaque cellule au lieu d'une fois par ligne, c'est du gachis et ça va a l'encontre du "C" de css : cascading. :roll:

css:

.odd, .odd td { background: #eee; }
.even, .even td { background: #ddd; }

php:

$color = (++$i %2 == 0) ? "odd" : "even";
echo "<tr class='$color'>";

Cdt.
 
WRInaute impliqué
oui j'ai mis ca
<?php include"forum/recent.php"; ?>


le probleme c'est que je prend le meme fichier et je l'ai mis sur la racine, j'ai juste ajouter le forum/

c'est pour ca que j'arrive pas a comprendre


Merci
 
Discussions similaires
Haut