ugrás a tartalomhoz

Táblázat generálása PHP tömbből

kalamona · 2006. Szep. 13. (Sze), 13.03
sziasztok!

Arra gondoltam tömbből táblázatot generáló függvényt készítek.
genHtmlTable($data,$parameter)
az adatszerkezet a követező:

$data = 
array ('headerrows'=>array("nyelv","idén","tavaly"),
       'datarows'=>  array("PHP",  "12%", "20%"),
                     array("PERL", "30%", "80%"),
                     array(".NET", "22%", "40%"),
                     array("JS",   "42%", "30%"),
                     array("JSP",  "23%", "60%")),
       'footerrows'=>array()
      );


$parameter = 
array ('table'=>'class="commontable"',
       'headerrows'=>'style="BACKGROUND:#AAA7AB;COLOR:#222303;"',
       'datarows'=>  array('style="BACKGROUND:#DCC7AB;COLOR:#5B0303;"',
                           'style="BACKGROUND:#AAC1AB;COLOR:#AB0203;"',
                           'style="BACKGROUND:#DAC2AB;COLOR:#110303;"'
                     ),
                     '2#'=>'style="BACKGROUND:#4C474B;COLOR:#345303;"',
                     '4#'=>'style="BACKGROUND:#33216B;COLOR:#770303;"',
                     array('style="BACKGROUND:#AA1235;COLOR:#4B0303;"',
                           'style="BACKGROUND:#1AC1AB;COLOR:#AB0203;"',
                           'style="BACKGROUND:#DAC2AB;COLOR:#110303;"'
                     ),
                     'style="BACKGROUND:#DCC7AB;COLOR:#5B0303;"'
       'footerrows'=>array()
      );

)
minden tábla adatai 3 részre oszlanak fejléc, torzsrész, lábléc. Ezek mindegyike sorokat tartalmaz, azok pedig mezőket. a rugalmasság miatt a fejlécrész és az adatrész is több sornyi lehet.
Most ugrik a medve a vízbe:
A $parameter tomb megfeletethető az adatok tömbnek, arra szolgál hogy <table $param>, <tr $param>, <td $param> -szerűen bármilyen paraméterrel el lehessen látni bármelyik sort, bármelyik cellát. Ez opcionális lenne, ahol a megfeleltetendő elem nem létezik a $parameter tömbben, ott az adott rész nem lesz paraméterezve ilyenkor például örökölheti a "fölötte" lévők stílusbeállításait stb.
Az a célom, hogy ilyeneket mondhassak:

$parameter['datarows'][4][7]='border:#FFFFFF 1px solid;';
// ennek hatására a negyedik sor 7. cellája keretet kap. az adott <td> -t
// paraméterezi

$parameter['datarows'][7]='style="border:#FFFFFF 1px solid;"';
// a 7. sor kap keretet (figyeli a fv, hogy nem tomb, hanem string van-e)
// ilyenkor a sor <tr> tag-ébe ez az infó kerülne, ez határozná meg a sor / // egyedi tulajdonságait

$parameter['datarows'][19]['tr']='style="border:#FFFFFF 1px solid;"';
$parameter['datarows'][19][3]='style="background:#FF0000;"';
// ez a két sora 19. sort allitja keretesre és 3. cellát még be is szinezi
na most jön a huncutság:
Tudna még egy olyan apróságot a fv, hogyha az tömbkulcs nem numerikus érték lenne hanem egy ilyen formátumú adat "3#" akkor ugy értelmezné, hogy minden 3. sorra vonatkozik a formázás.

$parameter['datarows']['2#']['tr']='style="background:#FF0000;"';
$parameter['datarows']['4#']['tr']='style="background:#00FF00;"';
// minden második sor piros színű, minden 4. sor sárga
egy ilyen fv-el nagyjából a világ összes táblázatát elő tudnám állítani.

Első kérdés: hogyan lehet egy tömböt kulcsok szerint úgy rendezni, hogy a numerikus értékek legyen elöl 0-tól indulva, a '6#' jellegű stringek pedig a végén sorakozzanak?

Második kérdés: Nem hülyeség ez az egész ötlet úgy ahogy van? Nem bonyolítom túl? Hogyan csináljam helyette?

Köszi:)
 
1

Rendezés

csla · 2006. Szep. 13. (Sze), 14.10
Azt mondom, mivel Te találod ki a működést, fordítsd meg, és legyen úgy, hogy '#6'.
5

