Acest tutorial explica cum pot fi create corect tabele HTML cu date stocate intr-un Array sau care in general sunt parcurse cu instructiuni WHILE, FOR sau FOREACH.
O problema des intalnita in acest caz este afisearea incorecta a randurilor, coloanelor tabelului sau chiar generarea de mai multe tabele in loc de unul singur cu mai multe randuri.
De cele mai multe ori cauza e ca inceputul (si inchiderea) tabelului HTML sunt in bucla WHILE sau FOR, iar cand se repeta executia din bucla se creaza iar codul pt. inceputul tabelului.
Solutia: Scrierea codului de inceput (si sfarsit) de tabel in afara buclei FOR sau WHILE.

In urmatoarele exemple este explicat modul general de creare a unui tabel HTML cu mai multe coloane, folosind WHILE, FOR si FOREACH.

1. Crearea tabelului cu datele dintr-o matrice secventiala simpla

- Explicatiile necesare sunt in documentatia din cod (Observati cum se lucreaza cu un indice pentru generarea de randuri noi in functie de cate coloane trebuie pe fiecare rand.).

Exemplu cu WHILE

<?php
// Matricea cu datele ce vor fi afisate in tabel
$aray = array('val1', 'val2', 'val3', '... val_n');

// Afla numarul de elemente din matrice
$nr_elm = count($aray);

// Variabila in care va fi stocat codul HTML cu tabelul
$tabel_html = '';

// Aici se precizeaza numarul de coloane care sa fie pe fiecare rand
$nr_col = 2;

// Daca matricea are cel putin un element
if ($nr_elm > 0) {
  // Se creaza codul pt. inceputul tabelului HTML si al primului rand
  $tabel_html = '<table border="1"><tr>';

  // Se parcurge matricea cu WHILE
  $i = 0;                 // Indice pt. rand nou si pt. primul element din Array
  while($i < $nr_elm) {
  // Se adauga in tabel coloanele
    $tabel_html .= '<td>' .$aray[$i]. '</td>';

    $i++;                 // Se incrementeaza valoarea indicelui

    // Daca restul impartirii lui $i la numarul de coloane stabilit e 0
    // Adauga un nou rand in tabel
    if (($i % $nr_col)==0) { $tabel_html .= '</tr><tr>'; }
  }

  // Se adauga (dupa terminarea lui WHILE) inchiderea randului si tabelului HTML
  $tabel_html .= '</tr></table>';

  // Se elimina posibil rand gol adaugat, pt. care nu au mai fost elemente pt. coloane (<tr></tr>)
  $tabel_html = str_replace('<tr></tr>', '', $tabel_html);
}

// Se afiseaza tabelul obtinut
echo $tabel_html;
?>

Exemplu cu FOR

<?php
// Matricea cu datele ce vor fi afisate in tabel
$aray = array('val1', 'val2', 'val3', '... val_n');

// Afla numarul de elemente din matrice
$nr_elm = count($aray);

// Variabila in care va fi stocat codul HTML cu tabelul
$tabel_html = '';

// Aici se precizeaza numarul de coloane care sa fie pe fiecare rand
$nr_col = 2;

// Daca matricea are cel putin un element
if ($nr_elm > 0) {
  // Se creaza codul pt. inceputul tabelului HTML si al primului rand
  $tabel_html = '<table border="1"><tr>';

  // Se parcurge matricea cu FOR
  for($i=0; $i<$nr_elm; $i++) {
    // Se adauga in tabel coloanele
    $tabel_html .= '<td>' .$aray[$i]. '</td>';

    // Daca restul impartirii lui ($i+1) la numarul de coloane stabilit e 0
    // Adauga un nou rand in tabel
    if ((($i+1) % $nr_col)==0) { $tabel_html .= '</tr><tr>'; }
    }

  // Se adauga (dupa terminarea lui WHILE) inchiderea randului si tabelului HTML
  $tabel_html .= '</tr></table>';

  // Se elimina posibil rand gol adaugat, pt. care nu au mai fost elemente pt. coloane (<tr></tr>)
  $tabel_html = str_replace('<tr></tr>', '', $tabel_html);
}

// Se afiseaza tabelul obtinut
echo $tabel_html;
?>
- La fel se procedeaza cu WHILE si FOR pentru date ce sunt preluate din alta sursa (nu doar Array), cum ar fi randuri dintr-un fisier.

Exemplu cu FOREACH

- FOREACH e util pentru parcurgerea matricelor non-secventiale (cheile nu sunt numere consecutive).

<?php
// Matricea cu datele ce vor fi afisate in tabel
$aray = array('a'=>'val1', 'b'=>'val2', 3=>'val3', 'z'=>'... val_n');

