[ Horvat @ 05.11.2009. 14:05 ] @
nesto pravim i zapeo sam,stao mi mozak,a ni ne mogu adekvatno resenje [tj ni priblizno] da nadjem na google,pa reko' mozda vi mozete pomoci...

naime problem je sledeci

postoje 2 tabele,jedna tabela je sa proizvodima,druga sa korisnicima
u tabeli sa proizvodima postoji id korisnika koji je taj proizvod stavio,a ne postoji nickname

ja zelim da pri listanju proizvoda izbaci nickname [tj da ga iscita iz tabele korisnika pomocu "where" komande izjednacavajuci id-e]

deo koda koji to resava izgleda ovako nekako,ali ovo ne radi [tj ne radi onaj deo za ispisivanje nick-a]

Code:

$sql = "SELECT * FROM products WHERE cat_id='$cat_ident'";


$result = mysql_query($sql) or die(mysql_error()); 

if (mysql_num_rows($result)>0)
{    
    
    echo "<table border=\"0\" align=\"center\">";
   {
        while ($record = mysql_fetch_array($result))
        
        
        echo "<tr><td height=\"150\" width=\"150\" align=\"center\"><img src=\"$record[pic]\"></td><td width=\"200\" align=\"center\">$record[title]</td><td align=\"center\" width=\"100\">$record[lastprice] <u>$record[currency]</u></td>";

       
       $u_id = $record[seller_id];
    
    $sql_u = "SELECT username FROM user WHERE id=$u_id" ; 
    $user_res = mysql_query($sql_u) or die(mysql_error()); 
    if (mysql_num_rows($result)>0)
    while ($record = mysql_fetch_assoc($user_res))
    $nick = $record[username];
    echo "<td align=\"center\" width=\"200\">$nick </td></tr>";      
   }
   


[$cat_ident je zadat ranije]

kada umesto
"$u_id = $record[seller_id]" ispisem id korisnika [primer: "$u_id = '2';" dobijem nick...

nesto sam gadno zeznuo...ali ne mogu da pronadjem gresku,a znam da je neka trivijalna :S

e,da,zaboravih,probao sam i
Code:

    
    $sql_u = "SELECT username FROM user WHERE id=  $record[seller_id]" ; 
    $user_res = mysql_query($sql_u) or die(mysql_error()); 
    if (mysql_num_rows($result)>0)
    while ($record = mysql_fetch_assoc($user_res))
    $nick = $record[username];
    echo "<td align=\"center\" width=\"200\">$nick </td></tr>";      
   }
   


ali ni tako nece
[ dakipro @ 05.11.2009. 14:13 ] @
Ti ces ovde jednim upitom koji vadi 50 proizvoda imati 50 upita na bazu za username :(
najgori moguci pristup, ono, osnove programiranja spominju da upiti ne idu u petlje ukoliko to baaas ne mora. a ovde def ne mora, jedan JOIN (recimo left) bi ti sve ovo resio.
Pretpostavljam da u ovom delu

Code:

    echo "<table border=\"0\" align=\"center\">";
   {
        while ($record = mysql_fetch_array($result))

Ovaj 'viticasta' zagrada ide IZa while.
[ Horvat @ 05.11.2009. 14:16 ] @
da,to je problem,sto bi bilo mali milion upita,mozda bolje da se username upisuje u tabelu sa proizvodima,a ne id,pa da iscitava samo tabelu proizvoda

:blush: join kojih podataka?

opa,zagrada je zalutala tamo,hvala
[ dakipro @ 05.11.2009. 14:24 ] @
Pa to je jos gore resenje, mozda ne ovde jer username nece tako cesto da se menja, ali kao buduca praksa definitivno najgore resenje. Zato i postoje tabele u bazama, sve bi se trpalo u jednu inace. Pogledaj optimizaciju baza, i pogledaj Join sto sam ti spomenuo u prethodnoj poruci, sve ce ti biti jasno. imaces jedan upit, i dve tabele, i sve sto ti treba u jednoj petlji.
[ Horvat @ 05.11.2009. 14:26 ] @
pa tom logikom sam se i vodio,jer je id jedinstven i ne uticu promene podataka korisnika na njega

pogledacu join malo kasnije

hvala ti :)

edit:hvala hvala hvala!!
kako trivijalno i efikasno :))



[Ovu poruku je menjao Horvat dana 05.11.2009. u 16:32 GMT+1]