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
udělej relaci i pro skupiny parametrů ..
free
Profil *
<?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;
?>
Tady jsem se zaseknul :-(
p1:1@6,3;p2:7@8
free
Profil *
První mi to vyjelo jak jsem chtěl, ale jakmile jsem použil foreach, tak slo vse do háje :-(
AM_
Profil
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 *
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
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
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();
ti vypíše konkrétní hlášku
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
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 *
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
free:
vítám mezi námi génia. Já ten problém na první pohled nevidím. kde je?
free
Profil *
for($d=1;$d<=2;$d++){
$idec[++$a] .= "p".++$i;
$idecko     .= $ac[$idec[$a++]];
$poloz      .= $idec[++$e].":".$idecko;
Kajman_
Profil *
Víte co dělá operátor . před rovnítkem? Jste si jistý, že tam má být?
free
Profil *
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
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
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 *
Tabulka je vypsana nahore
nightfish
Profil
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 *
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)

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: