Komplikacije (loop i 2 sql tabele)

Komplikacije (loop i 2 sql tabele)

offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409

Nisam pojma imao kako drugačije da napišem naslov, i izvinjavam se zbog toga, dakle, evo problema:

Imam 2 tabele, cmsarticles, i cmssections, u prvoj se nalaze članci, i ID sekcije kojoj pripadaju, taj ID se nalazi u koloni 'section'. U drugoj tabeli nalaze se ID (kolona 'ID') i ime (kolona 'name'). I sad ja hoću da mi strana lepo prikazuje u kojoj je sekciji vest (da prikazuje ime), ali kod za to mi je pravi pain-in-ass.

Smislio sam nešto ovako:
$connector = new DbConnector(); $result = $connector->query("SELECT title,tagline,isonfp,isinnf,section,ID FROM cmsarticles WHERE isonfp='1'"); $row = $connector->fetchArray($result); $result2 = $connector->query("SELECT name,ID FROM cmssections"); $row2 = $connector->fetchArray($result2); while($row2 = $connector->fetchArray($result2)) { //Uslov je da ima kroz šta da vrti    If ($row2['ID'] == $row['section']) { //Ako se ID u cmssections poklapa sa 'section' onda se promenjiva $sekcija jednači sa imenom sekcije, posle se echo-uje na stranu.       $sekcija = $row2['name'];    } }

Naravno ovo ne radi. Sad pokušavao sam nešto preko Do-While loopa, ali ne uspeva mi, jednostavno, osećem da mi je na vrh prstiju rešenje za ovo, i da je potpuno debilan problem, ali ne uspevam da ga rešim... Evil or Very Mad



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Ej prijatelju imas mySQL naredbu JOIN

tako da tebi treba sledece
<?php $connector = new DbConnector(); $result = $connector->query("SELECT * FROM cmsarticles INNER JOIN cmssections ON cmsarticles.id = cmssections.id WHERE cmsarticles.isonfp='1'"); while( $row = $connector->fetchArray($result) )    var_dump( $row ); ?>



offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409

Ili ovo ne radi, ili ja ne znam da koristim. Sad

Probao sam i varijacije ovoga, neće. Sad

P.S. Zar ne treba da bude cmsarticles.section = cmssections.id?

offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

Moram da pitam: Zasto koristis dvije tabele kad je jedna dovoljna ?

offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409

Recimo da imam 20 sekcija i 500 članaka, ime svake sekcije dužine oko 15 karaktera, pomnoži sa 500. Mislim da je bolje da se umesto 15 koristi 2-3 karaktera (ID).

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3745
  • Gde živiš: 127.0.0.1

E sad, ne kodiram strane na ovaj nacin, pa mi je malo teze da zapisem ono sto bih hteo Smile

Evo kako bih ja to uradio Smile

<?php $result = mysql_query("SELECT title,tagline,isonfp,isinnf,section,ID FROM cmsarticles WHERE isonfp='1'"); while ($row = mysql_fetch_array($result)) {    $sekcija = mysql_query("SELECT name FROM cmssections WHERE id = '" . $row{'section'} . "'");    $row{'section'} = mysql_result($sekcija,0);    //i na kraju "odstampas" ceo niz $row :) } ?>

a ti ga samo "prevedi" Smile

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

@Wraith Razlisljanje ti je dobro, ali u praksi citaj vise tabela vise problema. Danas je prostor jeftin Smile

Inace da, trebalo bi biti kao ovo gore sto si naveo. Kako nece? Sta ti izbaci, je li ti se uopste zakaci script na mysql server?

Dalje, rastafari nikako ti nije dobro ovo rjesenje. Sto manje querya to je bolje, pogotovo ovih simple.

offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409

Uspeo sam da je nateram da radi nekako. Smile

$connector = new DbConnector(); $result = $connector->query("SELECT * FROM cmsarticles LEFT JOIN cmssections ON cmsarticles.section = cmssections.id WHERE cmsarticles.ID='".$HTTP_GET_VARS['id']."'"); while( $row = $connector->fetchArray($result) ){ echo $row2'name']; }

(malo sam izmenio WHERE pošto koristim i na drugom mestu)

Hvala! Smile

Ko je trenutno na forumu
 

Ukupno su 841 korisnika na forumu :: 26 registrovanih, 8 sakrivenih i 807 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: babaroga, BORUTUS, bufanje, Fog of War, Georgius, Kibice, maiden6657, mercedesamg, moldway, mrvica78, nemkea71, nenooo, nikoli_ca, Petarvu, Romibrat, royst33, stegonosa, Stoilkovic, Trpe Grozni, tubular, Tvrtko I, vasa.93, vathra, x9, yufighter, ZetaMan