Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Odświerznie zmiennej PHP po wyborze opcji z listy ? Jak ?
Forum PHP.pl > Forum > Przedszkole
warezxp
Witam !

Mam taki problem otóż mam formularz w którym jest lista wyboru, i chciałbym aby po wybraniu jakiejś opcji została zaktualizowana zmienna $x, która z kolei miała by być wyświetlona miedzy cudzysłowami , ale nie wiem jak tego dokonać kombinowałem coś z JS ale jestem za słaby. Będę wdzięczny za pomoc. Poniżej fragment formularza by lepiej zrozumieć mój problem:
skowron-line
Najprościej jak się da
[JAVASCRIPT] pobierz, plaintext
  1. function changeit( v )
  2. {
  3. document.getElementById( 'pole' ).innerHTML = v;
  4. }
[JAVASCRIPT] pobierz, plaintext

  1. <select onchange="changeit( this.value );">

*pisane z palca.
kamil4u
Rozumiem, że tam masz:
Cytat
W bazie dla arkusza informatyk znajdują 123 zadania

I chcesz zmienić i informatyk i liczbę 123 smile.gif

Jeśli tak to poczytaj też o AJAX-sie, żeby dynamicznie zmienić PHP-owską zmienną $x. Lub przy wczytywaniu strony niech PHP tworzy rodzaj zmiennych z ilością tych rekordów, coś ala:
Kod
<script>
var informatyk = <?php echo($ilość_rekordów_dla_informatyka); ?>;
var teleinformatyk = <?php echo($ilość_rekordów_dla_teleinformatyka); ?>;
...
<script>

i połącz to z tym co napisał przedmówca.
warezxp
Hi !

Kurcze coś nie działa, ale zapewne to wina źle wywoływanej zmiennej JS. Zrobiłem tak:
  1. <head>
  2. <script type="text/javascript">
  3. function changeit( v )
  4. {
  5. document.getElementById( 'arkusz' ).innerHTML = v;
  6. }
  7. </script>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  9. </head>
  10. ...
  11. echo '<center><form name="testy" method="post" action="index.php" enctype="multipart/form-data">
  12. <br><b><font color="#FF9900">Dodaj zadanie egzaminazcyjne do bazy MySQL:</font></b><br><br>
  13. Wybierz arkusz z pytaniami dla kierunku Technik: <SELECT name="arkusz" id="arkusz" onchange="changeit( this.value );">';
  14. $res = mysql_list_tables("sdhostp_testy");
  15. $num_rows = mysql_num_rows($res);
  16. for ($i = 0; $i < $num_rows; $i++)
  17. {
  18. echo "<OPTION value='".mysql_tablename($res, $i)."'>".mysql_tablename($res, $i)."</OPTION>";
  19. }
  20. $pyt = mysql_query("SELECT * FROM $arkusz");
  21. echo '</SELECT><br><br>(W bazie dla arkusza "<script language="javascript" type="text/javascript">alert(v);</script>" aktualnie znajduje się '.mysql_num_rows($pyt).' pytań.)<br>
  22. ...


Dynamiczne zmieniająca się zmienna PHP rozwiązała by wszystko w JS i innych jestem zielony. Będę wdzięczny z dalszą pomoc.
kamil4u
Tragedia winksmiley.jpg

No to od początku:
- najpierw musisz zrobić zmienne JS, które będą w sobie zawierać informacje na temat ilości rekordów dla poszczególnych kategorii
- przy zamianie select-a wykonuje się zdarzenie change, w którym musisz wywołać odpowiednią funkjcę
- funkcja ta musi zmienić zawartość 2 elementów o odpowiednich id

Przykład bez PHP:
Kod
<script>
var test1 = 123;//te dane musisz pobrać z PHP
var test2 = 456;//te dane musisz pobrać z PHP
var test3 = 789;//te dane musisz pobrać z PHP

function changeit(zmienna){
document.getElementById('pole').innerHTML = zmienna + ' - '+ eval(zmienna); //eval to niekoniecznie najlepsze rozwiązanie
}
window.onload = function(){ changeit('test1'); }
</script>

<select onchange="changeit(this.value);">';
<option value='test1'>test1</option>
<option value='test2'>test2</option>
<option value='test3'>test3</option>
</select>

<br>
<span id="pole"></span>


Lub skorzystaj z AJAX-a. Jak nie chcesz robić tego samemu to są różnorakie biblioteki: np. mintAjax lub jQuery
warezxp
Źle się rozumiemy,


I najlepiej żeby trzymała to jakaś dynamiczna zmienna, gdyż w dalszej części kodu chciałbym po przetwarzać ją jeszcze trochę.
kamil4u
Dokładnie to napisał Ci ~skowron-line . Więc nie wiem w czym masz problem... Poczytaj co to takiego "getElementById" i stwórz odpowiedni element - najlepiej span. Wartość zawsze możesz sobie spr. wyciągając ją właśnie z tego elementu lub zapisując ją wcześniej do zmiennej globalnej.... A jak chcesz, żeby zmienna była dostępna z poziomu PHP użyj AJAX-a lub ciasteczka.
warezxp
O to się rozchodzi że gdy skorzystam z tego co napisał kolega w drugim poście tj. posłużę się:
  1. document.getElementById('arkusz').innerHTML;

To wówczas wyświetla mi z listy <Select> o nazwie arkusz wszystkie możliwe opcje do wyboru, anie to co ktoś wybrał ! Dokładnie takie coś wyświetla:
  1. <option value="informatyk">informatyk</option><option value="teleinformatyk">teleinformatyk</option><option value="zywienia">zywienia</option>


Będę wdzięczny za pomoc.
kamil4u
Zanim coś napiszesz spr. wszystkie funkcje, gdyż źle to zrozumiałeś...
Wszystko co potrzebujesz masz w tym temacie. Przeanalizuj też kod podany przeze mnie o 13.09(jak jakiegoś fragmentu nie rozumiesz zapytaj się)

Poczytaj o innerHTML i nawigacji po elementach przez DOM.

PS.
Cytat
1.
function changeit( v )
2.
{
3.
document.getElementById( 'pole' ).innerHTML = v;
4.
}
Id w tym wypadku nie odnosi się do listy rozwijanej, a do elementu HTML o id=pole, którego jeszcze nie masz, a powinien znaleźć się tu:
Kod
echo '</SELECT><br><br>(W bazie dla arkusza <span id="pole"></span> aktualnie znajduje się '.mysql_num_rows($pyt).' pytań.)<br>
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.