Redakčný systém v php 04. (editovanie menu)

26.02.2002 19:38

Aby sme mohli pohodlne vymýšľať nové kategórie v menu, spravíme si skript pomocou ktorého neskôr budeme pridávať, mazať, editovať názvy kategórii v menu.

ako prvé, vytvoríme si tabuľku: create table menu ( id int(255) NOT NULL AUTO_INCREMENT PRIMARY KEY, nazov varchar(50), typ varchar(50) );id - podľa identifikačného čísla sa budeme ľahšie orientovať
nazov - do tejto bunky sa budú ukladať názvy jednotlivých kategórií v menu
typ - tu bude uložený typ položky v menu. pretože neskôr môžeme mať rovnaké názvy diskusii, rubrík článkov, linkov atď.

Pre lepšie pochopenie malý príklad:
- chceme vytvoriť rubriku \\\"php\\\" napr. na pridávanie článkov. tak názov bude: \\\"php\\\" a typ bude: napr. \\\"clanky\\\" ako som spomínal, bude to veľmi osožné hlavne v neskorších častiach. teraz si vytvoríme formulár na pridávanie jednotlivých položiek. nazveme ho addmenu.php

Ako prvé musíme však v redakčnej časti dať odkaz na tento skript. pre tých ktorým to nie je jasné, z predošlých častí, tak do skriptu menu.php pridáme riadok: <b>MENU</b><BR> <a href=\"index.php?b=addmenu\"><LI><b>edit MENU</b></a>addmenu.php <? //logické je, že menu môže editovať iba šéfredaktor, pretože potom by bol v tom chaos //preto pridáme kontrolnú štruktúru známu z predchádzajúcej časti if ($name[5]==1) { //nasleduje formulár zložený z poľa, kde vpíšeme názov novej položky a zo selectu //samozrejme môžeme ho nahradiť tiež inputom ale existuje tu potom nebezpečenstvo preklepu //takto si dopredu určíme, v čom budeme mať rôzne kategórie: boards, zone (články), news ... //opäť môžete si dať svoje, napr. links atď. echo \" <u>PRIDAT MENU</u><Br> <form name=\\\"add\\\" action=\\\"?b=addmenu\\\" method=post> <input name=\\\"nadpis\\\" type=\\\"text\\\" size=\\\"32\\\" maxlength=\\\"25\\\" ></input> <select name=\\\"typ\\\" > <option value=\\\"boards\\\">boards</option> <option value=\\\"zone\\\">zone</option> <option value=\\\"news\\\">news</option> </select><br> <input type=\\\"submit\\\" value=\\\"ODOSLI\\\"></input> </form> \"; //ak bol zadaný názov novej kategórie if ($nadpis != \"\") { //vložime ich do databázy MySQL_Query(\"insert into menu values('','$nadpis','$typ')\"); echo \" nova rubrika bola vlozena do polozky $typ<br><br>\"; } ?> //odrazu si doplníme skrip, o časť, ktorá nám bude mazať a premenovávať kategórie. <u>EDITOVAT MENU v sekciach:</u><BR><BR> <? //vypišeme odkazy na typ kategórie ktorú chceme mazať/premenovať //v tomto prípade buď na boardoch, zone (články) alebo novinky echo \"<a href=\\\"?b=addmenu&typ=boards\\\"><b> BOARDS</b></a><br>\"; echo \"<a href=\\\"?b=addmenu&typ=zone\\\"><b> ZONE</b></a><br>\"; echo \"<a href=\\\"?b=addmenu&typ=news\\\"><b> NEWS</b></a><br>\"; //kontrolná štruktúra, ktorá kontroluje či bola  zaškrtnutá možnosť mazať (výpis vid. nižšie) //ak áno, tak vymaže záznam s príslušným id if ($zmaz!=\"\") { mysql_query(\"delete from menu where id = $zmaz\"); } //kontrolná štruktúra, ktorá kontroluje či bolal zaškrtnutá možnosť premenovať (výpis vid. nižšie) //ak ano, tak premenuje (updatne) kategóriu s príslušným id if ($ren!=\"\") { mysql_query(\"update menu set nazov = \\\"$new\\\" where id = $ren\"); } //vypis jednotlivých odpovedi //táto časť skriptu sa spustí, ak klikneme na odkaz (vižšie) kde si vyberáme aký typ kategórie chceme //mazať if ($typ!=\"\") { //vyberie nám informácie o kategórii $result2 = MySql_query(\" select id,nazov,typ from menu where typ like '$typ'\"); //cyklus while vypiše všetky kategórie while ($zaklad = mysql_fetch_row($result2)){ //funkcie, ktoru sme si definovali v predchadzajúcej časti $vrch = vrch_tabulky(\"\"); echo \"$vrch\"; //tu sa vypíšu všetky kategórie (cyklus while) //do formulára, kde budú 2 checkboxy, na zaškrtnutie či chceme mazať alebo premenovávať //a do inputov sa nám vypíšu názov a typ kategórie. v inpute ich môžeme priamo upravovať //(premenovať). potom stačí iba zaškrtnúť políčko premenovať, a kliknúť na OK. //a kategóriu budeme mať premenovanú echo \"<form name=\\\"del\\\" action=\\\"?b=addmenu\\\" method=post> vymazat?&nbsp;<input class=\\\"anketa\\\" type=\\\"checkbox\\\" name=\\\"zmaz\\\" value=\\\"$zaklad[0]\\\"></input><br> premenovat?&nbsp; <input class=\\\"anketa\\\" type=\\\"checkbox\\\" name=\\\"ren\\\" value=\\\"$zaklad[0]\\\"></input>&nbsp;&nbsp; <input type=text name=new value=$zaklad[1]></input><br> <input type=\\\"submit\\\" value=\\\"&nbsp;&nbsp;OK&nbsp;&nbsp;\\\"></input> \"; echo \"</form>\"; echo \"<br>nadpis: $zaklad[1] <br>id: $zaklad[0] <br>typ: $zaklad[2]<br>\"; spodok_tabulky(); echo \"<br>\"; //koniec cyklu while } } } //keby niekto náhodou zadal odkaz rovno do prehliadača, a nie je prihlásený ako šefredaktor, tak sa //mu ukáže táto správa else {echo \"nemáte právo editovať túto sekciu\";} ?>To by bola časť, ktorá nám bude kategórie pridávať a upravovať. Ale čo skript, ktorý nám to bude zobrazovať ?

