Autor Zpráva
VeeKey92
Profil
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
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
: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
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
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
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
Š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
vrátí výsledek: zasklivani

SELECT obor FROM karas_oddeleni WHERE oddeleni_id =270
vrátí výsledek: skrine

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
VeeKey92:
Co je to „menu item“?
VeeKey92
Profil
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 :(

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: