Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wywoływanie funkcji PHP z onChange() w SELECT, Czy można wywołac funkcje php a nie javascript?
poorman
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.11.2009
Skąd: zakopane hej!

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


Chce skorzystac z funkcj w PHP poniewaz korszytałem z javascriptowj jednak musiałem zmienna przesyłac spowrotem do php(cookies, form get i post, hidden input itd). Bardzo prosze o pomoc poniewaz dale to nie dziala .

  1. function test($box)
  2. {
  3. //global $zmienna;
  4. //$zmienna = $box;
  5. echo("<script LANGUAGE='JavaScript'>
  6. window.alert('wywolana!')
  7. </SCRIPT>");
  8. }


  1. <select id="category" name="eq" onchange="test('this.value')";>
  2. <? while ($row = mysql_fetch_assoc($resultCat))
  3. {
  4. echo "<option ";
  5. if ($row['name']==$cat_table[$products['product_id']])
  6. {
  7. echo "selected=\"selected\"";}
  8. echo " value=\"".$cat_table2[$row['name']]."\">".$row['name']."</option>";
  9. ?>}


a pozniej korzystam ze zmiennej:
<a href="#" onclick="fupdateProduct(<?=$zmienna?>); return false;">[save]</a>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Daj więcej kodu, bo z tego skrawka to nie wiadomo czy select domykasz... aha i napisz też o najważniejszym: co chcesz zrobić (IMG:style_emoticons/default/questionmark.gif) Generalnie nie wykonasz kodu php z poziomu javascript, chyba, że XmlHttpRequest (a zatem kompletnie od javascriptu nie uciekniesz).

Cytat
Bardzo prosze o pomoc poniewaz dale to nie dziala .


To znaczy?? Co się (nie)dzieje, co pokazuje konsola błędów (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował darko 30.11.2009, 03:07:30
Go to the top of the page
+Quote Post
poorman
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.11.2009
Skąd: zakopane hej!

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


Chce tylko zrobic dynamiczne wywołanie w liscie rozwijanej "SELECT" za pomoca eventa "OnClicick()" tak ze po wybraniu powiedzmy napisu "kategoria 2" zmiennej globalnej "zmienna" przypisywało wartość "value" z "SELECT" a na koncu korzystało z funckji javascript'owej "fupdateProduct" w innym pliku. Tylko mam problem z wywołaniem funckji PHP'owej wlasnie. javacsriptowa dziala ale lepiej by było w php bo nie musiałbym przesyłac znowu zmiennej. Nie wiem czy to lepiej czy nie poniewaz kod php jest wykonywany na serwerze wiec z teg co mi wiadomo lepiej by było w javacript ale łatwiej jest w php. Mysle ze chyba wyjasniłem problem. Głownie nie chce mi dzialac wywołanie funkcji. a co do błedó na konsoli to nie bardzo pomoge ;]
  1. <?php
  2.  
  3. function test($box)
  4. {
  5. // global $zmienna;
  6. $zmienna = $box
  7. }
  8.  
  9. //$count=1;
  10. while ($row = mysql_fetch_assoc($resultMil))
  11. {
  12. echo "<div id=\"milk-".$row['milk_id']."\">
  13. <input type=\"hidden\" class=\"milk\" value=\"".$row['milk_id']."\"/>".$row['name']."&nbsp; <a href=\"#\" onclick=\"fdeleteMilk(".$row['milk_id'].", "."'".$row['name']."'); return false;\">[delete]</a></div>";
  14. ()+'\')
  15.  
  16. }
  17. ?>
  18. </td>
  19. <td>
  20. <select id="category" name="eq" onchange="test('this.value')";>
  21. <?php
  22. while ($row = mysql_fetch_assoc($resultCat))
  23. {
  24. echo "<option ";
  25. if ($row['name']==$cat_table[$products['product_id']])
  26. {
  27. echo "selected=\"selected\"";}
  28. echo " value=\"".$cat_table2[$row['name']]."\">".$row['name']."</option>";
  29. }
  30. ?>
  31. </select>
  32. </td>
  33.  
  34.  
  35. </tr>
  36. <tr>
  37. <td colspan="2">
  38. <input type="hidden" id="id" value="<?=$products['product_id']?>"/>
  39.  
  40. <a href="#" onclick="fupdateProduct(<?=$zmienna?>); return false;">[save]</a>
  41. </td>
  42. </tr>

P.S. Najlepiej to by było wyciagnąć zawartość z SELECT'a z wartosci NAME zaznaczonej w PHP i umiesic w funkcji "fUpdate()" tylko nie wiem czy sie da.
w javascript sie da za pomoca
  1. "document.FormName.eq.selectedIndex.name"
ale znowu trzeba przesyłać do PHP zmienną !


Ten post edytował poorman 30.11.2009, 04:19:07
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tak da się wywołać funkcję php bez odswieżania strony ale za pośrednictwem javascript + ajax.
Dużo informacji na ten temat masz w googlach + przykłady
select onchange ajax
Go to the top of the page
+Quote Post
R4D3K
post
Post #5





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

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


Witam,
Dałeś za mało kodu, żeby stwierdzić czy na pewno wszystko jest ok. Np nie widać zapytania,do którego się odwołujesz. Jeśli jednak twój problem polega tylko na przesłaniu zmiennej eq i tych hiddenów to jest to standardowy problem wysłania zmiennych z formularza do serwera PHP. Jeśli chcesz to zrobić metodą post musisz dać znacznik form z odpowiednimi parametrami oraz przycisk typu submit i w skrypcie php sprawdzić czy coś zostało przesłane. Możesz to też zrobić query stringiem, jeśli po kliknięciu jakiegoś pola w select odpalasz jakaś funkcje w js, wystarczy dac
Kod
window.location=plik.php?eq= cos

w zależności od wybranego pola.
Mam nadzieje , ze pomogłem.
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To o czym piszesz to bardzo często poruszany temat: jak wybierając w jednym select opcę sprawić by zmieniły się dane w jakimś innym polu (najczęściej w innym select). Ten problem znajdziesz nawet na tym forum a w google jest on znany jako "populated select" i opiera sie o AJAX właśnie, bo inaczej nie odwołasz się poprzez klienta do skryptu, który może być wykonany wyłącznie na serwerze ( tylko on posiada interesujące Cię dane ). Zadaj więc odpowiednie pytanie w szukajce a znajdziesz rozwiązanie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
poorman
post
Post #7





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.11.2009
Skąd: zakopane hej!

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


Jednak nie trzeba przycisku submit ani ajaxa, znalazłem nawet za proste rozwiazanie ktore mi jak narazie wystarcza.
Tworzymy zwyklego select i przypisjemy przypisanie wartosci do pola ukrytego hidden w evencie onChange() i juz mamy zmienna z ktorej mozemy korzystac.
  1. <select name="category_name" id="category" onchange="document.getElementById('category_input').value = this.options[this.selectedIndex].value;">
  2. <?php
  3. while ($row = mysql_fetch_assoc($resultCat))
  4. {
  5. echo "<option ";
  6. echo " value=\"".$cat_table2[$row['name']]."\">".$row['name']."</option>";
  7. }
  8. ?>
  9. </select>
  10.  
  11. <input type="hidden" name="pos_category_input" value="1" id="category_input" />

niewodoczne pole
  1. <input type="hidden" name="pos_category_input" value="1" id="category_input" />


wykorzystanie:
  1. <a href="#" onclick="fupdateProduct(document.getElementById('category_input').value); return false;">[save]</a>

sorry za offtop ale pokoleniom moze sie przydac ;]
pozdrawiam i zostawiam po sogu

Ten post edytował poorman 3.12.2009, 02:15:38
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:50