Autor Zpráva
ajajaj
Profil
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
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
bylo, pokusim se o to.
ajajaj
Profil
$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
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
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 *
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
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...

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: