Autor | Zpráva | ||
---|---|---|---|
VeeKey92 Profil |
#1 · Zasláno: 4. 2. 2012, 20:37:55
Zdravím,
již několik hodin se potýkám s problémem, jak dostat proměnnou $obor, která je v tabulce karas_oddeleni ve sloupci obor, do menu jako id="neco", co se vypíše z databáze. Není to žádný RS, je to nějaký paskvil a já to tam musim implemetovat. Už se mi podařilo v adminu přidat kolonku, která updatuje databázi, ale ještě potřebuji vyřešit to vypsání ve frontendu. Odkaz by potom měl vypadat nějak takto: <div class="parent"> <a id="skrine" href="http://www.karasek.cz/vestavne-skrine-indeco-cz/">Vestavné skříně INDECO CZ</a> </div> Tady je kód, který to ovlivňuje. Toto je funkce. Jenže ta funkce mi nefunguje, protože si nevím rady s její úpravou. Musím nějak upravit ty proměnné, ale nevím na jaké. (tato funkce je jen zkopírovaná z funkce, která tvoří url, potřebuji ji proto, že je nutné zjistit ID) snad mi někdo poradíte...už fakt nevim... function generuj_obor($oddeleni_id){ global $db, $TBL,$PHP_SELF, $oddeleni_array, $url_oddeleni_array,$vyprodej; $url = $PHP_SELF; $odd_array = array(); $url_oddeleni_array = array(); $res = $db->do_ext_query("SELECT parent_id, oddeleni_id, friendly_url FROM ${TBL['oddeleni']} ORDER BY oddeleni_id"); while($row = $db->get_ext_data($res)) $odd_array[] = $row; generuj_oddeleni_odkaz_vetev($odd_array,$oddeleni_id); $url_oddeleni_array = array_reverse($url_oddeleni_array); for($i=0;$i<count($url_oddeleni_array);$i++) $url.= $url_oddeleni_array[$i]."/"; return $url; } a toto je konkrétní vytvoření onoho odkazu: $bolo=0; for ($i=0; $i<count($pole); $i++) { if ($pole[$i]['parent_id']==$parent_id) { $bolo=1; echo '<DIV '; if ($pole[$i]['parent_id']==0) echo "class=\"parent"; else echo "class=\"nonparent".rekurze1($parent_id).""; echo "\">"; if (($pole[$i]['oddeleni_id']==$oddeleni_id) && ($pole[$i]['parent_id']!=0)) echo $selected_prefix; else { echo "<A "; if (in_array($pole[$i]['oddeleni_id'], $pole_odd_id)) echo "class=cesta "; //echo "href=\"".$PHP_SELF."?oddeleni_id=".$pole[$i]['oddeleni_id']."\">"; echo "id=\"".generuj_obor($pole[$i]['oddeleni_id'])."\" href=\"".generuj_oddeleni_odkaz($pole[$i]['oddeleni_id'])."\">"; } echo "".ucfirst($pole[$i]['oddeleni']).""; // if (($pole[$i]['oddeleni_id']==$oddeleni_id) && ($pole[$i]['parent_id']!=0)) echo $selected_postfix; else echo "</A>"; |
||
Alphard Profil |
#2 · Zasláno: 5. 2. 2012, 01:15:50
S tím paskvilem jste to trefil. Vy můžete použít dobrý editor s debuggerem a nevyznáte se v tom, takhle zpaměti na fóru asi není šance. Každopádně i z pohledu výkonu to vypadá dost katastrofálně, pro každý odkaz dotaz na databázi.
Zvažte přepracování celého menu :-) V kategorie a subkategorie - rekurze řešili podobnou situaci (znali parent_id). |
||
VeeKey92 Profil |
#3 · Zasláno: 5. 2. 2012, 11:20:26
:D ja vim, že sem to trefil :) ten system je stary cca 10 let.. jenže ted nejsou penize na novy. Chceme jen takovouhle malou upravu. Už jsem to vyřešil trochu jinak, ale moc to nefunguje :D
Pokud zadám ID dle toho oddeleni, tak u všech se zobrazí to stejné. Jenže když tam dám $oddeleni_id, tak hodí mysql chybu. $query = "SELECT obor, oddeleni_id FROM ${TBL['oddeleni']} WHERE oddeleni_id=270"; $result = mysql_query($query) or die("Dotaz nelze provést: " . mysql_error()); while($row = mysql_fetch_array($result)) { $obor = $row['obor']; } $bolo=0; for ($i=0; $i<count($pole); $i++) { if ($pole[$i]['parent_id']==$parent_id) { $bolo=1; echo '<DIV '; if ($pole[$i]['parent_id']==0) echo "class=\"parent"; else echo "class=\"nonparent".rekurze1($parent_id).""; echo "\"><span id=\"$obor\"></span>"; |
||
panther Profil |
#4 · Zasláno: 5. 2. 2012, 12:16:42
VeeKey92:
„tak hodí mysql chybu.“ jakou? |
||
VeeKey92 Profil |
Pokud tam zadám tohle:
$query = "SELECT obor, oddeleni_id FROM ${TBL['oddeleni']} WHERE oddeleni_id=$oddeleni_id"; Tak to napíše: Dotaz nelze provést: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 //Pokud by někdo měl náladu, můžeme to zkusit po skype či icq udelat..poskytnu zdrojovy soubor. Možná je to jen malá chybka. Je potřeba nějak zajistit, aby to zjistilo to oddeleni_id, jinak to nebude fungovat :( |
||
Keeehi Profil |
#6 · Zasláno: 5. 2. 2012, 13:51:30
Zjistěte si, co se ve skutečnosti vygeneruje (
echo $query; ) a pak si ten dotaz vyzkoušejte v phpMyAdmin, adminerovi či něčem podobném jestli to vybírá opravdu to co chcete.
|
||
VeeKey92 Profil |
#7 · Zasláno: 5. 2. 2012, 14:01:51
Když dám echo $query, tak to vypíše: SELECT obor FROM karas_oddeleni WHERE oddeleni_id=270. To je jistě kravina :D
|
||
Keeehi Profil |
#8 · Zasláno: 5. 2. 2012, 14:03:47
Špatně to být nemusí a může. Strukturu databáze neznám. Proto si ten dotaz v něčem vyzkoušejte.
|
||
VeeKey92 Profil |
Tak ten příkaz phpmyadmin funguje. Ale jen když zadám určitý id té oddeleni_id
příkladem: SELECT obor FROM karas_oddeleni WHERE oddeleni_id =273 SELECT obor FROM karas_oddeleni WHERE oddeleni_id =270 TO vše je v pořádku, ten select funguje bezvadně. Ale já potřebuju to oddeleni_id získávat z toho menu item.. Funkce, kterou popisuji je cca. okolo řádku 230 Zde je celý php soubor zajišťující menu: www.karasek.cz/functions.oddelenia.zip Zde je export mysql www.karasek.cz/test.sql.zip |
||
Keeehi Profil |
#10 · Zasláno: 5. 2. 2012, 14:38:39
VeeKey92:
Co je to „menu item“? |
||
VeeKey92 Profil |
#11 · Zasláno: 5. 2. 2012, 14:42:57
Menu item jsem myslel každá položka toho menu. Už nevím, jak to vysvětlit :D. Tohle je asi neřešitelný problém :(
|
||
Časová prodleva: 12 let
|
0