Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie z tablicy obrazka i użycie go jako odnośnik do galerii
Forum PHP.pl > Forum > PHP
Beast_Metak
Witam serdecznie, na wstępie dodam, że moja wiedza na temat php i programowania stron jest dość nikła.

Mam pewien problem, posiadam cms bazujący na smarty (nie mojego autorstwa) i staram się go modyfikować tak aby spełniał moje wymogi. Problem mój jest związany z tworzeniem listy podstron dodanych do kategorii. Skrypt tworzy listę tekstową jednak chciałbym aby w momencie gdy do kategorii dodana jest galeria jako odnośnik ustawiał on obrazek z danej galerii (pierwszy albo losowy nie ma to dla mnie większego znaczenia) a nie tylko tekst.

kod głównej templatki wyświetlającej zawartość tablic:

  1. <link href="../css/global_view.css" rel="stylesheet" type="text/css" />
  2. {include file="global.header.tpl"}
  3. <div id="pg">
  4. {php}
  5. require('db.php');
  6. include('menu.php');
  7. {/php}
  8. <div id="content">
  9. <div class="txt">
  10. {if is_numeric($smarty.get.id) && isset($smarty.get.id)}
  11. {foreach from=$view item=view}
  12. {if $view.visible == '1'}
  13. {if $view.displaytitle == '1'}
  14. <b>{$view.title}</b><hr />
  15. {/if}
  16. {$view.content}
  17. {else}
  18. Podana strona nie istnieje.
  19. {/if}
  20. {/foreach}
  21. {elseif is_numeric($smarty.get.cid) && isset($smarty.get.cid)}
  22. {if $vlv == '1'}
  23. {foreach from=$cview item=cview}
  24. {if $cview.visible == '1'}
  25. {if $cview.title == not null}
  26. <a href="view.php?id={$cview.id}">{$cview.title}</a><br />
  27. {elseif $cview.nazwa == not null}
  28. <a href="view.php?gid={$cview.gid}">{$cview.nazwa}</a><br /> //tutaj wyświetlana jest nazwa galerii jeśli jakaś istnieje
  29. {/if}
  30. {/if}
  31. {/foreach}
  32. {else}
  33. Podana strona nie istnieje.
  34. {/if}
  35. {elseif is_numeric($smarty.get.gid) && isset($smarty.get.gid)}
  36. <div id="gallery">
  37. {foreach from=$galeria item=wo}
  38. <table border="2" cellspacing="0" cellpadding="0" width="197" height="197">
  39. <tr>
  40. <td align="center" bgcolor="#333333" bordercolor="#000000"> <a href="gallery/{$wo.nazwa}"/><img src="gallery/th/{$wo.nazwa}" alt="" border="0" align="middle"/></a></td>
  41. </tr>
  42. </table>
  43. {/foreach}
  44. </div>
  45. {/if}
  46. </div>
  47. <div class="line">&nbsp;</div>
  48. </div>
  49. {include file="global.footer.tpl"}
  50. </div>


Potrzebuję zmodyfikować linię 28 kodu. I właśnie nie wiem jak zmusić skrypt aby pobierał obrazek z konkretnej galerii i ustawiał go jako odnośnik do niej. Informacje o obrazkach z galerii są w bazie danych, która wygląda następująco:

articles (id, title, content, displaytitle, visible, menu, cid)
categories (cid, name, menu, visible)
galeria (gid, nazwa, menu, visible, cid)
obrazki (oid, nazwa, gid)

Za pomocą pętli foreach wypisywane są wszystkie elementy w kategorii, które są do niej przypisane za pomocą "cid". I tutaj odnośnik jeśli jest to artykuł posiada parametr "$cview.title" ze względu na wartość w tablicy i analogicznie dla galerii "$cview.nazwa".

Jak poradzić sobie z tym kawałkiem kodu i czego należy użyć aby uzyskać wymagany efekt? Będę wdzięczny za sugestię, porady czy też przykłady.

Pozdrawiam
CuteOne
Pokaż zapytanie, które pobiera kategorie lub możesz je sam zmodyfikować dodając JOIN LEFT galeria ON(galeria.gid=kategorie.gid). Następnie dodajesz warunek do templatki

{if $image} <img src={$galery.src}> {/if} [ to tylko przykład smile.gif ]
Beast_Metak
Kategorię pobiera kod z linii 21

  1. {elseif is_numeric($smarty.get.cid) && isset($smarty.get.cid)}


a jeszcze takie pytanie do tego "galeria.gid=kategorie.gid" to jest przypisanie zmiennej czy jak? bo galeria.gid to zapewne odwołanie do gid z galerii ale np w kategorii nie ma gid więc tak nie bardzo czaję :/



Zabrałem się już za analizowanie JOIN LEFT smile.gif mam nadzieję, że mi się uda, po rozwiązaniu swojego problemu dodam rozwiązanie smile.gif Pozdrawiam
CuteOne
Pokaż zapytanie ze skryptu PHP nie .tpl - innymi słowy pokaż część kodu w której wykonujesz zapytanie do bazy danych [zapewne do mysql]
Beast_Metak
  1. //Pobieranie kategorii
  2. $qc = "SELECT * FROM categories WHERE menu='1' AND visible='1'";
  3. $rc = mysqli_query($db,$qc);
  4. while ($crows = mysqli_fetch_assoc($rc))
  5. {
  6. $crow[] = $crows;
  7.  
  8. //Pobranie cid, zapytanie o arrtykuly nalezace do cid, ktore beda wywietlone w menu
  9. $podkatid = $crows['cid'];
  10. $qpodkat = "SELECT * FROM articles WHERE visible='1' AND cid=$podkatid";
  11. $rpodkat = mysqli_query($db,$qpodkat);
  12. while ($cpodkat = mysqli_fetch_assoc($rpodkat))
  13. {
  14. $katrows[] = $cpodkat;
  15. }
  16. $smarty->assign('catmenu',$katrows);
  17.  
  18. //Pobranie cid, zapytanie o galeria nalezace do cid, ktore beda wyswietlone w menu
  19. $podkatid = $crows['cid'];
  20. $qpodkat = "SELECT * FROM galeria WHERE visible='1' AND cid=$podkatid";
  21. $rpodkat = mysqli_query($db,$qpodkat);
  22. while ($cpodkat = mysqli_fetch_assoc($rpodkat))
  23. {
  24. $katrows[] = $cpodkat;
  25. }
  26. $smarty->assign('catmenu',$katrows);
  27. }
  28. $smarty->assign('cmenu',$crow);
CuteOne
To jest to zapytanie o którym wcześniej mówiłem:
  1. $qpodkat = "SELECT * FROM galeria WHERE visible='1' AND cid=$podkatid";

doczep do niego JOIN LEFT pi razy drzwi tak jak opisałem
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.