🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
14 messages
14 total messages Started by Renke Sun, 05 Sep 2010 13:45
Przeładowanie formularzem i problem
#50242
Author: Renke
Date: Sun, 05 Sep 2010 13:45
29 lines
2238 bytes
Programuje w PHP i teraz chciałem pobawić się javascriptem, napotkałem 
na problem przy przeładowaniu strony za pomocą formularza (zrobiłem 
zakłądki - tabs). Mój skrypt:

<script type="text/javascript">
    function klik(id) {
        var e = document.getElementById(id);
        if( e == foo1 )
          { e.style.display = 'block';
          document.getElementById('foo2').style.display = 'none';}
        if( e == foo2 )
          { e.style.display = 'block';
          document.getElementById('foo1').style.display = 'none';}
                        }
</script>
<a href="#" onclick="klik('foo1')">Click here1</a>
<a href="#" onclick="klik('foo2')">Click here 2</a>

<div id="foo1">This is foo1</div>
<div id="foo2"  style="display:none;">
This is foo2
<form><input type="submit" value="Submit" name="B1"></form></div>

Jeśli w foo2 przeładuje buttonem formularz to automatycznie włączy mi 
się zakładka 'foo1'. Czy jest jakaś metoda podtrzymania zmiennej 'foo2' 
po przeładowaniu ? W php zrobiłbym to najprościej przekazaniem GET w 
linku, może javascript daje inne możliwości ?

m.
Re: Przeładowanie formularzem i problem
#50243
Author: NKAB -
Date: Tue, 07 Sep 2010 08:17
40 lines
2262 bytes
Renke <niemaemaila@o2.pl> napisał(a): 

> Programuje w PHP i teraz chciałem pobawić się javascriptem, napotkałem 
> na problem przy przeładowaniu strony za pomocą formularza (zrobiłem 
> zakłądki - tabs). Mój skrypt:
> 
> <script type="text/javascript">
>     function klik(id) {
>         var e = document.getElementById(id);
>         if( e == foo1 )
>           { e.style.display = 'block';
>           document.getElementById('foo2').style.display = 'none';}
>         if( e == foo2 )
>           { e.style.display = 'block';
>           document.getElementById('foo1').style.display = 'none';}
>                         }
> </script>
> <a href="#" onclick="klik('foo1')">Click here1</a>
> <a href="#" onclick="klik('foo2')">Click here 2</a>
> 
> <div id="foo1">This is foo1</div>
> <div id="foo2"  style="display:none;">
> This is foo2
> <form><input type="submit" value="Submit" name="B1"></form></div>
> 
> Jeśli w foo2 przeładuje buttonem formularz to automatycznie włączy mi 
> się zakładka 'foo1'. Czy jest jakaś metoda podtrzymania zmiennej 'foo2' 
> po przeładowaniu ? W php zrobiłbym to najprościej przekazaniem GET w 
> linku, może javascript daje inne możliwości ?
> 
> m.

Rozumiem, że chodzi o pozostanie usera w opcji przed refreszem?
Wydaje mi się, że tylko poratują cię ciastka i to te w JS.

Andrzej.


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Przeładowanie formularzem i problem
#50244
Author: A.L.E.C
Date: Tue, 07 Sep 2010 08:31
11 lines
1317 bytes
On 07.09.2010 10:17, NKAB - wrote:

> Rozumiem, że chodzi o pozostanie usera w opcji przed refreszem?
> Wydaje mi się, że tylko poratują cię ciastka i to te w JS.

Można jeszcze stan trzymać w ukrytym polu formularza.

-- 
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl
Roundcube Webmail Developer http://roundcube.net
Re: Przeładowanie formularzem i problem
#50245
Author: NKAB -
Date: Wed, 08 Sep 2010 08:25
14 lines
1119 bytes
A.L.E.C <alec1@poczta.onet.pl> napisał(a): 


> 
> Można jeszcze stan trzymać w ukrytym polu formularza.
> 

Chyba nie bo przeładowanie zmieni stan tego inputa.

Andrzej.


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Przeładowanie formularzem i problem
#50246
Author: A.L.E.C
Date: Wed, 08 Sep 2010 08:35
14 lines
1480 bytes
On 08.09.2010 10:25, NKAB - wrote:

>> Można jeszcze stan trzymać w ukrytym polu formularza.
> 
> Chyba nie bo przeładowanie zmieni stan tego inputa.

No w samym js z inputem się nie da, ale można go obsłużyć w PHP i przy
ponownym wyświetleniu strony ustawić na tą samą wartość, a później
odczytać ją w js.

-- 
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl
Roundcube Webmail Developer http://roundcube.net
Re: Przeładowanie formularzem i problem
#50247
Author: Renke
Date: Thu, 09 Sep 2010 11:45
15 lines
1667 bytes
W dniu 2010-09-08 10:35, A.L.E.C pisze:
> On 08.09.2010 10:25, NKAB - wrote:
>
>>> Można jeszcze stan trzymać w ukrytym polu formularza.
>>
>> Chyba nie bo przeładowanie zmieni stan tego inputa.
>
> No w samym js z inputem się nie da, ale można go obsłużyć w PHP i przy
> ponownym wyświetleniu strony ustawić na tą samą wartość, a później
> odczytać ją w js.
>

W php tylko sesją lub $_get chyba, że jest inne rozwiązanie ?

m.
Re: Przeładowanie formularzem i problem
#50248
Author: NKAB -
Date: Fri, 10 Sep 2010 07:22
25 lines
1639 bytes
Renke <niemaemaila@o2.pl> napisał(a): 

> W dniu 2010-09-08 10:35, A.L.E.C pisze:
> > On 08.09.2010 10:25, NKAB - wrote:
> >
> >>> Można jeszcze stan trzymać w ukrytym polu formularza.
> >>
> >> Chyba nie bo przeładowanie zmieni stan tego inputa.
> >
> > No w samym js z inputem się nie da, ale można go obsłużyć w PHP i przy
> > ponownym wyświetleniu strony ustawić na tą samą wartość, a później
> > odczytać ją w js.
> >
> 
> W php tylko sesją lub $_get chyba, że jest inne rozwiązanie ?
> 
> m.

Chętnie zobaczyłbym działający przykład.

Andrzej.


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Przeładowanie formularzem i problem
#50249
Author: A.L.E.C
Date: Fri, 10 Sep 2010 09:34
25 lines
1885 bytes
On 10.09.2010 09:22, NKAB - wrote:

>>>>> Można jeszcze stan trzymać w ukrytym polu formularza.
> 
> Chętnie zobaczyłbym działający przykład.

Przecież to podstawy.

W formularzu dodajesz
<input type="hidden" name="selectedtab" value="0">

Po stronie Javascript masz:
- w onload (albo wcześniej) odczytujesz value inputa, jeśli inna niż 0
przechodzisz do właściwego taba.
- przy każdym kliku w tab aktualizujesz value inputa.

Po stronie PHP masz:
- przy zapisie formularza, odczytanie wartości POST/GET inputa (i
ewentualny zapis do sesji)
- przy wyświetlaniu formularza ustawienie value inputa.

-- 
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl
Roundcube Webmail Developer http://roundcube.net
Re: Przeładowanie formularzem i problem
#50250
Author: NKAB -
Date: Mon, 13 Sep 2010 07:27
37 lines
2149 bytes
A.L.E.C <alec1@poczta.onet.pl> napisał(a): 

> On 10.09.2010 09:22, NKAB - wrote:
> 
> >>>>> Można jeszcze stan trzymać w ukrytym polu formularza.
> > 
> > Chętnie zobaczyłbym działający przykład.
> 
> Przecież to podstawy.
> 
> W formularzu dodajesz
> <input type="hidden" name="selectedtab" value="0">
> 
> Po stronie Javascript masz:
> - w onload (albo wcześniej) odczytujesz value inputa, jeśli inna niż 0
> przechodzisz do właściwego taba.
> - przy każdym kliku w tab aktualizujesz value inputa.
> 
> Po stronie PHP masz:
> - przy zapisie formularza, odczytanie wartości POST/GET inputa (i
> ewentualny zapis do sesji)
> - przy wyświetlaniu formularza ustawienie value inputa.
> 

Ale mnie chodzi o praktyczny przykład.
Tak też kiedyś kombinowałem ale mi to nie działało
natomiast bez zarzutu i bardzo prosto działa w JS.

Jak to nie tajemnica to daj treść plików.

W moim rozwiązaniu mam 3 listboxy i każdy z nich
ma być na tej samej pozycji po przeładowaniu co przed.
Andrzej.


-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Przeładowanie formularzem i problem
#50251
Author: A.L.E.C
Date: Mon, 13 Sep 2010 08:44
20 lines
1865 bytes
On 13.09.2010 09:27, NKAB - wrote:

> Ale mnie chodzi o praktyczny przykład.
> Tak też kiedyś kombinowałem ale mi to nie działało
> natomiast bez zarzutu i bardzo prosto działa w JS.
> 
> Jak to nie tajemnica to daj treść plików.

Nie mam gotowca, ale to podstawy są.

> W moim rozwiązaniu mam 3 listboxy i każdy z nich
> ma być na tej samej pozycji po przeładowaniu co przed.

Mowa była o zakładkach. Chodzi o pola typu SELECT? Co za problem ustawić
value w momencie wyświetlania strony? DO tego akurat JS nie trzeba.

