Autor Zpráva
Libor Jabor
Profil *
Zdravím,

tady jsem našel script na drobečkovou navigaci http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=64114&page=1

/* vytvorime si zkusebni promenne */
$url = "/prvni/druhe/treti/ctvrte/pate/seste/sedme/";
$nazev = array('První', 'Druhé', 'Třetí', 'Čtvrté', 'Páté', 'Šesté', 'Sedmé');

$navigace = "Slovo:\n";
/* odstranime prvni a posledni lomitko a vytvorime dobrecky */
$drobecky = explode("/", substr($url, 1, -1));
/* spocitame vyskyt lomitka a odecteme prvni a posledni lomitko */
$pocet = substr_count($url, '/')-2;

/* vytvorime nove pole */
$pole = array();
foreach($drobecky as $klic => $drobek){
/* ulozime $drobek do pole */
$pole[] = $drobek;
/* pokud se $klic rovna $pocet, tak vytvorit prosty text, pokud se nerovna, tak odkaz */
if($klic == $pocet){
$navigace .= "<b>$nazev[$klic]</b>\n";
} else {
$navigace .= "<a href='http://".$_SERVER['SERVER_NAME']."/".implode("/", $pole)."/'>$nazev[$klic]</a>\n";
$navigace .= "&gt;\n";
}
}
echo $navigace;



Problém je v tom, aby z toho pole $nazev tahal názvy ne podle pořadí ale podle toho textu

$url = "/prvni/druhe/treti/ctvrte/pate/seste/sedme/";
$nazev = array('První', 'Druhé', 'Třetí', 'Čtvrté', 'Páté', 'Šesté', 'Sedmé');


asi nějak takto

$nazev = array(
     'prvni' => 'První',
     'druhe' => 'Druhé',
     'treti' => 'Třetí',
     'ctvrte' => 'Čtvrté',
     'pate' => 'Páté',
     'seste' => 'Šesté',
     'sedme' => 'Sedmé'
     );


jenže se mi to vůbec nedaří rozchodit. Neporadí nějaký profík? Díky za obětavost ;)
joe
Profil
Takhle to bude asi jednodušší

$urls = array(
	'prvni' => 'První',
	'druhe' => 'Druhé',
	'treti' => 'Třetí',
	'ctvrte' => 'Čtvrté',
	'pate' => 'Páté',
	'seste' => 'Šesté',
	'sedme' => 'Sedmé',
);

$counter = 0;
$count = count($urls) - 1;

echo 'Slovo: ';
foreach($urls as $url => $title) {
	if($counter++ !== $count) {
		echo '<a href="' . $url . '">' . $title . '</a> > ';
	} else {
		echo '<b>' . $title . '</b>';
	}
}
Libor Jabor
Profil *
joe:
Jednodušší to je, jen škoda, že to nefunguje :( Nebo jsem to nepochopil, odkud bere adresu(url)? Proč počítáš $urls?

Díky
joe
Profil
Libor Jabor:
Jednodušší to je, jen škoda, že to nefunguje
Funguje.

odkud bere adresu(url)?
Pole $urls je složeno z klíče (URL adresa) a hodnoty, což je titulek odkazu.
Libor Jabor
Profil *
joe:
Pole $urls je složeno z klíče (URL adresa) a hodnoty, což je titulek odkazu

Jo? a jak pozná co jsem zadal za adresu do prohlížeče?
motik
Profil
Libor Jabor:
a co kdybys něco zkusil vytvořit sám..?!

kdyz dáš
print_r($_SERVER); 
tak bys tam měl najít tu $url.
Potom si z toho udělej pole $drobecky pomocí explode() viz. např. #1. Vytvoř si to pole názvů
$nazev = array('jedna'=>'jednička',....);

a potom zkus projít pole $drobecky pomocí foreach().
foreach ($drobecky as $key => $val) {
  echo $key . " - " . $val . "<br>";
  echo $nazev[$val] . "<br>";
}
joe
Profil
Libor Jabor:
Jo? a jak pozná co jsem zadal za adresu do prohlížeče?

To pole si musíš naplnit sám, proč by to co společného s adresou?

Na adrese example.com/auta

může být navigace: Homepage -> Auta

Na adrese example.com/nahradni-dily

může být navigace: Homepage -> Auta -> náhradní díly
Libor Jabor
Profil *
joe:
To pole si musíš naplnit sám, proč by to co společného s adresou?
Ale jaké pole? pořád nevím kde to bude hledat, v jaké proměnné?
Davex
Profil
Libor Jabor:
Tento kód řeší pouze finální výpis drobečků. Nezabývá se získáním adresy a textu popisků. Jinak řečeno se musí pole $url a $nazev naplnit vhodnými hodnotami někde jinde. Zde jsou pouze zkušební hodnoty.
peta
Profil
Libor Jabor: Funkcni reseni by mela byt druha cast tveho dotazu + odpoved joe. S tim, ze tam schazi to parsovani url do pole, radek 1-10 prvni casti dotazu. Ale oni vysledek po explode ulozili do $drobecky, joe to pojmenoval ale $url. Cili staci $url v jeho kodu prepsat na drobecky a pridat tu prvni cast.

/* vytvorime si zkusebni promenne */
$url = "/prvni/druhe/treti/ctvrte/pate/seste/sedme/";
$nazev = array('První', 'Druhé', 'Třetí', 'Čtvrté', 'Páté', 'Šesté', 'Sedmé');

Zkusebni jsou od toho, ze jsou pro priklad. Nikde se nic hledat nebude, kdyz mu nenapises program, aby neco hledal.
$navigace = "Slovo:\n";
/* odstranime prvni a posledni lomitko a vytvorime dobrecky */
$drobecky = explode("/", substr($url, 1, -1));
/* spocitame vyskyt lomitka a odecteme prvni a posledni lomitko */
$pocet = substr_count($url, '/')-2;

Nevim, ktery placal to tvoril, ale napada me otazka, proc pocita pocet sloupcu z puvodniho stringu $url a pak odecita 2, kdyz pres count($drobecky) by dostal presne vysledek? A pak, proc tam cpe do html kodu nejake bold a neresi to pres css? css ma las-child, first-child, nth-child, pripadne by se tam dali dat class. Misto toho zatezuje cyklus ifem.


Z tve reakce clovek nabyva dojmu (ani jsi se neobtezoval pochopit princip prikladu 1 ani prikladu joe, nevim, kde jsi vycaroval to dvourozmerne pole, asi na jinem foru), udelejte mi vsechno zadarmo, ja vas jen zaukoluji a pak schrabnu od zakaznika 100.000. Coz tu lidi nemaji moc radi.
joe
Profil
peta:
Ta podmínka tam zatěžuje asi minimálně. Tučné proto, protože bez CSS to nebude vidět ;)

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:

0