Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]smarty,array, problem z wyświetlaniem lub konstrukcją tablicy...
Forum PHP.pl > Forum > Przedszkole
LoBo0sw
Witam,
Ostatnio zacząłem się bawić ze smarty i w zasadzie tablicami, bo wcześniej ich nie używałem i narodził mi się problem, którego przy pomocy google i licznych przykładów, nie udało mi się rozwiązać.
Próbuję zastosować kilka przykładów (gdyby przypadkiem któryś zadziałał).
Kod na obecną chwilę to mini poligon, bo próbuję zrobić by cokolwiek zadziałało, przez to zastosowane są 2 przykłady tablic i różne przykłady by wyswietlić.

Wycinek klasy.

  1. protected $monit = array();
  2. public function coment_insert() {
  3. $monit[] = $monit;
  4. $error = "";
  5. if (isset($_POST['tytul']) || isset($_POST['tresc']) || isset($_POST['submit'])) {
  6. $tytul = stripslashes(strip_tags(trim($_POST["tytul"])));
  7. $tresc = stripslashes(strip_tags(trim($_POST["tresc"])));
  8. if (($this->min_max(3, 25, $_POST['tytul'])) == true) {
  9. $error++;
  10. $this->monit[1] = $this->message('Tytuł min 3 max 25 znakow.', 2);
  11. $monit = $this->monit[1];
  12. }
  13. if (($this->min_max(5, 250, $_POST['tresc'])) == true) {
  14. $error++;
  15. $monit = $this->message('Treść min 5 max 250 znaków!', 2);
  16. //$monit = $this->monit[2];
  17. }
  18. if ($error == 0) {
  19. if (!isset($_GET['update_coment'])) {
  20. $result = $this->query("insert into `coment` (
  21. `news_id`,
  22. `tytul`,
  23. `tresc`,
  24. `data_dodania`)
  25. VALUES(
  26. '{$_GET['news_id']}',
  27. '{$_POST['tytul']}',
  28. '{$_POST['tresc']}',
  29. NOW())");
  30.  
  31. $monit[3] = $this->message('News dodany !', 1);
  32. } else {
  33. $result = $this->query("UPDATE coment set
  34. tytul='$tytul',
  35. tresc='$tresc'
  36. WHERE
  37. coment_id={$_GET['update_coment']
  38. }");
  39.  
  40. $monit[4] = $this->message('Zaktualizowano.', 1);
  41. $monit = $this->monit[4];
  42. }
  43. }
  44. }
  45. return $monit;
  46. }


smarty

  1. {$monit} bez section. w news comment<br />
  2. {section name=messages loop=$monit}{$messages}{$monit[messages]}{/section} z petla section


I jak na razie udało mi się uzyskać różnymi metodami prób i błędów, ze albo 1 z komunikatów jest wyświetlany albo napis array.
Np zostawię pusty treść wyświetla komunikat błędu treści, zostawię tytuł wpiszę treść to wyświetla komunikat błędu tytułu, zostawię 2 wolne wypisuje komunikat błędu treści bez tytułu.. czasami jak pozmieniałem pokręciłem to pokazuje napis Array.. Tablic dopiero się uczę więc proszę o nakierowanie co robię źle..

Co zrobić by w przypadku wolnych pól tytuł i treść smarty wyświetlało mi obydwa komunikaty błędu ?
LoBo0sw
Nie potrzebują nabijania postów tylko pomoc, jabyś zauważył używam section, a link,który mi podałeś przez ostatnie kilka dni był u mnie wyświetlany przez kilka dni bardzo często.

Jeżeli jesteś w temacie to pomóż mi rozwiązac problem opierając się na przykładzie mojego kodu.
czychacz
to nie nabijanie postów, tylko zachęcenie do czytania dokumentacji tongue.gif
z której wersji smarty korzystasz?
w dość nowym smarty jest funkcja foreach
  1. {foreach from=$tablica item=elementTablicy key=index}
  2. To element tablicy znajdujący się pod indeksem {$index}<br/>
  3. A to zawartość właściwości jakasWlasciwosc: {$elementTablicy.jakasWlasciwosc}
  4. {/foreach}

samo section jest dosyć stare, chociaż czasami się przydaje. to raczej pozostałość po pierwszych wersjach smarty.
LoBo0sw
Zaraz będę kombinowac z foreach, choc bardziej zależy mi na ustaleniu jakim sposobem zrobi tablicę z $monit by funkcja ją prawidłowo zwracała, w kodzie mam 2 metody zastosowane do testu, a przydałaby się wskazówka, której metody używac i która zwróci mi prawidłową tablicę.
PS używam najnowszego smarty.
czychacz
szczerze mówiąc, najlepiej byłoby, gdybyś opisał krok po kroku, co chcesz osiągnąć, wywołując coment_insert, bo same body jest raczej dziwnie napisane
LoBo0sw
W zasadzie w późniejszej formie będzie wykorzystywane do dodawanie komentarzy, jakiś treści itd.
Jak na razie to wszystko działa(dodają mi się treści, wyświetlam je) tylko chodzi mi o to, żeby prz dodaniu np komentarza wyświetlał mi smarty monit o błędzie. Tak jak w kodzie jest to przedstawione: za krótka treśc lub tytul wyswietla komunikat błędu... wyświetlanie pojedynczych komunikatów mi działa ale chciałbym aby przy pustym polu treśc i tytul wyświetliło mi obydwa komunikaty,a tego właśnie nie robi. Przez to pomyślałem, żeby ta funkcja w przypadku nie spełnionego warunku dodawała monit do tablicy, zwracała ją, a smarty wyświetlało wszystko dodane do tej tablicy. I z tym właśnie sobie nie umiem poradzic.

Przepraszam za chaotycznie napisanego posta, ale właśnie kończę pracę i muszę generowa raporty wink.gif
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.