Autor | Zpráva | ||
---|---|---|---|
ajajaj Profil |
#1 · Zasláno: 24. 6. 2008, 16:43:34
Ahoj, řeším následující problém, vyberu a vypíšu data a potřebuju vybrat něco jako doplněk k již uskutečněnému výběru a to vypsat, pokouším se to splácat následujícm způsobem, ale nefunguje to...
buď mám blbě definované $array, nebo druhý výběr. $query = "SELECT * FROM shop_barvy left join shop_zb_bar using (id_bar) where idz='$idz' ORDER by nazev ASC"; $result = mysql_query($query) or die("Dotaz nelze provést: " . mysql_error()); if($row = mysql_fetch_array($result, MYSQL_ASSOC)){$array= array ($row['id_bar']);} while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ print "<span class=\"bar\"><input type=\"checkbox\" checked name=\"barva[]\" value=\"{$row['id_bar']}\">{$row['nazev']}</span>";} $query2 = "SELECT * FROM shop_barvy where id_bar not in ($array) ORDER by nazev ASC"; |
||
Joker Profil |
#2 · Zasláno: 24. 6. 2008, 16:46:37
ajajaj
Nebylo by jednodušší si rovnou vybrat už na začátku všechny řádky (stejně ty dva dotazy dohromady dávají všechny řádky) a rozházet si to v PHP do dvou polí? |
||
ajajaj Profil |
#3 · Zasláno: 24. 6. 2008, 16:52:51
bylo, pokusim se o to.
|
||
ajajaj Profil |
#4 · Zasláno: 24. 6. 2008, 17:10:49
$query = "SELECT * FROM shop_barvy left join shop_zb_bar using (id_bar) ORDER by nazev ASC";$result = mysql_query($query) or die("Dotaz nelze provést: " . mysql_error());while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
if ($row['idz']>'0'){ print "<span class=\"bar\"><input type=\"checkbox\" checked name=\"barva[]\" value=\"{$row['id_bar']}\">{$row['nazev']}</span>";} if ($row['idz']<'0'){ print "<span class=\"bar\"><input type=\"checkbox\" name=\"barva[]\" value=\"{$row['id_bar']}\">{$row['nazev']}</span>";}} ale vypisuje mi to nektere barvy vicekrat, kde by mohla byt chyba? |
||
Joker Profil |
#5 · Zasláno: 24. 6. 2008, 17:21:45
ajajaj
if ($row['idz']>'0') Předpokládám, že 0 nemá být řetězec, ale číslo (a to druhé má být taky číslo): if (intval($row['idz']) > 0) Dále, vidím dobře, že jediný rozdíl mezi nimi je slovo "checked"? Tak potom je zbytečné to tam mít dvakrát: $checked = (intval($row['idz']) > 0) ? " checked" : ""; echo('<span class="bar"><input type="checkbox" name="barva[]"'.$checked.' value="'.$row['id_bar'].'">'.$row['id_bar'].'</span>'); |
||
ajajaj Profil |
#6 · Zasláno: 24. 6. 2008, 18:07:42 · Upravil/a: ajajaj
diky, ale bohuzel to nebeha tak jak by melo, vysvetlim situaci:
tabulka shop_barvy ma sloupce : nazev, id_bar; tabulka shop_zb_bar ma sloupce : idz, id_bar; do tabulky shop_zb_bar ukladam dvojice idz(id zboží) a id_bar (id barvy), proto existuji stovky radku s temito kombinacemi... ja potřebuji vybrat dvě skupiny barev pro zboží: 1) uložené barvy/ kombinace "id_bar" a "idz" z tabulky shop_zb_bar 2) zbylé/neuložené barvy které nejsou pro zboží "idz" uložené v tabulce shop_zb_bar - doplněk k prvnímu výběru |
||
Kajman_ Profil * |
#7 · Zasláno: 25. 6. 2008, 08:08:02
Stačí převést tu podmínku na konkrétní zboží z where do left joinu
SELECT b.*, if(z.idz is null,'',' checked') checked FROM shop_barvy b left join shop_zb_bar z on b.id_bar=z.id_bar and z.idz='$idz' ORDER by b.nazev |
||
ajajaj Profil |
#8 · Zasláno: 26. 6. 2008, 13:47:33
díky všem za pomoc, ale ani druhý výběr nedělá co by měl, zatím jsem to rozdělil do dvou výběrů a budu koumat dál...
|
||
Časová prodleva: 16 let
|
0