Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript] JS nie przekazuje zmiennej do tablicy, dlaczego ?
Forum PHP.pl > Forum > Przedszkole
warezxp
Witam !

Szybkie tytułowe pytanie, może ktoś wie dlaczego po przesłaniu zmiennej przez formularz zmienna jest pusta ?

  1. ...
  2. <INPUT type="button" style=" width:28px; height:28px;" id="p1" onclick="java script:anzeigen('1');document.forma.z.value='statek';">
  3. <input type="hidden" name="z[]" value="">
  4. ...



Z góry dziękuję za pomoc.

Chodzi oczywiście o zmienna "z[]"
darko
Zwróć uwagę, że nie wysyłasz żadnej wartości dry.gif
warezxp
Jak nie a "statek" to co widmo ? Normalnie powyższy kod działa jak zamiast "z[]" dam "z", tylko takie rozwiązanie mnie nie ratuje, bo potrzebuje tablice ;/
darko
<form action="warezxp.php" method="get">
<input type="hidden" name="z[]" value="1">
<input type="hidden" name="z[]" value="2">
<input type="submit" value="check me out smile.gif" />
</form>
<?php
print_r($_REQUEST);
?>
lukasz.adamczewski
nie jestem pewien ale może zamiast name=z[] zrób name = z[index] i wtedy może odnieś się w javascripcie do elementu formularza z z konkretnym indeksem z['index'] bo w ten sposób on nie jest w stanie powiązać z z z[]
mls
[JAVASCRIPT] pobierz, plaintext
  1. onclick="anzeigen('1');document.forma.elements['z[]'].value='statek';"
[JAVASCRIPT] pobierz, plaintext
warezxp
No tak to działa, żadna rewelacja, tylko ze to musi działać z JS coś na wzór tego co kombinowałem. Tylko dlaczego JS nie chce umieścić "statek" w tablicy "z[]" ?
mls
Bo oficjalnie nie ma czegoś takiego jak tablice w formularzach.
warezxp
kurcze sciana.gif macie jakąś solucje ? Nom oficjalnie może i nie ma ale działa taka tablica tak jak pokazywał w przykładzie 'darko', tylko czemu JS nie chce z niej korzystać ?
darko
Wywołany do tablicy odpowiadam:
  1. <form id="forma" action="ware.php" method="get">
  2. <input id="jeden" type="text" name="z[]" value="1">
  3. <input id="dwa" type="text" name="z[]" value="2">
  4. <INPUT type="button" value="check me out first" id="p1" onclick="document.getElementById('jeden').value='statek1';document.getElementById('dwa').value='statek2';">
  5. <input type="submit" value="check me out second" />
  6. </form>

  1. print_r($_REQUEST);

Pozdrawiam
mls
Chcąc dodać kolejny "wiersz" do takiej "tablicy" musiałbyś tworzyć nowy element typu INPUT o nazwie z[]. Chcąc modyfikować istniejące, odwołujesz się po ID tak jak napisał przedmówca lub poprzez document.forma.elements['z[]'][0], document.forma.elements['z[]'][1], etc.
warezxp
Takie coś też mnie nie ratuje, bo równie dobrze mógłbym robić zamiast z[] zmienne z1, z2, z3... i na końcu wsadzić je do tablicy już po przesłaniu. Mom cóż, ale jak nie da się inaczej to będę musiał tak robić.

Dzięki za starania, chyba że ktoś coś jeszcze wymyśli.
mortus
Hmm... Ja tylko tak się zastanawiam, po co Ci ta tablica, bo może w tym tkwi rozwiązanie problemu? Rozumiem, że chcesz ją przesłać dalej, po zatwierdzeniu submit-em? Jeden przycisk ma zapisywać słowa do tablicy i co potem?
EDIT
Wykombinowałem coś takiego:
  1. <head>
  2. <meta name="content-type" content="text/html; charset=UTF-8" />
  3. <script type="text/javascript">
  4. var z = [];
  5. function addValue(value) {
  6. z.push(value);
  7. document.forma.z.value = z;
  8. }
  9. </script>
  10. </head>
  11. <body>
  12. <?php if(!$_POST['action'] == 'send') { ?>
  13. <form name="forma" action="index.php" method="post">
  14. <input type="button" name="p1" value="add" onclick="addValue('statek');" />
  15. <input type="hidden" name="z" value="" />
  16. <input type="submit" name="action" value="send" />
  17. </form>
  18. <?php } else { ?>
  19. <?php
  20. $tablica = explode(',', $_POST['z']);
  21. foreach($tablica as $row) {
  22. echo $row . '<br />';
  23. }
  24. ?>
  25. <?php } ?>
  26. </body>
  27. </html>

Może się przyda, chociaż zastanowiłbym się nad innym rozwiązaniem. Myślę, że rozwiązanie uzależnione jest od zastosowania tej "tablicy"!
warezxp
"mortus" to jest to ! genialne ! A jak jeszcze dorobić funkcje która usunie ostatnią pozycje w tablicy, jeśli można prosić ?
mortus
Ale z której tablicy? Tej w javascript, czy w php?
warezxp
Z tej z JS
warezxp
Chodzi mi o takie coś jak zrobiłeś "addValue(value)" tylko żeby usuwało ostatki wpis, nie istotne kiedy to ma się robić gdyż funkcje ta będę wywoływał w nieco inny sposób z resztą jak "addValue(value)" tamten przykład z przyciskiem był tylko swoistym ułatwieniem do zrozumienia mojej potrzeby.
mortus
W takim razie przyjrzyj się temu:
  1. <head>
  2. <meta name="content-type" content="text/html; charset=UTF-8" />
  3. <script type="text/javascript">
  4. var z = [];
  5. function addValue(value) {
  6. z.push(value);
  7. document.forma.z.value = z;
  8. }
  9. function deleteLastElement() {
  10. ostatni = z.pop();
  11. document.forma.z.value = z;
  12. }
  13. </script>
  14. </head>
  15. <body>
  16. <?php if(!$_POST['action'] == 'send') { ?>
  17. <form name="forma" action="index.php" method="post" onsubmit="deleteLastElement();">
  18. <input type="text" name="tekst" value="statek" />
  19. <input type="button" name="p1" value="add" onclick="addValue(document.forma.tekst.value);" />
  20. <input type="hidden" name="z" value="" />
  21. <input type="submit" name="action" value="send"/>
  22. </form>
  23. <?php } else { ?>
  24. <?php
  25. $tablica = explode(',', $_POST['z']);
  26. foreach($tablica as $row) {
  27. echo $row . '<br />';
  28. }
  29. ?>
  30. <?php } ?>
  31. </body>
  32. </html>
warezxp
I oto się rozchodziło działa doskonale, wielkie dzięki za pomoc, z JS praktycznie nic nie umiem. Oczywiście plusiki lecą.
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.