Autor Zpráva
HGD
Profil
mam takovej problémek, mam na straně:
 $query=mysql_query("SELECT catid_wl_item,sid_wl_item,name_wl_item,ico_wl_item,pub_wl FROM ".$pref."_weblinks WHERE sid_wl_item IS NOT NULL");
   while($data=mysql_fetch_assoc($query)){
$cat=mysql_fetch_array(mysql_query("SELECT name_wl_cat FROM ".$pref."_weblinks WHERE id_wl_cat='".$data['catid_wl_item']."'"));
$icon=($data['ico_wl_item']==null)? "../style/NoIcon.png": $data['ico_wl_item'];
echo '<tr align="center" id="';
echo ($i++ % 2) ?"sudy" :"lichy";
echo '"><td>'.$cat['name_wl_cat'].'</td>
       <td><img style="padding: 2px 0;" src="'.$icon.'"></td>
       <td>'.$data['name_wl_item'].'</td>
       <td><img src="../style/';
echo ($data['pub_wl']=="1")? "pubyes": "pubno";
echo'.gif"></td>
       <td>
<a title="Upravit" href="index.php?component=weblink&edit_it='.$data['sid_wl_item'].'"><i mg src="../style/edit.gif"></a> 
<a title="Smazat" href="index.php?component=weblink&del_it='.$data['sid_wl_item'].'"><im g src="../style/delete.gif"></a>
       </td>
      </tr>';
   }


ale potřeboval bych to zjednodušit, aby se nezatěžovala DB, a newim jak na to
Díky moc za rady
ninja
Profil
HGD:
1. Pastni sem az skutecny vygenerovany query na databazi, toto stezi nekdo rozlusti.
2. Priloz strukturu databaze, vcetne indexu.

3. Na prvni pohled je problem ze delas X dotazu do databaze misto pouze jednoho. Znas v SQL veci jako JOIN?
HGD
Profil
JOIN sem chtěl použít, ale neumim s nim pracovat, spíš ho teda nějak nechápu...
/*
id_wl_cat = ID kategorie weblink
pub_wl = publikace
catid_wl_item = ID nadřazené kategorie
sid_wl_item = ID položky
*/
$sql ="CREATE TABLE `".$pref."_weblinks` (
`id_wl_cat` SMALLINT,
`name_wl_cat` VARCHAR(50),
`popis_wl_cat` TEXT,
`pub_wl` BOOL NOT NULL,
`catid_wl_item` SMALLINT,
`sid_wl_item` INT,
`name_wl_item` VARCHAR(70),
`url_wl_item` TEXT,
`ico_wl_item` TEXT,
`popis_wl_item` TEXT
);


PS.: Je tam ..._cat což je kategorie weblinků a pak ..._item což sou samotný weblinky zařazený do kategorií, přitom je to ale v jedný tabulce, a já potřebuju vypsat název kategorie každý z linků. U každýho linku je catid_wl_item, což je stejné ID jako ID kategorie
ninja
Profil
HGD:
SELECT t1.*, t2.* FROM pref_weblinks t1 LEFT JOIN pref_weblinks t2 ON t1.catid_wl_item = t2.id_wl_cat;
HGD
Profil
nepochopil sem teda co mají bejt t1 a t2, jestli teda znamenají něco jinýho, ale script mi hází error
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...

což je:
while($data=mysql_fetch_assoc($query))
ninja
Profil
HGD: t1 a t2 jsou reference tabulky pref_weblinks. Vtip je v tom ze tabulku napojis samu na sebe pres catid_wl_item = id_wl_cat.

Jestli chces poradit tak sem musis dat vygenerovany SQL dotaz.
HGD
Profil
vypadne tohle, v proměnný $query:
mysql_query("SELECT t1.*,t2.* FROM loc_weblinks LEFT JOIN loc_weblinks t2 ON t1.catid_wl_item=t2.id_wl_cat WHERE t2.sid_wl_item IS NOT NULL ");

