Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][JavaScript] JS nie przekazuje zmiennej do tablicy, dlaczego ?
warezxp
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


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[]"
Go to the top of the page
+Quote Post
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%)
-----


Zwróć uwagę, że nie wysyłasz żadnej wartości dry.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
warezxp
post
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


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 ;/
Go to the top of the page
+Quote Post
darko
post
Post #4





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

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


<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);
?>

Ten post edytował darko 23.02.2010, 22:10:44


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
lukasz.adamczews...
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 2
Dołączył: 23.02.2010

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


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[]
Go to the top of the page
+Quote Post
mls
post
Post #6





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


[JAVASCRIPT] pobierz, plaintext
  1. onclick="anzeigen('1');document.forma.elements['z[]'].value='statek';"
[JAVASCRIPT] pobierz, plaintext


Ten post edytował mls 23.02.2010, 22:17:17


--------------------
Go to the top of the page
+Quote Post
warezxp
post
Post #7





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


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[]" ?
Go to the top of the page
+Quote Post
mls
post
Post #8





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Bo oficjalnie nie ma czegoś takiego jak tablice w formularzach.


--------------------
Go to the top of the page
+Quote Post
warezxp
post
Post #9





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


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ć ?
Go to the top of the page
+Quote Post
darko
post
Post #10





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

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


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


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
mls
post
Post #11





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


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.


--------------------
Go to the top of the page
+Quote Post
warezxp
post
Post #12





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


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.
Go to the top of the page
+Quote Post
mortus
post
Post #13





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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"!

Ten post edytował mortus 24.02.2010, 01:09:14
Go to the top of the page
+Quote Post
warezxp
post
Post #14





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


"mortus" to jest to ! genialne ! A jak jeszcze dorobić funkcje która usunie ostatnią pozycje w tablicy, jeśli można prosić ?
Go to the top of the page
+Quote Post
mortus
post
Post #15





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Ale z której tablicy? Tej w javascript, czy w php?
Go to the top of the page
+Quote Post
warezxp
post
Post #16





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


Z tej z JS
Go to the top of the page
+Quote Post
warezxp
post
Post #17





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


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.
Go to the top of the page
+Quote Post
mortus
post
Post #18





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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>
Go to the top of the page
+Quote Post
warezxp
post
Post #19





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

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


I oto się rozchodziło działa doskonale, wielkie dzięki za pomoc, z JS praktycznie nic nie umiem. Oczywiście plusiki lecą.

Ten post edytował warezxp 24.02.2010, 20:57:38
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 Aktualny czas: 22.08.2025 - 00:01