azért került a végére...

kalamona · 2006. Szep. 13. (Sze), 14.58
...mert spóroltam azon, hogy így közvetlen tudom számmá konvertálni. :) sokat gyorsitott, igy maradtam enné a megoldásnál.
"6#" az simán 6-ossá alakul tipuskonverziokor. úgy szinez a fv-em hogy az aktuális sorszámmal maradékos osztást végez.
if ($sorszam % $szinezni==0) {//akkor szinezuk}
2

HTML vs. PHP vs. CSS

TeeCee · 2006. Szep. 13. (Sze), 14.23
első kérdés:
a ksort alkalmas kulcs szerinti rendezésre

második kérdés:
Nos... Biztos jó, de nem értem, miért is.
Mi az előnye, hogy PHP-ból megmondod, hogy egy táblázat hogy nézzen ki?
SzVSz a PHP-val gyártasz egy táblázatot HTML-ben, a kinézetét/felépítését/struktúráját úgyis tudod előre, így könnyen megformázhatod CSS-sel is. Ráadásul azt pont ilyenre találták ki...
A mostanság ajánlott technika: szerveroldalon (PHPval) adatokat állítasz elő, a sablonkezelőddel (SMARTY) előállítod az adatokból a kívánt kimenetet, és CSS-sel megformázod a kinézetet. (persze mindenhol lehetnek kivételek, én pl. a formgenerátoromban nem használok smartyt, de pl. a formázás itt is CSS-re épít)
Én egy ideje nem csináltam HTML-tábla gyártást PHPból, inkább smarty-nak adtam át az adatokat és ott beleraktam a megfelelő helyre.
Smarty-val szépen lehet pl. minden X-edik sort színezni (cycle, ill cycle+assign)
Ha szinte minden cellát más-más formázással szeretnél, akkor lehet nekik #cella_12diksor_15dikcella formátumban id-t adni, de ha csak néhánynak, akkor esetleg egy tömbben tárolhatod, hogy hanyadik sor, hanyadik cellájának szertnél, esetleg milyen) id-t adni, szintén smarty-ból kinyomhatod. Vagy akár beleírathatod a style-t is, ha úgy tartja kedved.

Így elsőre ennyi :)
3

formázni php-ből...

kalamona · 2006. Szep. 13. (Sze), 14.51
Főleg azért találtam ki ezt az egész kócerájt, mert szükségem van arra, hogy formázzam a táblázat bizonyos sorait, celláit mindenféle dologtól függően. :)
Például bizonyos értékek esetén máshogy kell megjelennie stb.
CSS-t használok a háttérben, de például meg szeretném mondani, hogy melyik class-ba tartozzon az adott tábla. Mindeképpen kell php, ahhoz is amit mondtál... ott is csak tömbbe rakom bele az infót.
Azt hizsem más szemlélettel közelitettem :)
Smarty-t csak kicsit ismerem. Iyeneket lehet vele csinálni?? A táblázatot is ő generálja? hogyan működik?
4

ksort

kalamona · 2006. Szep. 13. (Sze), 14.53
a ksort-ot megtaláltam, de ha "6#"-ot talál akkor azt a 6-os és 7-es közé illeszti, nekem olyan kell ami minden nem numerikus indexet a tömb végére pakol.
6

xml + xsl + css

toxin · 2006. Szep. 13. (Sze), 15.40
szvsz velük a legkönyebb, xsl kellőképp rugalmas ahhoz (mint kvázi sablonkezelőnyelv), hogy a táblázat kialakítás végletekig leegyszerűsödjön

minta itt : http://weblabor.hu/blog/20060524/ajax-fejlesztes#comment-28201

ill http://www.w3schools.com/xsl/default.asp

php -val lehet az xml-t generálgatni, rendezni ha erre van szükség ill. az xsl-t is természetesen, ekkor a táblakialakítás válik dinamikussá, css-el meg az egész szinezhető :)

üdv t
7

xsl-ben nem vagyok rutinos

kalamona · 2006. Szep. 13. (Sze), 18.04
hogyan "működik" az xsl? miben hasonlít a css-re és miben más? a smarty xsl-t használ? miért csak "kvázi" sablonkezelőnyelv? xsl-hez xml-ben kell csinálnom az oldalt, igaz? xhtml is jó?