Autor | Zpráva | ||
---|---|---|---|
leonek Profil |
#1 · Zasláno: 16. 3. 2015, 13:58:26
Dobrý den
V mém administračním systému jsem udělal při výpisu z DB funkci, která, ke každému záznamu s unikátním počátečním písmenem abecedy přidá id='písmenoAbecedy'. Poté jsem vytvořil <select>, který volá JS funkci, která po zvoleném písmenu přidá do URL písmeno ('neco.cz/index.php#C') a tím mne na něj přesune. Jenomže to funguje jen do P!! Dál i když jsou id správně přidělena to prostě nejde. Zde jsou kódy: <script type="text/JavaScript"> function pismeno(to){ hodnota = to.options[to.selectedIndex].value; window.location.hash = "#"+hodnota; } </script> <select name=pismeno onchange="pismeno(this);"><option value=A>A</option><option value=B>B</option><option value=C>C</option><option value=D>D</option><option value=E>E</option><option value=F>F</option><option value=G>G</option><option value=H>H</option><option value=I>I</option><option value=J>J</option><option value=K>K</option><option value=L>L</option><option value=M>M</option><option value=N>N</option><option value=O>O</option><option value=P>P</option><option value=Q>Q</option><option value=R>R</option><option value=S>S</option><option value=T>T</option><option value=U>U</option><option value=V>V</option><option value=W>W</option><option value=X>X</option><option value=Y>Y</option><option value=Z>Z</option></select> |
||
Keeehi Profil |
#2 · Zasláno: 16. 3. 2015, 14:05:46
leonek:
Není důvod pro to, aby to nefungovalo. Prosím o odkaz na živou ukázku. |
||
juriad Profil |
leonek:
Mě to funguje: ukázka |
||
bestik_63 Profil |
#4 · Zasláno: 16. 3. 2015, 14:17:06
Pokud pod tento kód vložím
<a href="" name="A">A</a> od A po Z tak mi to funguje.
|
||
leonek Profil |
#5 · Zasláno: 16. 3. 2015, 14:34:03
Chvilku to trvalo než jsem to přepsal do živé ukázky:
ZDE |
||
juriad Profil |
leonek:
Ale ty tam nikde nemáš id="R" .
Porovnej: document.getElementById('P'); // div document.getElementById('R'); // null Problém tedy bude spíš se skriptem, který přiřazuje ta id. |
||
leonek Profil |
Aha....
To dělám, když procházím DB takto: $abeceda = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); while( $novy1 = DB ){ if(substr($novy1["nazev"], 0, 1) == $abeceda[$i]){ $vlozitkrizek = "id=".$abeceda[$i]; $i += 1; } //vypisu k pismenu } Nějak mu tam vadí Q, tak jsem ho vyndal z abecedy a funguje to. Jen se pořád nepřiřazuje Z a to bude asi tím, že je hned po W, ale nevim proč? Vyzkoušejte: ZDE |
||
Keeehi Profil |
leonek:
Pěkné, ale nebezpečné. Pokud bude ve výpisu náhodou chybět nějaké písmeno (třeba zrovna to Q), tak budeš mít problém. Lepší by proto bylo: old = ""; while( pracesDB ){ $vlozitkrizek=""; if(substr($novy1["nazev"], 0, 1) != $old){ $vlozitkrizek = ' id="'.substr($novy1["nazev"], 0, 1).'"'; $old = substr($novy1["nazev"], 0, 1); } //vypisu k pismenu } |
||
juriad Profil |
#9 · Zasláno: 16. 3. 2015, 15:09:15
Nikde nebylo řečeno, že pořadí je vzestupné; jindy to totiž nefunguje. Když je těch písmen 26, klidně bych si do pole poznamenal, zda už bylo vyčerpáno.
|
||
leonek Profil |
Keeehi:
Hezké, použil jsem to a funguje, děkuji :) Ale podívej co to dělá v kódu... S tím mám problém u většiny PHP funkcí pro práci s řetězci, že když je třeba zkracuji tak poslední písmeno je neznámý znak (otazník v kosočtverci). |
||
juriad Profil |
#11 · Zasláno: 16. 3. 2015, 15:14:00
Použij místo substr funkci mb_substr. Viz též ukázku substr vs. mb_substr - délka řetězce.
|
||
juriad Profil |
#12 · Zasláno: 16. 3. 2015, 15:20:06
$pouzitaPismena = array(); while ($novy1 = DB) { $vlozit = ''; $pismeno = mb_substr($novy1['nazev'], 0, 1); if (!isset($pouzitaPismena[$pismeno])) { $pouzitaPismena[$pismeno] = TRUE; $vlozit = ' id="' . $pismeno . '"'; } # vypsání $vlozit } |
||
leonek Profil |
#13 · Zasláno: 16. 3. 2015, 15:59:56
juriad:
Ano, tuto funkci použiji... :) Ono je to ve finále jedno jestli je tam těch ID víc protože prohlížeč správně bere jeho první výskyt jako hlavní. V tom případě to splňuje všechny mé požadavky a funguje výborně. Děkuji a přeji příjemný zbytek dne... :) |
||
Časová prodleva: 9 let
|
0