Autor Zpráva
nightrider
Profil
Tak a je tu další a snad poslední problém. Chci se zeptat na nejáký podrobný návod na stromová data. Chci docílit toho že v tabulce produk pod id_parametry bude něco jako: 2,3.... dotaz který potom zavolá s parametrů 2,3...

TABULKA parametry:


TABULKA produkt:


Každej už tuší co bude následovat :-) Potřebuju aby zjistil co má vytáhnout a zobrazil to na stránce.

SELECT: (tohoto chci docílit)


Ještě by mně zajímalo co mám udělat aby se zobrazoval select jen pokud je záznam.

Našel jsem jednu diskusi kde se to probíralo, ale nějak jsem to nepobral :-(
Předem všem děkuju

Poznámka moderátora Yuhů: odkazy na obrázky na žádost odstraněny, stejně nefungovaly.
srigi
Profil
nightrider
Ja pouzivam na stromove udaje tento kod.
XYQ
Profil
PHP - vytáhne data,JS upravý do stromu,spojí se to v HTML...
http://www.treeview.net/treemenu/3fr_largetree.html
http://www.treeview.net/treemenu/3fr_beenthere.html
nightrider
Profil
Trošku přehlednějc by to nikde nebylo? Nejsem takovej koumák jako vy a tak prosím o podrobnější radu :-(
nightrider
Profil
Omlouvám se,ale dělám to už dva dny a už stoho šílím :-)

<select name="neco">
<?php
$result2 = mysql_query("SELECT kategorie.id_kategorie, nazev, kategorie GROUP_CONCAT(DISTINCT nazev ORDER BY id_parent DESC SEPARATOR ' ')
AS velikosti FROM kategorie JOIN nazev ON kategorie.id_kategorie = parametry.id_parent");
while ($row2 = mysql_fetch_assoc($result2)) {
    echo "	<option>". htmlspecialchars($row2["nazev"])."</option>\n";
}
?>
</select>
bitbit
Profil
Ano jsme skvělí. Nechtěl by jsi sem dát celou strukturu tabulek? Napřiklad barvu ani v jedné tabulce co jsi poslal nevidím.
Jako chceš k jednomu produktu více parametrů, nebo jak?

Podle struktur těch tabulek, co jsi postnul, nejde udělat to co chceš
nightrider
Profil
Jak mám tedy toho docílit? Už jsem snad projel celej net a nic od čeho by jsem se odrazil. Bohužel se pořád učím a tohle dělám prvně, tak potřebuju nějakej podrobnej manuál kterej jsem teda nenašel :-( a přitom se mi zdá že je tohle základ.
bitbit
Profil
Ja bych zase potřeboval, aby jste přesněji rozepsal jak si to přesně představujete.

Zatím chápu, že máte nějaký produkt, který je v nějaké kategorii a má několik parametrů (barva,velikost). A asi chcete mít možnost vybírat z těchto parametrů.

Každý produkt má nejspíše více barev a velikostí že?

heh a nejak se mi neobjevil tan prispevek s SQL dotazem, než sem psal.
svadla
Profil
Zkus srozumitelne popsat co mas (jake tabulky s jakymi sloupci) a co z techto tabulek chces dostat.
Obcas je rozumejsi, misto hledani na internetu a nadavanim, ze ti nikdo nepomuze, se zamyslet sam.
Aesir
Profil
nightrider:
tak potřebuju nějakej podrobnej manuál kterej jsem teda nenašel
Toto nepomůže?
Na wikipedii.
Na sitepointu.
Pro mysql.
nightrider
Profil
Nikomu jsem nenadával,ale to řešit nechci :-) Mám tabulky: produkt, parametry, kategorie.
Chci docílit toho že když bude v tabulce produkt napsáno něco jako 2,3, tak to vezme všechno co ma id_parent v tabulce parametry a vyhodí to do optionu. Něco jako je tady ale neomezeně parametrů. Možnost výběru: barvu chci červenou a velikost L

Já jsem stršně tupej páč ty manuály mi taky nic neříkají :-(
bitbit
Profil
Něco takovýhleho?

$SQL_produkt = "SELECT * FROM produkt WHERE id_produktu='$id'";
$DOTAZ_produkt = mysql_query($SQL_produkt);
While($POLE_produkt = mysql_fetch_array($DOTAZ_produkt)){
  // cokoli co je treba z produktu
  
  //uprava id_parametry
  $pole_id_parametry = explode(",", $POLE_produkt['id_parametry']); 
} 
foreach ($pole_id_parametry as $value){
  $SQL_parametry = "SELECT * FROM parametry WHERE id_parent='$value'";
  $DOTAZ_parametry = mysql_query($SQL_parametry);
  echo "<select>";
  While($POLE_parametry = mysql_fetch_array($DOTAZ_parametry)){
     echo "    <option value=\"".$POLE_parametry[id_parametry]."\">". htmlspecialchars($POLE_parametry["parametr"])."</option>\n";
  }
  echo "</select>";
}


pusť si to a napiš. Snad tam není někde chyba
nightrider
Profil
Jseš moc hodnej a moc ti děkuju za ten kod,ale nic to nevypíše :-(
bitbit
Profil
nějaka chyba?

Mas to pripojeny k databazi? jsou v databazi nejake hodnoty? Zkontroluj, zda mam spravne nazvy tabulek apd.

jeste na zacatek si nastav id nejakeho produktu, od ktereho chces vytahnout data - neco jako :
$id='19';


upravena verze, mela by vypsat i k cemu se ten select vztahuje
$SQL_produkt = "SELECT * FROM produkt WHERE id_produktu='$id'";
$DOTAZ_produkt = mysql_query($SQL_produkt);
While($POLE_produkt = mysql_fetch_array($DOTAZ_produkt)){
  // cokoli co je treba z produktu
  
  //uprava id_parametry
  $pole_id_parametry = explode(",", $POLE_produkt['id_parametry']);  // rozdelime hodnoty oddelene carkou
} 
foreach ($pole_id_parametry as $value){  // projdeme vsechny rozdelene id
  $SQL_parametry = "SELECT * FROM parametry WHERE id_parent='$value'";  // nacteme vsechny zaznamy s dannym id_parent
  $DOTAZ_parametry = mysql_query($SQL_parametry);
  $selecty.= "<select>";  //vlozime do vzstupni promenne zakladni select
  While($POLE_parametry = mysql_fetch_array($DOTAZ_parametry)){
     if($jmeno_vyberu != $POLE_parametry[nazev]){   // jestlize jeste nebylo prirazeno danne jmeno do promenne, tak to udelame (vime, ze je to prvni pruchod)
       $jmeno_vyberu = $POLE_parametry[nazev];
       $selecty.= $POLE_parametry[nazev];
     }
     $selecty.= "    <option value=\"".$POLE_parametry[id_parametry]."\">". htmlspecialchars($POLE_parametry["parametr"])."</option>\n"; // pridame vsechny moznosti selectu
  }
  $selecty.= "</select>"; //ukoncime select
}

echo $selecty;
nightrider
Profil
Jsem si nechal vypsat chyby,ale všechno je ok jen to nic nechce vypsat :-(
echo nic nevypíše jen se zobrazí option
nightrider
Profil
Nahoru jsem dal odkaz na strukturu tabulek a tvůj kódík se mi moc líbí a nechápu proc nefachá :-(
nightrider
Profil
Ty joooooooooooooooooooooooooooooo :-) chlape jses super borec :-) FUNGUJEEE :-):-):-):-)

JENOM MALEJ PROBLÉM S OPTION
VYSLEDKY JSOU DVA, ALE ZOBRAZÍ SE MI 4 :-(
bitbit
Profil
$SQL_produkt = "SELECT * FROM produkt WHERE id_produktu='$id'";

to $id musi mit nejakou hodnotu, psal jsem to na rychlo a tak tam nemam vypisy chyb databaze, jsem zvyklej pouzivat tridu na dotazy do DB a ta se stara o errory.

osetreni DB chyb (nemuzu si vzpomenout jak je sintaxe mysql_error)
$SQL_produkt = "SELECT * FROM produkt WHERE id_produktu='$id'";
$DOTAZ_produkt = mysql_query($SQL_produkt);
$if(!$DOTAZ_produkt){
  echo "produkt nebyl z DB vybran";
}
While($POLE_produkt = mysql_fetch_array($DOTAZ_produkt)){
  // cokoli co je treba z produktu
  
  //uprava id_parametry
  $pole_id_parametry = explode(",", $POLE_produkt['id_parametry']);  // rozdelime hodnoty oddelene carkou
} 
foreach ($pole_id_parametry as $value){  // projdeme vsechny rozdelene id
  $SQL_parametry = "SELECT * FROM parametry WHERE id_parent='$value'";  // nacteme vsechny zaznamy s dannym id_parent
  $DOTAZ_parametry = mysql_query($SQL_parametry);
  $if(!$DOTAZ_produkt){
    echo "nepovedlo se vybrat parametry s id_parent $value"; 
  }
  $selecty.= "<select>";  //vlozime do vzstupni promenne zakladni select
  While($POLE_parametry = mysql_fetch_array($DOTAZ_parametry)){
     if($jmeno_vyberu != $POLE_parametry[nazev]){   // jestlize jeste nebylo prirazeno danne jmeno do promenne, tak to udelame (vime, ze je to prvni pruchod)
       $jmeno_vyberu = $POLE_parametry[nazev];
       $selecty.= $POLE_parametry[nazev];
     }
     $selecty.= "    <option value=\"".$POLE_parametry[id_parametry]."\">". htmlspecialchars($POLE_parametry["parametr"])."</option>\n"; // pridame vsechny moznosti selectu
  }
  $selecty.= "<select>"; //ukoncime select
}

echo $selecty;
nightrider
Profil
Jak to udělat aby mi nevypisoval tolik optionu jako je záznamu?
Promiň móóóóc děkuju :-)

Nešlo by to nějak udělat jako: pokud neni zaznam neukáže se žádný option? Třeba metodou if?
bitbit
Profil
Tak ted to jeste nejak zakombinuj do tvyho kodu :-D

Není zač
bitbit
Profil
Jak to udělat aby mi nevypisoval tolik optionu jako je záznamu?

nechápu, ja myslel, že chceš aby ti vypisoval vše co potřebuješ - ja to ani neviděl jak to vipada, tak pošly odkaz, kde se spouští ten skript.

Myslíš ten prazdnej select?
nightrider
Profil
jj :-)
bitbit
Profil
$selecty.= "<select>"; //ukoncime select


zmenit na

$selecty.= "</select>"; //ukoncime select


jsem tam nedal ukončovací znak selectu :-D ale počáteční
nightrider
Profil
Můžu se ještě zeptat jak udělat to aby v případě níčeho se nic nezobrazilo?
bitbit
Profil
Jak v pripade niceho se nic nezobrazilo? :)

pokud ten zaznam nebude existovat, tak ho nema jak vybrat a nemelo by se nic co je v cyklu zobrazit. Ale pokud ti bude jen chybet nejaka hodnota v tabulce, tak tu cast kodu, ktera je na ni zavisla, nebo ji ma zobrazit, musis dat do podminky napr:

if (!empty(promenna)){

}
nightrider
Profil
Jasný a když jsem narazil na človíčka kterej tomu tak rozumí, tak by jsem se chtěl zeptat ještě na vkládání čísel pro vytahovaní ve formátu 2,3 jsem to do tabulky musel napsat ruco pac jinak by mi to asi jinak neslo :-)
bitbit
Profil
melo by to jit

vlozis tam promenou ktera obsahuje retezec "2,3";

$id_paramery = "2,3";

INSERT ...... '$id_parametry';


pridani dalsiho paramtru udelas tak, ze nejdrive vyberej parametry, ulozis v nejaky promenny a spojis je s dalsim parametrem :

SELECT * FROM .... 

$id_paramety_new = $id_parametry_old.","$parametr_k_pridani

UPDATE ......


Musim jit spat, uz pisu hrozne

EDIT: jeste ten sloupec v DB musi tedy byt typu retezec
nightrider
Profil
To mě nenapadlo a přitom to bouchá do očích :-) děkuju vážně moc a snad jednou budu umět poradit jako ty.
Dobrou noc
Toto téma je uzamčeno. Odpověď nelze zaslat.