Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Problem z zapytaniem SELECT i wyswietlaniem rekordow (foreach)
Forum PHP.pl > Forum > Przedszkole
InosU31
Witam

Mam taki problem z ktorym nie moge sobie poradzic od wczoraj :-(

Mam dwie tabelki - w jednej mam naglowki a w drugiej linki. Chce do kazdego naglowka przypisac linki o id naglowka.

zrobilem cos takiego :
  1. <?php
  2. $result = $dbase->get_query("
  3.                        SELECT * FROM ramka_gowna // tu sa naglowki
  4.                        ");
  5.                        
  6.                        
  7.    if ($result)
  8.    {
  9.        $leftr = new cTemplate;
  10.        $page->tassign['ramkal'] = "";
  11.        
  12.        foreach ($result as $record)
  13.        {
  14.            
  15.            if ($record['site'] == 'l')
  16.            {
  17.            $leftr->tassign['nagl'] = $record['naglowek']; // wyswietla naglowek
  18.            $leftr->tassign['nagl'] .= $record['id']; //wyswietla id naglowka
  19.            
  20.            $result2 = $dbase->get_query("
  21.                        SELECT * FROM link_glowna where idramka = $record['id']; // tu sa linki " idramka" to jest id naglowka
  22.                        ");
  23.            
  24.            if ($result2 != 0)
  25.            {
  26.                
  27.                foreach ($result2 as $linkr)
  28.                {
  29.                $leftr->tassign['link'] .= "<a href=\"?page=a_".$linkr['link']."\">".$linkr['link']."</a><br>";    
  30.                //$leftr->tassign['link'] .= $record['id'];
  31.                }
  32.            }
  33.            else $leftr->tassign['link'] = "";
  34.            
  35.            $leftr->tassign['opcje'] = "<a href=\"?action=dodaj&id=".$record['id']."\">>dodaj<</a> ";
  36.            $leftr->tassign['opcje'] .= "<a href=\"?action=edytuj&".$record['site']."&id=".$record['id']."\">>edytuj<</a> ";
  37.            $leftr->tassign['opcje'] .= "<a href=\"?action=usun&id=".$record['id']."\">>usun<</a> ";
  38.            
  39.            $page->tassign['ramkal'] .= $leftr->parse("common/ramka.htm");
  40.            
  41.            }
  42.        }
  43.        
  44.    }
  45. ?>


problem polega na tym ze naglowki mi sie dobrze wyswietlaja czyli jak mam 3 naglowki w tabeli "ramka_gowna" to wyswietlaja mi sie 3 naglowki ale jak wyswietlam linki do tych naglowkow to one sie "dubluja" - czyli
w pierwszym naglowku mam 2 linki i tu mi sie dobrze wyswietla
w drugim naglowku mam 3 linki - ale tutaj mi sie wyswietlaja linki z naglowka 1 i 2

w trzecim naglowku juz mi sie nic nie wyswietla - czyli dobrze dzilala - nie wiem dlaczego wczesniej mi tu sie wyswietlalo 2 razy wszystkie linki :|



ma ktos jakis pomysl jak to przerobic zeby sie dobrze wyswietlalo??

dzieki i pozdrawiam
zelu
Radze poczytać o JOIN...


Pozdro
InosU31
Cytat(zelu @ 18.05.2009, 15:39:22 ) *
Radze poczytać o JOIN...
Pozdro


dzieki ale cos nie wychodzi z tym JOIN :/ troche dziwne to jest bo petla foeach powinna wypisac mi wszystkie rekordy a jak nie dam kropki przed = :
  1. <?php
  2. $leftr->tassign['link'] .= "<a href=\"?page=a_".$linkr['link']."\">".$linkr['link']."</a><br>";
  3. ?>


to wypisuje mi ostani rekord a nie kazdy;/
taktu
spróbuj z pętlą while
InosU31
niestety nie dziala :/ juz nie mam pomyslow:(

moze ktos mi cos wyjasni bo ja juz glupieje? sad.gif

(na przykladzie tego co wyzej dalem)

Idzmy od gory. Rozpoczyna sie skrypt. Wybiera mi wyszstko z tabeli ramka_gowna i idzie dalej. Uruchamia sie petla foreach i wyswietla mi naglowek, nastepnie idzie do $resutl2 i wybiera z tabelki link_glowna wszystkie rekordy gdzie idramka = 1 (czyli pierwszy rekord). nastepnie kolejna petla foreach wyswietla mi ten rezultat (w moim przypadku 2 rekordy) pozniej idzie dalej i znow wraca do naglowka i pobiera drugi rekord z tabeli ramka_gowna a nastepnie go wyswietla. idzie nizej i znow sprawdza warunek SELECT i w tym momecie idramka powinna sie = 2 poniewaz $record['id'] = 2 i tak faktycznie chyba jest. znow wpada do petli foreach (tej drugiej) ale zamiast wyswietlic mi tylko rekordy ktore maja idrama = 2 to wyswietla mi wszystkie rekordy nawet te ktore maja idramka = 1.

dlaczego tak sie dzieje?? moze mi ktos podpowiedziec??

bylbym wdzieczny bo juz nie wiem co mam wymyslic:(
//--------------------------------------------------------------------------------------------------------

juz sobie poradzilem :-)

wystarczylo wstawic ta linijke i wszystko gra : $leftr->tassign['link'] = "";
  1. <?php
  2. if ($result2)
  3.        {
  4.                $leftr->tassign['nagl'] .= $record['id'];
  5.                $leftr->tassign['link'] = "";
  6.            foreach ($result2 as $record2)
  7.            {                    
  8.            $leftr->tassign['link'] .= "<a href=\"?page=a_".$record2['alink']."\">".$record2['alink']."</a><br>";            
  9.            }
  10.                
  11.        }
  12.  
  13. ech szkoda tylko ze to tylko dzieki fuksowi:/
  14.  
  15. pozdrawiam
  16. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.