Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Smarty] Wyświetlanie danych
Lee
post
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


Takim o kodem
  1. <?php
  2. $poll -> db_query = 'SELECT * FROM $tbl_poll';
  3. $poll -> GetQuestion();
  4. $smarty -> assign('questions', $poll -> row);
  5. foreach ($poll -> row as $question){
  6. $poll = new poll;
  7. $poll -> GetAnswers($question['id']);
  8. $smarty -> assign('answers', $poll -> row);
  9. $poll = new poll;
  10. $question_id = $question['id'];
  11. $poll -> AllVoices($question_id);
  12. $smarty -> assign('all_voices', $poll -> all);
  13. }
  14. $smarty -> display("$theme/index.tpl");
  15. ?>

pobieram i wysyłam do pliku index.tpl pytanie i odpowiedzi do każdej sondy w pliku poll.tpl (includowany w index.tpl) dane wyświetlam w ten sposób
  1. <p class="text_03"><b>Archiwum Ankiet:</b></p>
  2. {foreach from=$questions item=question}
  3. <table cellspacing="0" cellpadding="0" style="margin: auto; width: 500px; border: 1px solid #000000;">
  4. <tr>
  5. <td colspan="2" class="text_01" style="background-color: {$color_1}"> <b>{$question.question}</b></td>
  6. </tr>
  7. {foreach from=$answers item=answer}
  8. <tr>
  9. <td colspan="2"class="text_01" style="background-color: {$color_2}">{$answer.answer} <img src="templates/Blue/images/poll.gif" style="height: 10px; width: {math equation="voice * 100 / voices" voice=$answer.votes voices=$all_voices format="%.0f"}px; border: 1px solid #000000"> {math equation="voice * 100 / voices" voice=$answer.votes voices=$all_voices format="%.2f"}%</td>
  10. </tr>
  11. {/foreach}
  12. <tr>
  13. <td class="text_01" style="background-color: {$color_1}">Rozpoczęta: <b>{$question.started}</b></td>
  14. <td class="text_02" style="background-color: {$color_1}">Zakończona: <b>
  15. {if empty($question.end)} Trwa
  16. {else}{$question.end}
  17. {/if}
  18. </b></td>
  19. </tr>
  20. </table><br />
  21. {/foreach}

I wszystko by było w porządku gdyby nie to, że pokazuje to w ten sposób
Cytat
Pytanie 1
Odpowiedź a (dla pyt 1)
Odpowiedź b (dla pyt 1)

Pytanie 2
Odpowiedź a (dla pyt 1)
Odpowiedź b (dla pyt 1)


a nie tak
Cytat
Pytanie 1
Odpowiedź a (dla pyt 1)
Odpowiedź b (dla pyt 1)

Pytanie 2
Odpowiedź a (dla pyt 2)
Odpowiedź b (dla pyt 2)


Pytanie brzmi gdzie jest błąd blinksmiley.gif


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Jojo
post
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 1
Dołączył: 19.09.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Błąd jest w logice. W pętli robisz assign i każdym obrotem pętli nadpisujesz poprzednią wartość.
Proponowałbym w foreach'u utworzyć php'ową tablicę zawierającą odpowiednie dane a dopiero po zakończeniu pętli przypisać ją do zmiennej Smarty.


--------------------
Rozwój cywilizacji informatycznej to wyścig między programistami, którzy wytwarzają coraz łatwiejsze
programy użytkowe dla idiotów, a światem produkującym coraz lepszych gatunkowo idiotów.

Blog: Małolepszy.info
Go to the top of the page
+Quote Post
Lee
post
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


Na innym forum otrzymałem odpowiedź (cool.gif), że można pobrać komentarze i newsy jednym zapytaniem, ale niezabardzo wiem jak to połączyć z zapytaniem od Pagera

  1. <?php SELECT * FROM '.$tbl_news.' ORDER BY id DESC LIMIT '.$start.','.($end - $start + 1) ?>

z tym
  1. <?php select N.*, count(C.ID) iloscnewsow from tblog_tresc N
  2. left join tblog_komentarze C on C.artykul_id = N.id group by N.id; ?>


$tbl_news -tabela z newsami
Cytat
ID | title | content | author | category | data

$tbl_comments - tabela z komentarzami
Cytat
ID | what_id | title | content | author | email | ip | data | type*

*type - news / article

i wysłac to potem do smarty...

Ten post edytował Lee 27.08.2006, 12:33:53


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no normalnie. najpierw se przepisz to zapytanie co ci podalem na swoje tabele, a potem dopisz do tego order i limit z pagera.

