Multiplicare randuri in tabel html din select mysql
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
sterica
- Mesaje:285
Multiplicare randuri in tabel html din select mysql
Salutare,
Am urmatoare variabila:
Cod: Selectaţi tot
$tbl_chest = "<table class='table table-bordered table-striped'><thead><tr><th>NUME</th>";
si urmatoarele selecturi
Cod: Selectaţi tot
$sql_intrebari = "SELECT ...";
$result_intrebari = $conn->query($sql_intrebari);
if ($result_intrebari->num_rows > 0) {
while($row = $result_intrebari->fetch_assoc()) {
$tbl_chest .= '<th>' . $row['INTREBARE'] . '</th>';
}
}
$tbl_chest .= '</tr></thead><tbody>';
$sql_personal = "SELECT ....";
$result_personal = $conn_lmd->query($sql_personal);
if ($result_personal->num_rows > 0) {
while($row = $result_personal->fetch_assoc()) {
$tbl_chest = '<tr><td>' . $row['NUME'] . ' ' . $row['PRENUME'] . '</td><td>he he</td>';
}
}
$tbl_chest .= '</tbody></table>';
echo $tbl_chest;
In forma aceasta $tbl_chest din interiorul al doilea while imi gnereaza foarte multe linii de tabel (le multipla de cateva ori bune). Ce imi cauzeaza multiplicarea aceasta
Multumesc!
MarPlo
Mesaje:4343
Salut
In codul pt adaugare randuri in tabelul html din al doilea while() lipseste tag-ul de inchidere rand (</tr>). In rest, multiplicarea poate fi de la Select-ul in mysql, daca asa e rezultatul returnat de select.
misat
Mesaje:22
Secventa de cod pe care ai publicat-o, afisa doar o frintura de tabel (deoarece in "al doilea while" de fiecare data variabilei $tbl_chest i se atribuie o valoare noua):
Cod: Selectaţi tot
<tr><td>Nume</td><td>he he</td></tr></thead><tbody>
Totusi daca ar exista concatenarea, tabelul care se obtine va fi "incorect". Pe prima linie se genereaza mai multe celule (in thead se genereaza mai multe th), iar pe urmatoarele linii ai doar o singura celula (corect ar fi sa indici atributul colspan).
Chear daca tabelul ar fi corect nu observ vreo problema care ar provoca generarea liniilor de citeva ori.
sterica
Mesaje:285
revin cu ajustarile mentionate mai sus:
Cod: Selectaţi tot
$tbl_chest = "<table class='table table-bordered table-striped'><thead><tr><th>NUME</th>";
din sql, SELECT cu primul while, imi sunt generate 7 randuri
Cod: Selectaţi tot
while($row = $result_intrebari->fetch_assoc()) {
$tbl_chest .= '<th>' . $row['INTREBARE'] . '</th>';
}
al doilea while (aici daca inlocuiesc variabila cu echo, imi sunt generate corect liniile din sql)
Cod: Selectaţi tot
while($row = $result_personal->fetch_assoc()) {
$tbl_chest .= '<tr><td>' . $row['NUME'] . ' ' . $row['PRENUME'] . '</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td></tr>';
}
Cod: Selectaţi tot
$tbl_chest .= '</tbody></table>';
echo $tbl_chest;
Cand se executa codul in al doilea while valorile sunt multiplicate de 8 ori.
Multumesc!
misat
Mesaje:22
Nu exista un motiv din care s-ar multiplica liniile care se genereaza in tabel.
Codul de mai jos genereaza un tabel corect:
Cod: Selectaţi tot
$tbl_chest = "<table class='table table-bordered table-striped'><thead><tr><th>NUME</th>";
$result = [
['INTREBARE'=>'i1'],
['INTREBARE'=>'i2'],
['INTREBARE'=>'i3'],
['INTREBARE'=>'i4'],
['INTREBARE'=>'i5'],
['INTREBARE'=>'i6'],
['INTREBARE'=>'i7'],
];
$i_count = count($result);
foreach ($result as $row) {
$tbl_chest .= '<th>' . $row['INTREBARE'] . '</th>';
}
$result = [
['NUME' => 'Popescu', 'PRENUME' => 'Ion'],
['NUME' => 'Popescu', 'PRENUME' => 'Ion'],
['NUME' => 'Popescu', 'PRENUME' => 'Ion'],
['NUME' => 'Popescu', 'PRENUME' => 'Ion'],
['NUME' => 'Popescu', 'PRENUME' => 'Ion'],
];
$_td = '';
for ($i = 0; $i < $i_count; ++$i) {
$_td .= '<td>'.($i+1).'</td>';
}
foreach ($result as $row) {
$tbl_chest .= '<tr><td>' . $row['NUME'] . ' ' . $row['PRENUME'] . '</td>' . $_td . '</tr>';
}
$tbl_chest .= '</tbody></table>';
echo $tbl_chest;
Unicul lucru care poate provoca multiplicarea unei linii de citeva ori este datele din db. Esti sigur ca in db nu ai un nume repetat de mai multe ori?
Sigur nu se mai executa alt cod pentru generarea tabelului?
sterica
Mesaje:285
@misat, intredevar ai avut dreptate tbody era multiplicat din cauza unui script pe care il aveam in fisier.
Cod: Selectaţi tot
<script>
// adding filler rows
for(var i = 0; i < 3; i++){
$('tbody tr').clone().appendTo('table');
}
var offset = $('.navbar').height();
$("html:not(.legacy) table").stickyTableHeaders({fixedOffset: offset});
</script>
Multumesc de ajutor!
Subiecte similare
- Valoarea id-ului din HTML atribuită unei variabile php
PHP - MySQL - XML
Primul mesaj
Încerc să extrag valorile id= min5 , id= max5 si să le pun în $_GET $_GET fara trimitere în altă pagină
cum aș putea proceda?
<div class=...
Ultimul mesaj
Nu prea inteleg ce vrei sa faci.
Codul php se executa pe server inainte de a fi pagina cu codul html si javascript.
In php, valorile pentru...
- Setare valori din array in select tag
JavaScript - jQuery - Ajax
Primul mesaj
Salut am un array cu orele de functionare
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Ultimul mesaj
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...