Preto sa teraz prenesieme do webovej časti, a tam, do skriptu menu.php (ktorý pripájame do index.php. pozor nemýliť so skriptom menu.php v redakčnej časti !!! )

vložíme túto časť kódu: <? /* Doplníme vrch tabuľky. Keďže v predošlej časti som ukázal ako nato, môžete si povytvárať veľa funkcií, ktoré budú vypisovať tabuľku. napr. zvlášť na menu, zvlášť na články atd. Kto číta od začiatku, vie že funkcie máme v skripte funkcie.php */ function vrch_tabulky_menu($nadpis,$bgcolor1,$bgcolor2,$bgcolor3) { echo \" <table border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"2\\\" width=\\\"100%\\\"> <tr><td valign=top width=\\\"150\\\">     <table border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\" width=\\\"100%\\\" bgcolor=\\\"$bgcolor1\\\"> <tr><td> <table width=\\\"100%\\\" border=\\\"0\\\" cellspacing=\\\"1\\\" cellpadding=\\\"3\\\"> <tr><td colspan=\\\"1\\\" bgcolor=\\\"$bgcolor3\\\"> <font size=\\\"2\\\" color=\\\"$bgcolor1\\\"><B><center>$nadpis</center></B> </td></tr><tr><td bgcolor=\\\"$bgcolor2\\\"> <font size=\\\"2\\\" >\"; } /* V samotnom skripte použijeme potom napr.: vrch_tabuľky_menu(menu,black,white,silver); samozrejme parametre môžete meniť. (farby,nadpis). teraz už však k samotnému skriptu menu.php */ ?>menu.php <? vrch_tabuľky_menu(menu,black,white,silver); //vyberieme kategórie z databázy, zoradené podľa id, kde typ = zone. teda kategórie k článkom. $k = mysql_query(\"select nazov from menu where 'zone' like typ order by id\"); //cyklom while vypíšeme všetky výsledky: while ($poleZ = mysql_fetch_row($k)) { //odstránime medzery $link = RawURLEncode($poleZ[0]); //vypíšeme odkaz. echo \" <a href=\\\"index.php?b=rubrika&zone=$link\\\"><LI><b>$poleZ[0]</b></a>\"; //ukončíme cyklus while } //doplníme ukončievacie tagy tabulky spodok_tabulky(); ?> note:
Samozrejme, odkazy môžeme pridávať aj ručne, ale pri neskoršej editácii by sme pocítili potrebu takéhoto pohodlného pridávania a mazania.mis0 truban