I sie zdecyduj na jedna forum, bo nie bede ci wdwoch odpowiadal smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lee
post
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


Teraz to wylgąda tak
  1. <?php
  2. $db_query = 'SELECT N.*, count(C.ID) AS comments FROM '.$tbl_news.' N left JOIN '.$tbl_comments.' C on C.what_id = N.id GROUP BY N.id ORDER BY id DESC LIMIT '.$start.','.($end - $start + 1);
  3. ?>

brakowało też AS pod count(C.ID), po dodaniu wszystko działa dzieki za pomoc smile.gif

P.S: wystarczy na jednym odpowiedzieć (tutaj) bo tam to w ostateczności pisze jak tutaj nikt nie odpowie


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
brakowało też AS pod count(C.ID)
Nie, nie brakowalo. dziala i bez tego smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lee
post
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


A dało by rady dołączyć do tego jeszcze jedną tabelę ? z kategorią ?


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale co? ilosc kategorii dla newsa? NO powinno zadzialc na podobnej zasadzie jak ilosc kometnow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lee
post
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


Nie nie, mam przy newsie (tabeli) napisane kategoria: (numer_kategori) no i szuka tego numeru kategorii w tablicy z kategoriami, pobiera obrazek dla tego numeru i wyświetla go przy newsie....można też odrazu zrobić obrazek dla newsa ale przecież na łatwizne to każdy potrafi (chyba, że jest róznica w szybkości działania skryptu)


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to jest to zwykle zlaczenie kolejenej tabeli. Tym razem nie zliczasz ilosci rekordow w niej, a pobierasz dane pole z niej i juz.
Kolejny left join a przy select kolejene pole do wyswietlenia


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lee
post
Post #11





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


Zrobiłem tak
  1. <?php
  2. $db_query = 'SELECT N.*, count(C.ID) comments, K.* FROM '.$tbl_news.' N left JOIN '.$tbl_comments.' C on C.what_id = N.id, left JOIN '.$tbl_category.' K on K.id = N.category GROUP BY N.id ORDER BY id DESC LIMIT '.$start.','.($end - $start + 1);
  3. ?>

i nie działa :/


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Spojrz w skladnie select....left join do manuala, a zobaczysz ze miedzy kolejnymi left join nie może byc przecinka. U ciebie jest smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lee
post
Post #13





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


no spojarzałem tutaj http://webcity.pl/webcity/artykuly.php/t/12 i nie rozumiem gdzie jest błąd


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale ja chyba wyraźnie napisalem:
Cytat
do manuala

Wiesz co to jest manual?
http://dev.mysql.com/doc/refman/5.0/en/join.html

Rownie wyraźnie napisalem:
Cytat
a zobaczysz ze miedzy kolejnymi left join nie może byc przecinka. U ciebie jest

Wiesz co to jest przecinek? tongue.gif

I sobie popatrz wkoncu na to swoje zapytanie i zobacz przed ktorym left join masz przecinek. Przecinek tak wyglada "," tongue.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lee
post
Post #15





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


przecinka nie ma, manual przegladnienty, rozwiązania brak. Jak usunę K.* to działa ale nie pokazuje obrazka w tym select coś robię źle tylko nie mogę dojść co

Ten post edytował Lee 27.08.2006, 15:46:33


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
przecinka nie ma
Rozumiem, ze juz go usunales, bo byl smile.gif POkaz to nowe zapytanie po poprawkach.

przenosze, bo ze smarty to ma nie wiele wspolnego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lee
post
Post #17





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $db_query = 'SELECT N.*, count(C.ID) comments, K.* FROM '.$tbl_news.' N left JOIN '.$tbl_comments.' C on C.what_id = N.id left JOIN '.$tbl_category.' K on K.id = N.category GROUP BY N.id ORDER BY id DESC LIMIT '.$start.','.($end - $start + 1);
  3. ?>


tak też próbowałem
  1. <?php
  2. $db_query = 'SELECT N.*, count(C.ID) comments, K.* FROM '.$tbl_news.' N left JOIN '.$tbl_comments.' C on (C.what_id = N.id) left JOIN '.$tbl_category.' K on (K.id = N.category) GROUP BY N.id ORDER BY id DESC LIMIT '.$start.','.($end - $start + 1);
  3. ?>
i ten sam skutek - nie działa

Updote
W kodzie miałem błąd (mój błąd winksmiley.jpg miało być K.costam as costam zamiast K.* winksmiley.jpg teraz śmiga

Ten post edytował Lee 28.08.2006, 10:44:39


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:05