Autor Zpráva
novacek90
Profil
Ahoj,
mám dotaz / problém.

chtěl bych zjišťovat počet položek v menu a dle toho vytvořit seznam select.
Snažím se totiž vytvořit vlastní CMS (redakční systém). Zpočátku jen editace stránek, tvorba stránek a jejich mazání.
Scripty pro editaci jsem si již napsal a fungují vpořádku teď mi jde o to, že pro výběr stránek, které chci editovat podle selectu viz. kód 1

kód 1

<form action="administrace/zpracuj.php" method="post" name="vyber" > 
    <fieldset>
        <legend>Vyber stránku k administraci</legend>
      <select name="stranka" size="1">
        <option value="index">index
        <option value="podstranka">podstranka
      </select>
      <input type="submit" name="odeslat" value="Vyber"> 
    </fieldset>   
</form>

    
kód menu

  <menu>
      <ul>
        <li><a href="/">Index</a></li>     
        <li><a href="/podstranka">Podstranka</a></li>
      </ul>
    </menu>

si ten select seznam musím napsat sám, ale jelikož by to měl být CMS, tak bych to chtěl vytvářet automaticky.
Dokázal jsem si to generovávat tak, že jsem měl menu v db a pak si select seznam vytvářel stejně jako menu, ale chtěl bych aby nebyl CMS závislý na db.

Teď akorát nevím jak mám začít jesli to vytvořit v PHP nebo JS.
Mohl by mě někdo prosím popostrčit? Nevím jak začít postupovat jestli si to menu nějak načíst do mezipaměti, při tom bych do menu dal, že každá položka by měla vlastní proměnnou a tou bych poté naplňoval v selectu options.

Doufám že mě někdo pochopil nevěděl jsem jak to popsat
Předem díky za rady
scheras
Profil *
S načtením do paměti je velký problém, který se obvykle řeší právě databázemi. Nevim z jakého důvodu je nechcete používat, ale račte si povšimnout, že db používají všechny majoritně používané CMS. Ale k Vašem dotazu. Napadá mě možnost ukládat si data do textových souborů, čímž odpadne nutnost používat databáze. Je ovšem potřeba ošetřit přístup k těmto souborům.
novacek90
Profil
Vím že majorita CMS používá db ale nechci používat db jelikož je podle mě třeba více místa na serveru a je tím více zatěžován, ale je to asi věc názoru. Já bych chtěl vytvořit CMS, který by nezatěžoval server tudíž aby byl malý a nebylo potřeba db.

Vím že se to kvůli tomu řeší databázema a proto se ptám zde jestli někdo neví o nějakém jednoduchém způsobu, abych nemusel použít db.
tiso
Profil
novacek90: skús INI súbory.
user243
Profil
jestli tomu dobře rozumím, tak jde o to, mít select se všemi potřebnými stránkami k editaci...
potom stačí napsat cyklus, který potřebné stránky najde a vypíše jako option;
novacek90
Profil
user243:
bnými stránkami k editaci...
potom stačí napsat cyklus, který potřebné strá

jj něco takového jsem myslel

a nevěděl bys jak zhruba by se to dalo udělat?, nebo nemáš náhodou nějaký odkaz s postupem??
user243
Profil
třeba takto
Monkeys
Profil *
novacek90:

Ci budes citat data z databazi alebo z textoveho suboru je uplne jedno. Aj tak aj tak su obydva umiestnene na serveri. Jeden poskytovatel hostingu na SR dava neobmedzenu databazu uplne zadarmo .

M.
Micruss
Profil
Zkus todle buď scandir(); a nebo glob();

<select>
<?php
foreach (scandir("") as $filename) 
{
   echo ' <option value="'.$filename.'">'.$filename.'</option>';
}
?>
</select>



<?php
foreach (glob("*.*") as $filename) 
{
     echo ' <option value="'.$filename.'">'.$filename.'</option>';
}
?>
novacek90
Profil
Monkeys:
Vím, že je to asi jedno z čeho to budu číst, ale přeci jen proč využívat výkon serveru na PHP a zároveň MySQL, když může využívat jen PHP a dle mého je tady hlavně úspora místa na serveru. Beru to například z vlastní zkušenosti, kdy mám na notebooku, kde pracuju Apache, MySQL, e-mail server. Dle mého je lepší mít míň, s tím že to zbylé místo můžu využít jinak. Někdo by mohl říct, že na serveru je místa dost, ale já jen dle mého rozumu si to myslím takhle, ale to je debata asi do jiného tématu jestli použít "souborový" / databázový CMS.


Micruss:
Díky za ukázku kódu ještě než jsem si přečetl tvůj příspěvek tak jsem si ten globe našel zdá se mi vhodný.

<?php
foreach (glob("web/obsah/*.html") as $filename) {
    echo "<option value='$filename'>$filename</option>";
}
?>

Teď se snažím vyřešit, aby mi to vypsalo jen tu hvězdičku tedy jen ten název toho souboru, jelikož nyní mi to vypíše např.: web/obsah/index.html tudíž teď aby mi to vypsalo jen index nebo kontak atd.
Micruss
Profil
No teď mě napadá přes explode('/', $filename);
$nazev = explode('/', $filename);

echo "<option value='$filename'>$nazev[2]</option>";
Tori
Profil
novacek90:
nyní mi to vypíše např.: web/obsah/index.html tudíž teď aby mi to vypsalo jen index
basename
novacek90
Profil
Tak jsem to vyřešil takhle:

<?php
foreach (glob("web/obsah/*.html") as $filename) {
echo "<option value='".basename("$filename", ".html")."'>".basename("$filename", ".html")."</option>";
}
?>

Díky všem za rady jsem zase o něco chytřejší ;)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: