Autor | Zpráva | ||
---|---|---|---|
free Profil * |
Chci se zeptat na volání tabulky parametry do optionu. Zapisuju to do produktu jen pod id zvoleného parametru(6,3,8,9). Jen teď nevím jak to mám vyvolat aby barvy a třeba velikosti byli v jinym selectu.
INSERT INTO `parametr` (`id_parametr`, `nadpis`, `parametr`, `parent`) VALUES (1, 'Barva', '0', '0'), (6, 'Barva', 'Červená', '1'), (3, 'Barva', 'Modrá', '1'), (7, 'Velikost', '0', '0'), (8, '0', 'XXL', '7'), (9, '0', 'L', '7'); Předem děkuju všem za rady jak toho docílit. Možná jsem blbě popsal problém :-( Popíšu co možná nejdetailněji :-) v tabulce parametr by jsem měl všechny druhy barev atd. K produktu by jsem udělal volitelnou část dle id parametru (produkt je pouze v modré a žluté barvě, tak se vybere id pod kterým je modrá a žlutá barva). Pak je třeba velikost, tak to samé s velikostí a výpis výsledku by vypadal následovně: <select name="bla"> <option value="id">Modrá</option> <option value="id">Žlutá</option> </select> <select name="bla"> <option value="id">L</option> <option value="id">M</option> </select> Mám takovou teorii jak toho dosílit, ale mohl by mi někdo poradit jak postupně získávat data takhle zapsaná do db? p:1@6,3;p:7@8,9 p = id korene parametru za zavináčem jsou vybranné id parametrů |
||
t4nn3r Profil |
#2 · Zasláno: 3. 3. 2010, 12:34:42
udělej relaci i pro skupiny parametrů ..
|
||
free Profil * |
#3 · Zasláno: 3. 3. 2010, 12:42:01
<?php $sql_produkt = mysql_query("SET NAMES 'cp1250'"); $sql_produkt = mysql_query("SELECT * FROM product WHERE id_product='".$id."'"); //$pole_produkt = mysql_fetch_array($sql_produkt, MYSQL_BOTH);//cokoli co je treba z produktu while($pole_produkt = mysql_fetch_array($sql_produkt)){ $ac=array(); $polozky4=explode('@',$pole_produkt["id_parameters"]); foreach ($polozky4 as $polozka4) { $polozka4=trim($polozka4); // odstrani zbytecny mezery list($k4,$v4)=explode(':',$polozka4); $ac[$k4]=$v4; } $ac2=array(); $polozky2=explode(';',$pole_produkt["id_parameters"]); foreach ($polozky2 as $polozka2) { $polozka2=trim($polozka2); // odstrani zbytecny mezery list($k2,$v2)=explode('@',$polozka2); $ac2[$k2]=$v2; } for($i=1;$i<=2;$i++){//projdeme vsechny rozdelene id $idec[++$a] .= "p".++$i; $idecko[++$s] .= $ac[$idec[$a++]]; $polozky .= $idec[++$e].":".$idecko[++$s]; $sql_parametry = mysql_query("SET NAMES 'cp1250'"); $sql_parametry = mysql_query("SELECT * FROM parameters WHERE parent='".$idecko[++$s]."' AND id_parameters IN ($ac2[$polozky])");//nacteme vsechny zaznamy s dannym id_parent $selecty.= "\n<select name=\"par".$e++."\">\n";//vlozime do vzstupni promenne zakladni select while($pole_parametry = mysql_fetch_array($sql_parametry)){ $vyt_jmeno = $pole_parametry["title"]; if($jmeno_vyberu != $pole_parametry["id_parameters"]){//jestlize jeste nebylo prirazeno danne jmeno do promenne, tak to udelame (vime, ze je to prvni pruchod) $jmeno_vyberu = $pole_parametry["id_parameters"]; } $selecty.= "\t<option value=\"".$pole_parametry["title"].": ".$pole_parametry["parameters"]."\">". htmlspecialchars($pole_parametry["parameters"])."</option>\n";//pridame vsechny moznosti selectu } $selecty.= "</select> <strong>: ".$vyt_jmeno."</strong>\n<br>";//ukoncime select }} echo $selecty; ?> p1:1@6,3;p2:7@8 |
||
free Profil * |
#4 · Zasláno: 3. 3. 2010, 12:44:47
První mi to vyjelo jak jsem chtěl, ale jakmile jsem použil foreach, tak slo vse do háje :-(
|
||
AM_ Profil |
#5 · Zasláno: 3. 3. 2010, 14:43:47
Na řádku 27 je poměrně nelogické ukládat výsledek SET NAMES do $sql_parametry, nicméně chybu to nezpůsobí.
Kód je špatně čitelný, názvy proměnných jako "k2" a "v2" atd luštit nebudu. Nicméně co takhle si to zkusit odladit sám? :) vlož tam pár echo, zjisti, kde se to proč zastavuje, jestli mají všechny proměnné ve správnou chvíli správnou hodnotu, najít chybu tohoto typu je stejná práce pro tebe, jako kohokoliv jiného tady. Navíc popis problému, že to šlo do háje, nám moc nepomůže, takovou chybovou hlášku neznám. |
||
free Profil * |
#6 · Zasláno: 3. 3. 2010, 15:20:29
Aktuální kod je:
<?php $sql_produkt = mysql_query("SELECT * FROM product WHERE id_product='".$id."'"); $pole_produkt = mysql_fetch_array($sql_produkt, MYSQL_BOTH);//cokoli co je treba z produktu $ac=array(); $polozky4=explode('@',$pole_produkt["id_parameters"]); foreach ($polozky4 as $polozka4) { $polozka4=trim($polozka4); // odstrani zbytecny mezery list($k4,$v4)=explode(':',$polozka4); $ac[$k4]=$v4; } $ac2=array(); $polozky2=explode(';',$pole_produkt["id_parameters"]); foreach ($polozky2 as $polozka2) { $polozka2=trim($polozka2); // odstrani zbytecny mezery list($k2,$v2)=explode('@',$polozka2); $ac2[$k2]=$v2; } for($d=1;$d<=2;$d++){ $idec[++$a] .= "p".++$i; $idecko .= $ac[$idec[$a++]]; $poloz .= $idec[++$e].":".$idecko; echo $poloz; $sql_parametry = mysql_query("SET NAMES 'cp1250'"); $sql_parametry = mysql_query("SELECT * FROM parameters WHERE parent='".$idecko."' AND id_parameters IN ($ac2[$poloz])");//nacteme vsechny zaznamy s dannym id_parent $selecty.= "\n<select name=\"par".$e++."\">\n";//vlozime do vzstupni promenne zakladni select while($pole_parametry = mysql_fetch_array($sql_parametry)){ $selecty.= "\t<option value=\"".$pole_parametry["title"].": ".$pole_parametry["parameters"]."\">". htmlspecialchars($pole_parametry["parameters"])."</option>\n";//pridame vsechny moznosti selectu } $selecty.= "</select>\n<br>";//ukoncime select } echo $selecty; ?> Chybová hláška: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/free/vyjimecny.cz/t/testr/root/www/catalog/templates/parameters.php on line 29 echo $poloz = p1:1p1:1p2:1 tabulka: p1:1@6,3;p2:7@8 Vím, že to neni moc přehledný, ale přehledněji už to popsat nedokážu. Ještě: takhle jak to je vypíše jeden plnej select jak chci, ale pokud je tam i druhej, tak nevypíše už nic. Jen vyhodi prazdný select |
||
AM_ Profil |
#7 · Zasláno: 3. 3. 2010, 15:33:46
free:
„Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource“ příčina této hlášky viz MySQL FAQ, je to chyba v SQL dotazu, najdi si ji už ale sám (viz odkaz). |
||
nightfish Profil |
#8 · Zasláno: 3. 3. 2010, 15:35:30 · Upravil/a: nightfish
free:
„Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/free/vyjimecny.cz/t/testr/root/www/catalog/templates/parameters.php on line 29“ echo mysql_error(); když si k ní vypíšeš i ten dotaz z řádku 27, tak bys měl být schopen určit, v čem je problém (a když ne, tak obojí pošli sem) EDIT: AM sorry, že ti ruším kruhy, tvého příspěvku jsem si nevšimnul |
||
free Profil * |
hmm, ale tohle všechno já vím :-( Bože, proč mi tady nikdo nenapíše něco nového?
|
||
AM_ Profil |
#10 · Zasláno: 3. 3. 2010, 15:42:48
free:
„Bože, proč mi tady nikdo nenapíše něco nového?“ Zrovna si balím na hory a za chvíli vyrážím na jednu přednášku, a jak se máš ty? K vyřešení tvého problému jsme ti již napsali vše, co potřebuješ, pokud nejsi schopný do kódu vložit jeden řádek, přečíst si chybovou hlášku a podle ní dotaz opravit, zřejmě by ses měl zamyslet nad tím, jestli má vůbec v tvém případě smysl zkoušet programovat. |
||
free Profil * |
#11 · Zasláno: 3. 3. 2010, 15:46:15
Chybovou hlášku si nemusim nechávat vypisovat,když vím kde je problém i bez ní!!! Kazdej programátor kterej se na chvilku podívá na kod, tak mu musi byt jasny kde je ten problem taky, ale myslel jsem, ze tu jsou machri kteri mi napisou jak ho opravit.
|
||
AM_ Profil |
#12 · Zasláno: 3. 3. 2010, 15:47:16
free:
vítám mezi námi génia. Já ten problém na první pohled nevidím. kde je? |
||
free Profil * |
#13 · Zasláno: 3. 3. 2010, 15:52:02
for($d=1;$d<=2;$d++){ $idec[++$a] .= "p".++$i; $idecko .= $ac[$idec[$a++]]; $poloz .= $idec[++$e].":".$idecko; |
||
Kajman_ Profil * |
#14 · Zasláno: 3. 3. 2010, 16:00:31
Víte co dělá operátor . před rovnítkem? Jste si jistý, že tam má být?
|
||
free Profil * |
#15 · Zasláno: 3. 3. 2010, 16:04:14
Toho jsem odstranil před hodinou tím jsem si pomohl, ale chyba tam je stejne v cyklu. Pokud to dám bez foreach, tak vse maka jak má, ale jakmile se snazim vypsat i druhej parametr, tak uz na me krici chybu
|
||
AM_ Profil |
#16 · Zasláno: 3. 3. 2010, 16:10:17
free:
„tak uz na me krici chybu“ jakou? supplied argument is not valid MySQL resource? CHYBA JE V MYSQL DOTAZU. |
||
free Profil * |
p1:1:hlášení mysql: 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
Chybu jsem opravil, ale druhej select je porad prazdnej IN ('$ac2[$poloz]') vypise jen jeden parametr a na dalsi se... sice uz nema chybu, ale s chybama makal lip alespon na 1 selectu |
||
AM_ Profil |
#18 · Zasláno: 3. 3. 2010, 16:19:52
V těch názvech proměnných se opravdu nevyznám a navíc nevím, co máš v databázi. Tak si průběžně echuj (var_dumpuj) proměnné, přes které se $ac2 naplní, abys zjistil, kde se ti ty ostatní informace ztrácí.
|
||
free Profil * |
#19 · Zasláno: 3. 3. 2010, 16:22:11
Tabulka je vypsana nahore
|
||
nightfish Profil |
#20 · Zasláno: 3. 3. 2010, 16:31:10
jaký je význam proměnný $a, $e, $d?
free: „Tabulka je vypsana nahore“ nahoře je vypsaná tabulka `parametr`, v dotazu se operuje s `parameters` jinak nelze než souhlasit s [#20] - jen ty máš potřebná data k tomu, abys dokázal najít chybu (jak databázi, tak ten skript a možnost do něj dopisovat ladicí výpisy) (tedy pokud pominu možnost z říše snů, že by si někdo ten skript zkopíroval k sobě, vytvořil databázi a problém řešil místo tebe) |
||
free Profil * |
#21 · Zasláno: 3. 3. 2010, 17:32:20
To ani nechci, myslel jsem, že se někdo podívá a hned mu bude jasný kde je problém. proměnný mají za ukol číslovat (parametr1 = barva, parametr2 = velikost)
|
||
Časová prodleva: 14 let
|
0