// Variabila in care va fi stocat codul HTML cu tabelul
$tabel_html = '';

// Aici se precizeaza numarul de coloane care sa fie pe fiecare rand
$nr_col = 2;

// Daca matricea are cel putin un element
if (count($aray) > 0) {
  // Se creaza codul pt. inceputul tabelului HTML si al primului rand
  $tabel_html = '<table border="1"><tr>';

  // Se parcurge matricea cu FOREACH

  $i = 0;                 // Indice pt. rand nou
  foreach($aray as $key => $val) {
    // Se adauga in tabel coloanele
    $tabel_html .= '<td>' .$val. '</td>';

    $i++;                 // Se incrementeaza valoarea indicelui

    // Daca restul impartirii lui $i la numarul de coloane stabilit e 0
    // Adauga un nou rand in tabel
    if (($i % $nr_col)==0) { $tabel_html .= '</tr><tr>'; }
  }

  // Se adauga (dupa terminarea lui FOREACH) inchiderea randului si tabelului HTML
  $tabel_html .= '</tr></table>';

  // Se elimina posibil rand gol adaugat, pt. care nu au mai fost elemente pt. coloane (<tr></tr>)
  $tabel_html = str_replace('<tr></tr>', '', $tabel_html);
}

// Se afiseaza tabelul obtinut
echo $tabel_html;
?>

- Toate aceste exemple vor afisa urmatorul tabel:
val1val2
val3... val_n

2. Crearea tabelului HTML cu date dintr-o baza de date

- In general, cel mai des folosit caz este acela cand sunt selectate mai multe randuri dintr-un tabel MySQL si se doreste afisarea lor intr-un tabel HTML.
Mai jos este un exemplu general simplu pentru afisarea datelor din MySQL sub forma de tabel.
Pentru lucrul cu MySQL vedeti lectiile mai avansate, de la nr. 22-27, apoi reveniti la acest tutorial.

<?php
// Variabila in care va fi stocat codul pt. tabelul HTML
$tabel_html = '';

// Se face conectarea la MySQL si selectarea bazei de date

// Selectarea randurilor din tabelul MySQL
$cerereSQL = "SELECT * FROM `nume_tabel` WHERE `coloana`='$val'";
$rezultat = mysql_query($cerereSQL);

// Daca sunt returnate randuri de tabel
if(mysql_num_rows($rezultat) > 0) {
  // Se creaza codul pt. inceputul tabelului HTML
  $tabel_html = '<table border="1">';

  // Se scrie in bucla WHILE codul HTML pt. adaugarea DOAR a randurilor ce vor fi in tabel
  while($rand = mysql_fetch_array($rezultat)) {
    $tabel_html .= '<tr><td>' .$rand['col1']. '</td><td>' .$rand['col2']. '</td></tr>';
  }

  // Se adauga (dupa terminarea lui WHILE) inchiderea tabelului HTML
  $tabel_html .= '</table>';
}

// Se afiseaza codul tabelului HTML obtinut
echo $tabel_html;
?>

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag HTML5 defineste un text marcat, evidentiat?
<mark> <embed> <span>
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
Ce pseudo-clasa CSS defineste un stil la element cand mouse-ul e deasupra lui?
:focus :hover :active
a:hover {
  font-weight: bold;
  color: #00da01;
}
Clic pe functia ce returneaza un sir cu un numar rotunjit la x decimale.
toPrecision(x) toFixed(x) floor(x)
var num = 12.34567;
num = num.toFixed(2);
alert(num);       // 12.35
Indicati functia PHP care adauga continutul unui fisier intr-un array.
[) file() readfile()
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
var_export($arr);
Clic pe raspunsul potrivit la intrebarea: "What time is it?"
On the 7th of July 1996 It is a quarter to 5. Nice weather.
What time is it? It is a quarter to 5.
- Cat este ora? E 5 fara un sfert.
Indicati raspunsul potrivit la intrebarea: "¿Qué hora es?"
Hace buen tiempo. En el 7 de julio de 1996 Son las tres menos cuarto.
¿Qué hora es? Son las tres menos cuarto.
- Cat este ora? E 3 fara un sfert.
Creare tabel HTML cu date din Array si MySQL

Last accessed pages

  1. Comuniunile Eseniene (214)
  2. Gramatica limbii engleze - Prezentare Generala (109820)
  3. Introducere in HTML (9381)
  4. Curs HTML gratuit Tutoriale HTML5 (34581)
  5. Cursuri Limba Franceza (3819)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (2311)
  2. Prezentul simplu si continuu - Present Tense Simple and Continuous (2064)
  3. Trecutul simplu si continuu - Past Tense Simple and Continuous (1941)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (1767)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (1418)