Portál AbcLinuxu, 30. dubna 2025 21:23

Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
xxx avatar 11.1.2007 13:13 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: php menu
Odpovědět | Sbalit | Link | Blokovat | Admin
V php se nevyznam, ale v ty db mas redundanci. Ve sloupci url mas com=article, pricemz tam mas pak jeste sloupec type.
Please rise for the Futurama theme song.
11.1.2007 13:43 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: php menu
Mám to tam proto, abych v jiné částí kódu nemusel parsovat to url, kvůli zjištění typu komponenty.
xxx avatar 11.1.2007 13:58 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: php menu
Ale to url, lze cele sestavit z tech ostatnich sloupcu.
Please rise for the Futurama theme song.
xxx avatar 11.1.2007 14:08 xxx | skóre: 42 | blog: Na Kafíčko
Rozbalit Rozbalit vše Re: php menu
Teda ne uplne cele, ale cast. Tudiz jsem to myslel tak, ze by ten dotaz mel byt spise SELECT CONCAT('com=',CONCAT(type,zbytekurl)) FROM tabulka. (Nevim jak presne se ty sloupce a tabulka jmenuji). Protoze si predstav, ze zmenis typ nektere polozky.
Please rise for the Futurama theme song.
11.1.2007 14:30 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: php menu
select 'com=' || type || zbytekurl from tabulka

btw, v tom prípade by mal celú url skladať zo dát (a pridať stĺpce)
11.1.2007 13:45 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: php menu
Spíš se mi zdá, že je tam zbytečná položka level.
11.1.2007 18:57 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: php menu
Proč sis vytvořil nový profil?
11.1.2007 19:02 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: php menu
Protože jsem blázen. Na druhou stranu si to uvědomuju, takže možná blázen nejsem. Asi jenom chvilkama.
11.1.2007 19:19 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: php menu
Hmm zrovna tebe jsem za blázna nikdy nepovažoval, ale co se dá dělat. :-) Kdyby si chtěl pokecat napiš na jabber. ;-)
12.1.2007 11:36 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: php menu
Musím říct že mě od tebe nic tak nepobavilo jako tohle. Fakt to cením.
11.1.2007 17:02 Goffix | skóre: 25 | blog: Powered by ArchLinux | Hradec Králové
Rozbalit Rozbalit vše Re: php menu
Myslim, ze celej ten sloupec s URL je takovej divnej a zbytecnej. Co takhle ukladat ten typ, cislo clanku a popripade dalsi veci ze kterych se bude skladat url, kazdou informaci do jednoho sloupce. URL pak z toho jednoduse poskladas.

Jo a btw, zajimalo by me co sledujes napriklad tim com=article&task=listp&cat=1&cat=6. Promenna cat bude mit ve vysledku stejne hodnotu 6. Pokud by si to chtel cpat do pole, tak by si to musel oznacit v url jako cat[].
11.1.2007 17:17 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: php menu
S tím jsem si pohrál a neberu tu url přes $_GET["cat"], ale přes $_SERVER["REQUEST_URI"] a to pársuju pomocí tohoto kódu:
case "lists" :
		$url= clean($_SERVER["REQUEST_URI"]);
		$url= ereg_replace("(.*)(\?)", "", $url);
		$cats= array ();
		$cats= split("&", $url);
		$sql= "SELECT cat_id FROM category";
		$rows= dbcon($sql);
		foreach ($rows as $row) {
			if (in_array("cat=".$row["cat_id"], $cats)) {
				$sql1= "SELECT con_id, title, pretxt FROM content WHERE state='1' AND cat_id=\"".$row["cat_id"]."\" ORDER BY con_id DESC";
				$rows1= dbcon($sql1);
				foreach ($rows1 as $row1) {
					echo "<h4><a href=\"index.php?com=article&task=view&id=".$row1["con_id"]."\">".$row1["title"]."</a></h4>";
				}
			}
		}
		break;
Pokud by si to chtel cpat do pole, tak by si to musel oznacit v url jako cat[].
To by mě docela zajímalo jak, abych to nemusel řešit tím složitým procházením URL, protože jak dát do url a do databáze PHP pole, na to jsem ještě nepřišel.
11.1.2007 21:20 Goffix | skóre: 25 | blog: Powered by ArchLinux | Hradec Králové
Rozbalit Rozbalit vše Re: php menu
To je prasarna ;-).

Co jak? Kdyz zadas v URL neco jako index.php?test[]=a&test[]=b, tak ti v php vznikne pole $test = array('a', b'). Proc to cpat do databaze nechapu, ale pole tam nacpes napriklad pres funkci serialize.

Jo a neodpovedel jsi proc cpes do DB tu celou URL a ne jen ty casti jak jsem napsal? Tohle je fakt hrozny a do budoucna spatne pouzitelny.
11.1.2007 22:30 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: php menu
S tou celou url v DB jsem se inspiroval u Joomly, ve které mám svoje stránky. ;-)

A k poli v DB, to znamená, že pro veřejnou část, kde to mám v URL jako test[]=a&test[]=b jsem to teda vyřešil přes $_GET["test"].

