Tabel HTML randuri ZEBRA cu date din array

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

Tabel HTML randuri ZEBRA cu date din array

Salut, am si eu o mica problema si tot am cautat pe net si tot nu am gasit, problema este urmatoarea:
am tebelul asta

Cod: Selectaţi tot

echo '<table border="0" width="600" >';
echo '<tr> <td>Denumire</td></tr>';
si informatia care se afiseaza este intr-un while si rezultatul este in

Cod: Selectaţi tot

<a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: --- <br> Categoria: '.$rand['denumire_categorie'].'</span></a>
si problema este ca nu stiu cum sa fac tabel cu zebra un rand de un del si altul de alt fel. Marplo mi-ai mai dat o data un tabel care l-ai facut in zebra dar nu m-am descurcat si am venit al tine cu un exemplu concret, si daca poti sa ma ajuti. multumesc anticipat, cu stima trif.
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Se folosesc /alterneaza 2 clase CSS, una dupa alta in cate un <tr>; numele lor diferind printr-un numar, exemplu: class="cls0" si class="cls1".
Mai jos e un exemplu care trebuie adaptat la ce ai:

Cod: Selectaţi tot

<style type="text/css"><!--
.cls0 {background:#e7e8fe;}
.cls1 {background:#01da02;}
--></style>
<?php
// array din care vor fi poreluate datele (pt. test)
// in locul lui se pot prelua datele dintr-o baza de date
$arr = array('Rand 1 ...', 'Rand 2 ...', 'Rand 3 ...', 'Rand 4 ...');

$clsnr = 0;      // variabila cu numar ce va fi folosit la alternare /modificare nume clasa css
$tabel = '<table border="0" width="600" ><tr><td>Denumire</td></tr>';

// parcurgere array si adaugare randuri in tabel
$i = 0;
while($i<count($arr)) {
  $clasa = 'cls'.$clsnr;          // seteaza clasa css
  $tabel .= '<tr class="'. $clasa. '"/><td>'. $arr[$i]. '</td></tr>';

  // incrementare index si alternare valoare $clsnr (0 sau 1), ca rest in functie de index
  $i++;
  $clsnr = $i%2;
}

$tabel .= '</table>';       // incheiere tabel
echo $tabel;
?>
- Poti verifica sursa /codul HTML rezultat, ca sa intelegi principiul.

trif Mesaje:500
salut, am incercat sa fac asa dar nu prea imi merge ca imi face un array doar la un rezultat si atat,

Cod: Selectaţi tot

$clsnr = 0;      // variabila cu numar ce va fi folosit la alternare /modificare nume clasa css
$tabel = '<table border="0" width="600" ><tr><td>Denumire</td></tr>';
if (!isset($_GET['id'])) { 
//$query="SELECT * FROM cantari_ppt WHERE aprobat = 1 ORDER BY denumire asc limit $limita";
$query="SELECT * FROM cantari_ppt 
INNER JOIN categorie
ON cantari_ppt.categoria = categorie.cheie
WHERE aprobat = 1 ORDER BY denumire asc limit $limita"; 
$result=mysql_query($query);
$num=mysql_num_rows($result);
 $i=0;
while ($i < $num) {
  $rand=mysql_fetch_array($result);
  if ($rand['nrac'] == 0)
  {
  // parcurgere array si adaugare randuri in tabel
$i = 0;
while($i<count($rand)) {
  $clasa = 'cls'.$clsnr;          // seteaza clasa css
  $tabel .= '<tr class="'. $clasa. '"/><td>
	<a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: --- <br> Categoria: '.$rand['denumire_categorie'].'</span></a>
	</td></tr>';
  // incrementare index si alternare valoare $clsnr (0 sau 1), ca rest in functie de index
  $i++;
  $clsnr = $i%2;
}

$tabel .= '</table>';       // incheiere tabel
echo $tabel;
te uiti te rog sa vezi ce am facut, multumesc anticipat, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Trebuie un singur WHILE (si un singur $i incrementat), cel in care preiei randurile luate din baza de date, in acela se adauga /adapteaza codul din instructiunea WHILE din exemplul dat mai sus.
Daca aplici la ce preiei din baza de date, nu mai e nevoie de while($i<count($rand)) .

trif Mesaje:500
salut, am reusit, multumesc pentru ajutor, uite asa am facut:

Cod: Selectaţi tot

$clsnr = 0;      // variabila cu numar ce va fi folosit la alternare /modificare nume clasa css
$tabel = '<table border="0" width="600" ><tr><td>Denumire</td></tr>';
if (!isset($_GET['id'])) { 
//$query="SELECT * FROM cantari_ppt WHERE aprobat = 1 ORDER BY denumire asc limit $limita";
$query="SELECT * FROM cantari_ppt 
INNER JOIN categorie
ON cantari_ppt.categoria = categorie.cheie
WHERE aprobat = 1 ORDER BY denumire asc limit $limita"; 
$result=mysql_query($query);
$num=mysql_num_rows($result);
$i=0;
while ($i < $num) {
  $rand=mysql_fetch_array($result);
  $clasa = 'cls'.$clsnr;     
   if ($rand['nrac'] == 0)
  {
	$tabel .= '<tr class="'. $clasa. '"/> <td>
   <a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: --- <br> Categoria: '.$rand['denumire_categorie'].'</span></a>
   </td></tr>';
	}
	 elseif ($rand['nrac'] > 0)
  {
  $tabel .= '<tr class="'. $clasa. '"/> <td>
   <a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: '.$rand['dt'].'<br> Categoria: '.$rand['denumire_categorie'].'</span></a>
   </td></tr>';
	}  
  $i++;
  $clsnr = $i%2;
}
$tabel .= '</table>';  
echo $tabel;
}
eu nu am mai modificat SELECT-ul dar daca nu este bun cu JOIN il puneti pe care il vreti voi. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

trif Mesaje:500
salut, am si eu o problema, am un script de LOAD MORE, si am vrut sa ii implementez randuri ZEBRA la rezultatele pe care mi le da. problema este in felul urmator:
am 2 fisiere:
loadone.php care are codul:

Cod: Selectaţi tot

	
<id class="timeline" id="updates">
	<?php
include('conectare.php');
$sql=mysql_query("SELECT * FROM cantari_ppt 
INNER JOIN categorie
ON cantari_ppt.categoria = categorie.cheie
INNER JOIN utilizatori
ON cantari_ppt.autor = utilizatori.utilizator
WHERE aprobare = 1 ORDER BY id_c desc limit 5");
$tabel = '<table border="0" width="550" cellspacing="0" cellpadding="0"><tr><td>Denumire cantare</td></tr>';
$nrac=0;
$clsnr=0;  
$i=0;
while ($rand=mysql_fetch_array($sql)) {
  $upd_id=$rand['id_c'];
   if($rand['ranguri'] == 1 ) {
  $rang = '<h6>Trimisa de: <font color ="red" >  '.$rand['utilizator'].'</h6></font> ';
}
elseif($rand['ranguri'] == 2 ) {
   $rang = '<h6>Trimisa de: <font color ="blue" >  '.$rand['utilizator'].'</h6></font> ';
}
elseif($rand['ranguri'] == 3 ) {
  $rang = '<h6>Trimisa de: <font color ="green" >  '.$rand['utilizator'].'</h6></font>  ';
}
  $clasa = 'cls'.$clsnr;     
   if ($rand['nrac'] == 0)
  {
	$tabel .= '<tr class="'. $clasa. '"/> <td>
   <a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: --- <br> Categoria: '.$rand['denumire_categorie'].'</span></a>
'.$rang.'
</td></tr>';
	}
	 elseif ($rand['nrac'] > 0)
  {
  $tabel .= '<tr class="'. $clasa. '"/> <td>
   <a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: '.$rand['dt'].'<br> Categoria: '.$rand['denumire_categorie'].'</span></a>
'.$rang.'
</td></tr>';
	}   
  $i++;
  $clsnr = $i%2;
}
$tabel .= '</table>';  
echo $tabel;
?>
<div id="more<?php echo $upd_id; ?>" class="morebox">
<center><a href="#" class="more_updates" id="<?php echo $upd_id; ?>">Mai multe rezultate</a><br></center>
</div>
si loadmore.php care are codul urmator:

Cod: Selectaţi tot

<html>
<head>
<style type="text/css"><!--
.cls0 {background:#EEE;}
.cls1 {background:#FFF;}
--></style>
</head>
</body>
<?php
include("conectare.php");
sleep(1);
if(isset($_POST['lastupd']))
{
	$lastupd=$_POST['lastupd'];
	$lastupd=mysql_real_escape_string($lastupd);
	$result=mysql_query("SELECT * FROM cantari_ppt 
INNER JOIN categorie
ON cantari_ppt.categoria = categorie.cheie
INNER JOIN utilizatori
ON cantari_ppt.autor = utilizatori.utilizator
WHERE aprobare = 1 AND id_c < $lastupd ORDER BY id_c desc limit 3");
$tabel = '<table border="0" width="550" cellspacing="0" cellpadding="0" >';
$nrac=0;
$y=0;
$clsnr=0;  
while ($rand=mysql_fetch_array($result)) {
$upd_id=$rand['id_c'];
   if($rand['ranguri'] == 1 ) {
  $rang = '<h6>Trimisa de: <font color ="red" >  '.$rand['utilizator'].'</h6></font> ';
}
elseif($rand['ranguri'] == 2 ) {
   $rang = '<h6>Trimisa de: <font color ="blue" >  '.$rand['utilizator'].'</h6></font> ';
}
elseif($rand['ranguri'] == 3 ) {
  $rang = '<h6>Trimisa de: <font color ="green" >  '.$rand['utilizator'].'</h6></font>  ';
}
  $clasa = 'cls'.$clsnr;     
   if ($rand['nrac'] == 0)
  {
	$tabel .= '<tr class="'. $clasa. '"/> <td>
  <a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: --- <br> Categoria: '.$rand['denumire_categorie'].'</span></a>
'.$rang.'
</td></tr>';
	}
	 elseif ($rand['nrac'] > 0)
  {
  $tabel .= '<tr class="'. $clasa. '"/> <td>
   <a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: '.$rand['dt'].'<br> Categoria: '.$rand['denumire_categorie'].'</span></a>
'.$rang.'
</td></tr>';
	}   
  $y++;
  $clsnr = $y%2;
}
$tabel .= '</table>';  
echo $tabel;
?>
<?php
}
?>
<div id="more<?php echo $upd_id; ?>" class="morebox">
<center><a href="#" id="<?php echo $upd_id; ?>" class="more_updates">Mai multe rezultate</a></center>
</div>
<body>
</html>
am aceste 2 fieiere care in index.php sunt apelate cu include "loadonce.php";
dar faza este ca atunci cand intru pe index.php imi arata tabelul cu zebra dar cand dau mai multe rezultate imi afiseaza rezultatele dar nu in forma de zebra. adica cand imi arata rezultate cerute imi afiseaza un tabel normal chit ca in fisier am pus sa imi arate in forma de zebra. nu stiu care este problema. va uitati va rog sa vedeti unde am gresit. va multumesc anticipat. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Salut
Ar trebui sa verifici codul html la tabelul adaugat in pagina, sa vezi ce class sau id au randurile. Asa e mai usor sa-ti dai seama unde in codul php sa cauti gresala.
Daca acel continut e adaugat dinamic, printr-un Ajax, poti verifica si vedea codul adaugat folosind Mozilla Firefos si addon-ul FireBug (e foarte util pt. cei care fac pagini web).

Nu stiu daca urmatoarea solutie e rezolvarea, dar incerc.
Deci, in "loadmore.php", in loc de:

Cod: Selectaţi tot

$clasa = 'cls'.$clsnr;
pune:

Cod: Selectaţi tot

$clasa = 'cls'.$clsnr%2; 
Iar in loc de:

Cod: Selectaţi tot

$clsnr = $y%2;
sa fie:

Cod: Selectaţi tot

$clsnr++; 

Subiecte similare