Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [smarty][JavaScript] przekazanie zmiennej, jak przekazać zmienną klikając na obrazek
aqun
post 19.11.2009, 12:46:30
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.11.2009

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


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ć?
Go to the top of the page
+Quote Post
Trawka
post 19.11.2009, 19:11:34
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 3
Dołączył: 6.10.2007
Skąd: Warszawa

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


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.
Go to the top of the page
+Quote Post
aqun
post 23.11.2009, 22:02:41
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.11.2009

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


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ć?
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: 26.06.2025 - 09:18