Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [smarty] Instrukcja warunkowa, formularz, wyświetlania danych
in5ane
post 7.08.2008, 16:05:38
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Witam, dopiero zaczynam swoją przygodę ze Smarty i mam problem. Otóż chcę zrobić sobie stronę, na której będzie pisać wpisane w formularz imię. Ale jeżeli wyświetla się już imię (czyt. zmienna nie jest pusta), żeby formularz się pod spodem nie wyświetlał. Proszę o pomoc. Oto mój kod:

index.php
  1. <?php
  2. require_once('Smarty/Smarty.class.php');
  3. $smarty = new Smarty;
  4. $smarty->template_dir = "Style/";
  5. $smarty->compile_dir = 'Smartownia/templates_c/';
  6. $smarty->config_dir = 'Smartownia/configs/';
  7. $smarty->cache_dir = 'Smartownia/cache/';
  8. if(isset($_GET[act])) {
  9. switch($_GET[act]) {
  10. case 'glowna' : $strona = 'glowna';
  11. break;
  12. case 'aktualnosci' : $strona = 'aktualnosci';
  13. break;
  14. default : $strona = 'glowna';
  15. break;
  16. }
  17. } else {
  18. $strona = 'glowna';
  19. }
  20. $smarty->assign('strona', $strona);
  21. $smarty->display('index.tpl');
  22. ?>


index.tpl
  1. <?php
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  5. <title>Insane
  6. </head>
  7. <body>
  8. <table border="1" width="800">
  9. <tr>
  10. <td colspan="2">LOGO
  11. </tr>
  12. <tr>
  13. <td width="150">{include_php file="menu.php"}
  14. <td width="650">
  15. {if $strona eq "glowna"}
  16.  
  17. {include_php file="glowna.php"}
  18.  
  19. {elseif $strona eq "aktualnosci"}
  20.  
  21. {include_php file="aktualnosci.php"}
  22. {/if}
  23. </td>
  24. </tr>
  25. </table>
  26. </body>
  27. </html>
  28. ?>


aktualnosci.php
  1. <?php
  2. require_once('Smarty/Smarty.class.php');
  3. $smarty = new Smarty;
  4. $smarty->template_dir = "Style/";
  5. $smarty->compile_dir = 'Smartownia/templates_c/';
  6. $smarty->config_dir = 'Smartownia/configs/';
  7. $smarty->cache_dir = 'Smartownia/cache/';
  8. $smarty->assign('imie', $imie);
  9. $smarty->display('aktualnosci.tpl');
  10. ?>


aktualnosci.tpl
  1. <?php
  2. <p>TUTAJ MO&#379;EMY ZAMIEścić AKTUALNOŚCI</p><br />
  3. {$imie}
  4. {if isset($imie)}
  5. wypelnij ponizszy formularz<br />
  6. <form method="post" action="index.php?act=aktualnosci">
  7. <input type="text" name="imie">
  8. <input type="submit">
  9. </form>
  10. {/if}
  11. ?>


To wszystko oczywiście to są ćwiczenie do nauki. To nie pod żadną stronę.


Edit by in5ane:
Nie dopisałem, że właśnie tutaj w tych "aktualnosciach" już to zacząłem kombinować, ale nie działa. Zawsze jest pusta strona. Nie pokazuje wogóle formularza. A jak poprawiłem trochę inaczej sobie IF'y to wtedy przeładowuje stronę i pokazuje nadal formularz zamiast imię. Po przerobieniu IF'y były na zasadzie {if $imie eq ''} {elseif $imie neq ''}.

Ten post edytował in5ane 7.08.2008, 16:08:13


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post 7.08.2008, 16:08:44
Post #2





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




Skoro imie zawsze bedzie, tylko ze raz bedzie puste , to nie isset a empty:
{if empty($imie)}


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

"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
in5ane
post 7.08.2008, 16:11:23
Post #3





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Poprawiłem co prawda. Ale klikam na submit i mi przeładowuje stronę i nic. Nadal jest formularz, a imienia nie pokazuje.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
nospor
post 7.08.2008, 16:12:31
Post #4





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




tyle jestes na forum i nie wiesz ze nie $imie a $_POST['imie'] ?

  1. <?php
  2. $smarty->assign('imie', $_POST['imie']);
  3. ?>


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

"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
in5ane
post 7.08.2008, 16:14:32
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Tak myślałem o tym, że przy wysyłaniu i odbieraniu trzeba to uwzględnić. Ale mówię sobie, może w smarty nie trzeba. Ale już będę wiedział.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
nospor
post 7.08.2008, 16:19:30
Post #6





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




Cytat
Ale mówię sobie, może w smarty nie trzeba
Przeciez dane do smartiego zapodajesz z php, wiec nie wiem co ma piernik do wiatraka smile.gif

owszem, mozesz juz w szablonie dostac sie do posta, ale to sie robi tak:
Kod
{$smarty.post.imie}


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

"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
JoShiMa
post 8.08.2008, 09:22:20
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Prawdę mówiąc taką instrukcję uważam za kaleczenie sportu:
  1. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  2. <title>Insane
  3. </head>
  4. <table border="1" width="800">
  5. <tr>
  6. <td colspan="2">LOGO
  7. </tr>
  8. <tr>
  9. <td width="150">{include_php file="menu.php"}
  10. <td width="650">
  11. {if $strona eq "glowna"}
  12.  
  13. {include_php file="glowna.php"}
  14.  
  15. {elseif $strona eq "aktualnosci"}
  16.  
  17. {include_php file="aktualnosci.php"}
  18. {/if}
  19. </td>
  20. </tr>
  21. </body>
  22. </html>

Nie po to zostały wymyślone szablony smarty, żeby pakować do nich skrypty php. OK. Wymyślono taką furtkę dla szczególnych sytuacji, ale nie wierzę, że taka właśnie u Ciebie zachodzi. Spróbuj tak zmienić budowę swojego serwisu, żeby nie robić takich makabrycznych konstrukcji. Najpierw powinieneś wykonać odpowiednie skrypty a potem dane uzyskane z nich "wstrzyknąć" do odpowiedniego szablonu.

Jeśłi masz z tym problem (nie bardzo wiesz jak można to przebudować) to chętnie pomogę.


--------------------
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:47