Ale jak v admin části, abych to pole nemusel pársovat čísla kategorií jako v příspěvku výše?

Mám použít (un)serialize, nebo existuje nějaká možnost jak ze zápisu test[]=a&test[]=b zpětně zrekonstruovat pole?
12.1.2007 17:23 Goffix | skóre: 25 | blog: Powered by ArchLinux | Hradec Králové
Rozbalit Rozbalit vše Re: php menu
Ja vubec nevim vo cem to tu tocis :-)

Ja myslel, ze kdyz zacinas, tak chces rady? To, ze jsi se inspiroval v nejake jine aplikaci neznamena, ze je to nejlepsi postup. Furt nechapu co se snazis cpat za blbosti do DB. Kdyby si to udelal, jak jsem psal ja i jini vyse, tak muzes nejaky parsovani vyhodit a mas hned zivot jedndussi ;-).
11.1.2007 14:39 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: php menu
Odpovědět | Sbalit | Link | Blokovat | Admin
>nešlo by to zjednodušiť? napr niečo ako:
                  
function showmenu () {
    $sql= "SELECT * FROM menu ORDER BY parent, position, menu_id";
    $menu = dbcon($sql);

    $menu_def = array (0 => array ('-children' => array ()));

    foreach ($menu as $row) {
        $menu_def[ $row['menu_id'] ] = $row;
        if (! array_key_exists ('-children', $menu_def[ $row['parent'] ]))
            $menu_def[ $row['parent'] ]['-children'] = array ();
        array_push ($menu_def[ $row['parent'] ]['-children'], $row['menu_id']);
    }

    echo '<table>';
    menu_rec ($menu_def, 0);
    echo '</table>';
}

function menu_rec ($menu_def, $id) {
    $entry = $menu_def[ $id ];

    if (array_key_exists ('title', $entry)) {
        echo '<tr><td>';
        echo '<a href="index.php?' . $entry['url'] . '">' . $entry['title'] . '</a>';
        echo '</td></tr>';
        echo "\n";
    }

    if (array_key_exists ('-children', $entry)) {
        foreach ($entry['-children'] as $next_id) {
            menu_rec ($menu_def, $next_id);
        }
    }
}
php nemám, ani mať nebudem, možno som ani pôvodné zadanie správne neprelúštil
btw, tabuľky? fuj
11.1.2007 19:22 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: php menu
Odpovědět | Sbalit | Link | Blokovat | Admin
Drobná poznámka – zbytečně používáš double quoted řetězce na místech, kde je vůbec není nutné parsovat (indexy polí, SQL,…). Viz http://www.php.net/manual/en/language.types.string.php.
11.1.2007 19:24 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: php menu
A ještě rýpnutí – skončili ;-)
Daniel Kvasnička ml. avatar 11.1.2007 22:26 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
Rozbalit Rozbalit vše Re: php menu
Odpovědět | Sbalit | Link | Blokovat | Admin
Uz jsem tady i jinde videl par uchylnych pripadu pouziti databaze, ale co je moc, to je moc. Tohle je snad ten nejtypictejsi pripad pro pouziti XML sitemapy a renderovani menu pomoci XSLT. Nechapu k cemu takovahle monstrozni konstrukce...
FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
11.1.2007 22:38 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: php menu
S programováním PHP+SQL teprve začínám (toto je moje první větší aplikaceú a co se týče mých informací o PHP, tak ty pocházejí z PHP a MySQL:Vytváříme webové databázové aplikace od O'REILLY a Computer Pressu a tady toto programuji, abych se v PHP naučil dělat.;-)

Kde bych teda mohl ty informace o XML sitemapách a renderování pomocí XSLT mohl najít? Stačí jenom nějaký link na nasměrování. A šlo by to použít i pro diskusní fórum s thready(které si taky chci vyzkoušet udělat)? Protože jsem tuto "monstrózní" konstrukci použil, že se bude hodit i pro fórum.
No bud si muzes vytvorit svuj XML format pro sitemapu nebo pouzit (resp. rozsirit) oficialni XML Sitemaps protokol od Google, MS a Yahoo (ktery bys stejne pouzivat mel -- tedy pro prezentace, ktere chces, aby Google bral na vedomi). Nicmene ten googli neni tak uplne delany na generovani menu -- osobne ho pouzivam jen pro google.

O zadnem konkretnim clanku konkretne o renderovani XML sitemap pomoci XSLT nevim, ale pres Google urcite najdes tuny dobrych tutorialu o XSLT (obecne moc dobry server na veci kolem XML je Zvon.org a tamni paradni XSLT reference). Zasadni vyhoda XML v tomto pripade je schopnost zaznamenat tu hierarchicnost (to co ty zaznamenavas polem "parent").
FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
Josef Kufner avatar 13.1.2007 15:39 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: php menu
Pak se nabízí ještě jedna značně primitivní, ale pravděpodobně naprosto dostačující možnost:
$main_menu = array (
   'neco.php?bla+bla' => 'Nadpis',
   array(
      'bla.php' => 'Podnadpis',
      ...
   ),
   'dalsi.php' => Jiny nadpis,
   ...
);
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.