,kterou pak vypíšu: while($data=mysql_fetch_assoc($query))
ninja
Profil
HGD: a vysledky na dotaz "SELECT t1.*,t2.* FROM loc_weblinks LEFT JOIN loc_weblinks t2 ON t1.catid_wl_item=t2.id_wl_cat WHERE t2.sid_wl_item IS NOT NULL" ti vyhovuji? Nebo to hazi error?
HGD
Profil
hází error, konkrétně:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
Alphard
Profil
tohle je k ničemu
sql chybu vypíšeš takto: echo mysql_error();
HGD
Profil
no, tak už je to bez chyb, ale nic to nevypisuje
Kajman_
Profil *
HGD

Tak ukažte současnou verzi, ať je co opravovat.
HGD
Profil
$query=mysql_query("SELECT t1.*,t2.*
 FROM ".$pref."_weblinks t1
 LEFT JOIN ".$pref."_weblinks t2
 ON t1.catid_wl_item=t2.id_wl_cat
 WHERE t2.sid_wl_item IS NOT NULL
");
// $query=mysql_query("SELECT catid_wl_item,sid_wl_item,name_wl_item,ico_wl_item,pub_wl FROM ".$pref."_weblinks WHERE sid_wl_item IS NOT NULL");
   while($data=mysql_fetch_assoc($query)){
//$cat=mysql_fetch_array(mysql_query("SELECT name_wl_cat FROM ".$pref."_weblinks WHERE id_wl_cat='".$data['catid_wl_item']."'"));
$icon=($data['ico_wl_item']==null)? "../style/NoIcon.png": $data['ico_wl_item'];
echo '<tr align="center" id="';
echo ($i++ % 2) ?"sudy" :"lichy";
echo '"><td>'.$data['name_wl_cat'].'</td>
       <td><img style="padding: 2px 0;" src="'.$icon.'"></td>
       <td>'.$data['name_wl_item'].'</td>
       <td><img src="../style/';
echo ($data['pub_wl']=="1")? "pubyes": "pubno";
echo'.gif"></td>
       <td>
<a title="Upravit" href="index.php?component=weblink&edit_it='.$data['sid_wl_item'].'"><i mg src="../style/edit.gif"></a> 
<a title="Smazat" href="index.php?component=weblink&del_it='.$data['sid_wl_item'].'"><im g src="../style/delete.gif"></a>
       </td>
      </tr>';
   }
Kajman_
Profil *
Nestačí

SELECT t1.*,t2.ico_wl_item from...
?
HGD
Profil
ať tak nebo tak, pořád to nic ale nevypisuje :(
HGD
Profil
mam tady ještě jede kus kodu na zjednodušení, ale newim zda to vůbec půjde... ?
  $query=mysql_query("SELECT name_wl_cat,id_wl_cat,pub_wl FROM ".$pref."_weblinks WHERE id_wl_cat IS NOT NULL");
   while($data=mysql_fetch_array($query)){
 $q=mysql_result(mysql_query("SELECT COUNT(sid_wl_item) FROM ".$pref."_weblinks WHERE catid_wl_item='".$data['id_wl_cat']."'"),0);
echo '<tr align="center" id="';
echo ($i++ % 2) ?"sudy" :"lichy";
echo '"><td>'.$q.'</td>
       <td>'.$data['name_wl_cat'].'</td>
       <td><img src="../style/';
echo ($data['pub_wl']=="1")? "pubyes": "pubno";
echo'.gif"></td>
       <td>
<a title="Upravit" href="index.php?component=weblink&edit='.$data['id_wl_cat'].'"><img src="../style/edit.gif"></a> 
<a title="Smazat" href="index.php?component=weblink&delete='.$data['id_wl_cat'].'"><img src="../style/delete.gif"></a>
       </td>
      </tr>';
   }

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:

0