warezxp
23.02.2010, 21:30:32
Witam !
Szybkie tytułowe pytanie, może ktoś wie dlaczego po przesłaniu zmiennej przez formularz zmienna jest pusta ?
...
<INPUT type="button" style=" width:28px; height:28px;" id="p1" onclick="java script:anzeigen('1');document.forma.z.value='statek';"> <input type="hidden" name="z[]" value=""> ...
Z góry dziękuję za pomoc.
Chodzi oczywiście o zmienna "z[]"
darko
23.02.2010, 21:51:09
Zwróć uwagę, że nie wysyłasz żadnej wartości
warezxp
23.02.2010, 22:06:42
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
23.02.2010, 22:10:27
<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

" />
</form>
<?php
print_r($_REQUEST);
?>
lukasz.adamczewski
23.02.2010, 22:12:16
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[]
onclick="anzeigen('1');document.forma.elements['z[]'].value='statek';"
warezxp
23.02.2010, 22:19:49
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[]" ?
Bo oficjalnie nie ma czegoś takiego jak tablice w formularzach.
warezxp
23.02.2010, 22:24:25
kurcze

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
23.02.2010, 22:28:55
Wywołany do tablicy odpowiadam:
<form id="forma" action="ware.php" method="get"> <input id="jeden" type="text" name="z[]" value="1"> <input id="dwa" type="text" name="z[]" value="2"> <INPUT type="button" value="check me out first" id="p1" onclick="document.getElementById('jeden').value='statek1';document.getElementById('dwa').value='statek2';"> <input type="submit" value="check me out second" />
Pozdrawiam
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
23.02.2010, 22:36:58
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
23.02.2010, 23:20:59
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?
EDITWykombinowałem coś takiego:
<meta name="content-type" content="text/html; charset=UTF-8" /> <script type="text/javascript"> var z = [];
function addValue(value) {
z.push(value);
document.forma.z.value = z;
}
<?php if(!$_POST['action'] == 'send') { ?>
<form name="forma" action="index.php" method="post"> <input type="button" name="p1" value="add" onclick="addValue('statek');" /> <input type="hidden" name="z" value="" /> <input type="submit" name="action" value="send" /> <?php } else { ?>
<?php
$tablica = explode(',', $_POST['z']);
foreach($tablica as $row) {
echo $row . '<br />';
}
?>
<?php } ?>
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
24.02.2010, 20:04:55
"mortus" to jest to ! genialne ! A jak jeszcze dorobić funkcje która usunie ostatnią pozycje w tablicy, jeśli można prosić ?
mortus
24.02.2010, 20:09:05
Ale z której tablicy? Tej w javascript, czy w php?
warezxp
24.02.2010, 20:12:06
Z tej z JS
warezxp
24.02.2010, 20:42:09
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
24.02.2010, 20:51:49
W takim razie przyjrzyj się temu:
<meta name="content-type" content="text/html; charset=UTF-8" /> <script type="text/javascript"> var z = [];
function addValue(value) {
z.push(value);
document.forma.z.value = z;
}
function deleteLastElement() {
ostatni = z.pop();
document.forma.z.value = z;
}
<?php if(!$_POST['action'] == 'send') { ?>
<form name="forma" action="index.php" method="post" onsubmit="deleteLastElement();"> <input type="text" name="tekst" value="statek" /> <input type="button" name="p1" value="add" onclick="addValue(document.forma.tekst.value);" /> <input type="hidden" name="z" value="" /> <input type="submit" name="action" value="send"/> <?php } else { ?>
<?php
$tablica = explode(',', $_POST['z']);
foreach($tablica as $row) {
echo $row . '<br />';
}
?>
<?php } ?>
warezxp
24.02.2010, 20:56:26
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.