-- 
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl
Roundcube Webmail Developer http://roundcube.net
Re: Przeładowanie formularzem i problem
#50252
Author: NotBear
Date: Mon, 13 Sep 2010 19:06
8 lines
1390 bytes
W dniu 2010-09-13 10:44, A.L.E.C pisze:
> [...]Mowa była o zakładkach. Chodzi o pola typu SELECT? Co za problem ustawić
> value w momencie wyświetlania strony?

Problem jest, bo SELECT nie ma value ;-)

-- 
NotBear
Re: Przeładowanie formularzem i problem
#50253
Author: Artur Maśląg
Date: Mon, 13 Sep 2010 20:07
9 lines
1527 bytes
W dniu 2010-09-13 21:06, NotBear pisze:
> W dniu 2010-09-13 10:44, A.L.E.C pisze:
>> [...]Mowa była o zakładkach. Chodzi o pola typu SELECT? Co za problem
>> ustawić
>> value w momencie wyświetlania strony?
>
> Problem jest, bo SELECT nie ma value ;-)

A SELECTED to co to jest?
Re: Przeładowanie formularzem i problem
#50254
Author: NotBear
Date: Mon, 13 Sep 2010 20:11
7 lines
1341 bytes
W dniu 2010-09-13 22:07, Artur Maśląg pisze:
> A SELECTED to co to jest?

Atrubut OPTIONa

-- 
NotBear
Re: Przeładowanie formularzem i problem
#50255
Author: NKAB -
Date: Wed, 15 Sep 2010 08:21
126 lines
3892 bytes
Myślałem, że podpatrzę jak to robią inni ale jednak wszyscy się wstydzą.
Ja się nie wstydzę i chociaż to NTG to pokażę swój kod.

Osobiście uważam, że ciastka w JS są lepsze, nie takie himeryczne jak
rozwiąznia z inputem i kodem w php.

-------------
Plik nr 1 "session1.php":

<?
 session_start();  						// to musi 
być na szczycie
 header('Content-type: text/html; charset=UTF-8');   	// to jako nastepne

 echo "<br>Przekazywanie zmiennych w .php<br><br>";

 if(!isSet($zm1))
  session_register('zm1');

 if(!isSet($zm2))
  session_register('zm2');

 foreach($_GET as $i => $value)
  echo "w_GET: ".$i." value=".$value."<br>";

 foreach($_POST as $i => $value)
  echo "w_POST: ".$i." value=".$value."<br>";


?>




<html>

<body>

<form id="f1" type="action" action="?" method="get">
 <!-- tu mozna wyslac tylko metoda GET -->
 <input id="i1" name="zm1">
 <button onClick="submit()">Click...</button>
</form>


<select id="s1" size=10 onChange="foo1()">
 <option>aaa</option>
 <option>bbb</option>
 <option>ccc</option>
 <option>ddd</option>
</select>
<br>

<form id="f2" type="action" action="session2.php" method="post">
 <!-- tu da sie wysylac zarowno metoda  POST jak i GET -->
 <input id="i2" name="zm2" value="123Ä&#8230;Ä&#8230;Ä&#8230;">
 <button onClick="submit()">submit...</button>
</form>
<br>

<script>

zm1="<? echo $_GET['zm1']; ?>";
s1.selectedIndex=parseInt(zm1);
s1.options.selected=true;


foo1()
function foo1()
{
 f1.i1.value="<? echo $zm1; ?>";
 f1.i1.value=s1.selectedIndex;
}

</script>


</body>
</html>

--------

Plik nr 2 "session2.php":

<?

header('Content-type: text/html; charset=UTF-8');

echo "session2.php...<br>";

foreach($_GET as $i => $value)
  echo "w_GET: ".$i." value=".$value."<br>";

 foreach($_POST as $i => $value)
  echo "w_POST: ".$i." value=".$value."<br>";

if(isSet($zm1))
 $zm1=$_POST['zm1'];

if(isSet($zm2))
 $zm2=$_POST['zm2'];

echo "zm1=".$zm1."<br>zm2=".$zm2."<br>";

?>

-----------

Dla uzupełnienia dla początkujących. Wszystko co w pliku .php ma
zanczniki html jest wysyłane z serwera do przeglądarki internauty
a reszta, czyli między zancznikami <?  ... ?> jest wykonawana
wyłacznie na serwerze.
Strasznie nie lubię określeń "po stronie klienta, po stronie serwera",
to dobre w odniesieniu do rysunków.


Tak zapytam z cekawości mimo, że NTG czy jest w php instrukcja, która 
wykonywałaby kod "session2.php" w tle czyli bez pokazywania okna a
efekty z "echo..." jako następne linie w "session1.php"?

Andrzej.



-- 
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads