Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty][JavaScript] przekazanie zmiennej
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
aqun
Witam wszystkich
Przerabiam stronkę na której oddaje się głos na zdjęcie klikając jego miniaturkę. Wszystko działa w szablonach Smarty. Dotychczas to chodziło tak że po kliknięciu odsyłacza (zdjęcie) jet przekierowanie z pliku
zdjecia.tpl do pliku function.load_zdjecia.php.
Tam na podstawie numeru zdjęcia jest dalsza akcja, zapis do bazy jakie zdjęcie otrzymało głos. Dołożyłem w pliku zdjecia.tpl formularz, żeby określić ile punktów przyznajemy na dany obrazek, ale nie chcę dodawać buttona, chcę żeby zostało rozwiązanie z kliknięciem na zdjęcie.
CODE
<input type="text" name="Punkty">
<a href="{$foto_list->mFoto[k].onclick_add|escape:'html'}">
<img class="wyslij" src="images/glosuj.gif" border="0" />
</a>
</form>

Trzeba przekazać zmienną o nazwie punkty z pliku zdjecia.tpl do pliku function.load_zdjecia.php.
Pomyślałem że można by to zrobić wykorzystując onClick, tylko JavaScript jakoś słabawo u mnie i mi to nie wychodzi.
W pliku function.load_zdjecia.php zdefiniowałem zmienną:
public $mPunkty; i do niej chcę przekazać wartość z formularza.
Dalej poprzerabiałem aż do bazy i jak ustawię ręcznie np:
public $mPunkty=4;
to po kliknięciu w odsyłacz wszystko działa jak trzeba. Pozostał mi problem jak przekazać zmienną z formularza, nie używając przycisku formularza tylko przez klikniecie na obrazek.
Acha, próbowałem wstawić buuton używając obrazka jako tło, ale to nie działa.
Pytanie do kogoś kto zna Smarty i JavaScript, jak to zrobić?
Trawka
Najprościej, bez użycia js możesz wstawić obrazek jako <input type="image" />

Jeżeli jednak js to:

http://www.javascript-coder.com/javascript...rm-submit.phtml

Pierwszy wynik z googla. Jak chcesz jeszcze jakieś parametry przez formularz przekazać, np id zdjęcia, to wystarczy pole hidden w formularzu.
aqun
Dzięki za radę, ale to nie rozwiązuje problemu. Nie chcę zrezygnować z tego triku:
CODE
<a href="{$foto_list->mFoto[k].onclick_add|escape:'html'}">
...
</a>

bo dzięki przekazaniu w odpowiednie miejsce akcji ze zmienną $foto_list->mFoto[k] mam poskładane
zapytanie w pasku przeglądarki, mniej więcej takie
CODE
.../index.php?GoTyp=2&FotoID=23&Punkty=
Myślę że rozwiązania problemu trzeba szukać w tym kierunku
CODE
<a href="{$foto_list->mFoto[k].onclick_add|escape:'html'}" onclick="...">
...
</a>
żeby kliknięciem w obrazek zainicjować $_GET['Punkty'], wtedy dostanę mniej więcej coś takiego w pasku przeglądarki:
CODE
.../index.php?GoTyp=2&FotoID=23&Punkty=4
nie wiem czy dobrze kombinuję, ale jeżeli onclick="..." by to załatwił byłoby chyba najprościej. Proszę o jakieś sugestie, pozdro.

Działa na dwa razy, to znaczy jak wyślę formularz mam potrzebną zmienną $_POST ['txtIle'] (czyli pierwsze kliknięcie - w przycisk wyślij). Drugie kliknięcie - w odsyłacz <a href="{$foto_list->mFoto[k].onclick_add|escape:'html'}" > (odsyłaczem jest obrazek, ale właściwie może być jakikolwiek element, ważna jest funkcjonalność). To drugie kliknięcie załatwia sprawę, to znaczy uruchamia dalsze działania już ze zmienną zawierającą wpisaną ilość punktów - czyli zmienną $_POST ['txtIle'], nie wchodzę w dalsze szczegóły bo tam mi wszystko działa. Tu jest kod formularza i odsyłacza.
CODE
<form name="punktacja" action="index.php" method="POST">
<input type="text" name="txtIle" size="2">
<input type="submit" value="wyślij" >
</form>

<a href="{$foto_list->mFoto[k].onclick_add|escape:'html'}" onclick="document.punktacja.submit()">
<img class="wyslij" src="images/glosuj.gif" />
</a>

Ten onclick dołożyłem żeby pokazać jak kombinowałem żeby połączyć to w jedno, ale nic z tego, nie działa.
Pytanie moje jest takie:
czy da się te dwie akcje połączyć w jedno, myślałem też jakby do tego wykorzystać location. Nie wiem jak to leci bo JS dla ciemna magia, ale może się da z formularza zrobić przekierowanie do {$foto_list->mFoto[k].onclick_add|escape:'html'} wtedy odsyłacz <a href ... byłby niepotrzebny.
Smarty komplikuje sprawę. Na podstawie Twoich wskazówek Trawka poszukałem jeszcze trochę i wyczaiłem skrypt który uruchamia formularz po kliknięciu w odsyłacz. Na testach mi to działa, ale jak wstawiam taki sam mechanizm do Smarty przestaje działać. (Skrypt JS osadziłem w Smarty prawidłowo, za pomocą {literal}, nie wywala żadnego błędu).
Może ktoś miał kiedyś taki problem i coś może doradzić?



Działa na dwa razy, to znaczy jak wyślę formularz mam potrzebną zmienną $_POST ['txtIle'] (czyli pierwsze kliknięcie - w przycisk wyślij). Drugie kliknięcie - w odsyłacz <a href="{$foto_list->mFoto[k].onclick_add|escape:'html'}" > (odsyłaczem jest obrazek, ale właściwie może być jakikolwiek element, ważna jest funkcjonalność). To drugie kliknięcie załatwia sprawę, to znaczy uruchamia dalsze działania już ze zmienną zawierającą wpisaną ilość punktów - czyli zmienną $_POST ['txtIle'], nie wchodzę w dalsze szczegóły bo tam mi wszystko działa. Tu jest kod formularza i odsyłacza.
CODE
<input type="text" name="txtIle" size="2">
<input type="submit" value="wyślij" >
</form>

<a href="{$foto_list->mFoto[k].onclick_add|escape:'html'}" onclick="document.punktacja.submit()">
<img class="wyslij" src="images/glosuj.gif" />
</a>

Ten onclick dołożyłem żeby pokazać jak kombinowałem żeby połączyć to w jedno, ale nic z tego, nie działa.
Pytanie moje jest takie:
czy da się te dwie akcje połączyć w jedno, myślałem też jakby do tego wykorzystać location. Nie wiem jak to leci bo JS dla ciemna magia, ale może się da z formularza zrobić przekierowanie do {$foto_list->mFoto[k].onclick_add|escape:'html'} wtedy odsyłacz <a href ... byłby niepotrzebny.
Smarty komplikuje sprawę. Na podstawie Twoich wskazówek Trawka poszukałem jeszcze trochę i wyczaiłem skrypt który uruchamia formularz po kliknięciu w odsyłacz. Na testach mi to działa, ale jak wstawiam taki sam mechanizm do Smarty przestaje działać. (Skrypt JS osadziłem w Smarty prawidłowo, za pomocą {literal}, nie wywala żadnego błędu).
Może ktoś miał kiedyś taki problem i coś może doradzić?
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-2024 Invision Power Services, Inc.