Autor | Zpráva | ||
---|---|---|---|
bery2 Profil |
#1 · Zasláno: 3. 2. 2014, 15:59:28
VYPSÁNÍ html tabulky ze dvou tabulek db s ověřením hodnot
Dobrý den, mám takový problémek s vytvořením tabulky: $i5="1"; while ($detail_rastru=MySQL_Fetch_Array ($ukaz_rastr)): $trida_id=$detail_rastru["id"]; $detail_rastru_trida[$trida_id]=$detail_rastru["trida"]; $detail_rastru_rychlost[$trida_id]=$detail_rastru["rychlost"]; if ($trida_id=='1') $zaznam_b=$detail_rastru_trida[$trida_id]; $zaznam_b=$detail_rastru_trida[$trida_id]; @$vysledek_cojevrastru_kontrola=mysql_query('select * from catalog_item_rastr_item where id='.$full_prijem.'', $GLOBALS["link"]); while ($zaznam_rastr_kontrola=MySQL_Fetch_Array($vysledek_cojevrastru_kontrola)) { if (!$zaznam_rastr_kontrola[$trida_id]) $zaznam_a=1; else $zaznam_a=0; if ($zaznam_rastr_kontrola[$trida_id] && $detail_rastru_rychlost[$trida_id]=='80') $vysledek_80[]= $zaznam_rastr_kontrola[$trida_id]; if ($zaznam_rastr_kontrola[$trida_id] && $detail_rastru_rychlost[$trida_id]=='90') $vysledek_90[]= $zaznam_rastr_kontrola[$trida_id]; if ($zaznam_rastr_kontrola[$trida_id] && $detail_rastru_rychlost[$trida_id]=='S') $vysledek_S[]= $zaznam_rastr_kontrola[$trida_id]; if ($zaznam_rastr_kontrola[$trida_id] && $detail_rastru_rychlost[$trida_id]=='SS') $vysledek_SS[]= $zaznam_rastr_kontrola[$trida_id]; } if ($trida_id=='1' && $zaznam_a==1) echo '<td>'.$zaznam_b.'</td>'; if ($i5=='5' && $zaznam_a==1) echo '<td>'.$zaznam_b.'</td>'; if ($i5=='5') {$i5='0';} $i5++; endwhile; echo '</tr><tr id="tr_data">'; if (!empty ($vysledek_80)) { echo '<td>80</td>'; for ($p = 0; $p < count($vysledek_80); ++$p) echo '<td>'.$vysledek_80[$p].'</td>'; echo '</tr><tr id="tr_data">'; } if (!empty ($vysledek_90)) { echo '<td>90</td>'; for ($p = 0; $p < count($vysledek_90); ++$p) echo '<td>'.$vysledek_90[$p].'</td>'; echo '</tr><tr id="tr_data">'; } if (!empty ($vysledek_S)) { echo '<td>S</td>'; for ($p = 0; $p < count($vysledek_S); ++$p) echo '<td>'.$vysledek_S[$p].'</td>'; echo '</tr><tr id="tr_data">'; } if (!empty ($vysledek_SS)) { echo '<td>SS</td>'; for ($p = 0; $p < count($vysledek_SS); ++$p) echo '<td>'.$vysledek_SS[$p].'</td>'; echo '</tr><tr>'; } echo '</tr></table></div>'; vím, že je kód napsán velmi chaoticky, ale zkouším co se dá a nedokážu přinutit data vypisovat se jak potřebuji. jedná se o to, že načítám první řádek jedné tabulky db "písmena" a ostatní data z druhé tj. čísla první řádek jsou písmena abecedy označují různá zatížení při jednotlivých rychlostech, které se udávají na začátku každého dalšího řádku hodnot.. problém je v tom, že se hlavička TABULKY V html nevypisuje podle údajů z druhé tabulky. Cyklus má zajistit to, že nalezne pod nějakým písmenem nějakou hodnotu a když ne nevypíše se písmeno vůbec a to nefunguje. Vypisuje to jak chce ((( Nevěděl by někdo jak na to |
||
Časová prodleva: 4 dny
|
|||
Tori Profil |
#2 · Zasláno: 7. 2. 2014, 09:06:37
Jakou máte strukturu tabulek? Vypadá to jako varianta této chyby, když z jedné tabulky načtete hodnoty a v druhé je používáte jako název sloupce. SQL dotaz na ř.10 může vracet více řádků výsledků, nebo jen jeden (z kódu mi to není jasné)?
„Cyklus má zajistit to, že nalezne pod nějakým písmenem nějakou hodnotu a když ne nevypíše se písmeno vůbec“ Neměla by potom podmínka (anebo přiřazení hodnot) na ř.13 být opačně? Třeba by šlo na ř.14-17 nepoužívat automatické číslování indexů pole, ale jako index použít $trida_id . Zároveň byste si někde ukládal, která ID z první tabulky se mají zobrazit v hlavičce HTML tabulky. A zobrazení tabulky by bylo až za oběma cykly - nejdřív ta ID pro hlavičku tabulky, a pak byste měl třeba něco jako:
if (!empty ($vysledek_80)) { echo '<td>80</td>'; foreach ($pismena as $pismeno) { if (isset($vysledek_80[$pismeno]) echo '<td>'.$vysledek_80[$pismeno].'</td>'; else echo '<td> </td>'; } echo '</tr><tr id="tr_data">'; } $vysledek['80'][$trida_id] = $zaznam_rastr_kontrola[$trida_id]; .
Drobnosti: podmínka na ř.6 je zbytečná, když na ř.8 je tentýž příkaz bez podmínky. Počítání každého pátého řádku se obvykle řeší operátorem modulo (= zbytek po celočíselném dělení). |
||
Časová prodleva: 10 let
|
0