Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak wyswietlic po kolei wartosci z tablicy w formularzu za pomoca submit?
dolar
post 8.11.2016, 12:12:27
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


Witam, Mam za zadanie wyswielac za pomoca wcisniecia przycisku submit (dalej lub wstecz) nazwy piosenek po kolei. One maja sie zapetlac tzn, jesli wcisne dalej to wyskoczy mi piosnka1, jesli wcisne znowu to ma juz byc piosenka2, a nie moge do tego dojsc... :/. Ciagle wysiwetlaja mi sie wszystkie 4. Oto moj kod:


<html>
<head>
<title>NieMa</title>
<meta charset="UTF-8">
</head>
<body>


<form method="post">
<input type="submit" name="wstecz">
<input type="submit" name="dalej">
</form>



</body>
</html>

<?

$playlista = array(
1 => 'piosenka1',
2 => 'piosenka1',
3 => 'piosenka3',
4 => 'piosenka4',

);

$dalej= $_POST['dalej'];
$wstecz= $_POST['wstecz'];



while ($i<5) {
if ($dalej){
echo $playlista[$i]."\n";
$i++;
} else {
$i--;
echo $playlista[$i]."\n";
}
}

Myslalam ze petla zatrzyma sie w momencie gdy uzytkownik ma wcisnac przycisk i poczek az go wcisnie i dopiero pojdzie dalej ta petla, lecz wychodzi na to ze uzytkownik moze ja wcisnac tylko raz i petla sie zapetla do momentu az i<5. Nie wiem czy mozna mnie zrozumiec, ale staram sie wytlumaczyc dosc prsoto smile.gif. W czym tkwi moj problem?

Ten post edytował dolar 8.11.2016, 12:19:07
Go to the top of the page
+Quote Post
viking
post 8.11.2016, 12:16:58
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Przycisk jest po stronie przeglądarki a kod PHP wykonuje się dużo wcześniej. Nie widać tu też nigdzie deklaracji zmiennej $i. Wysyłaj input type=hidden z aktualną piosenką.


--------------------
Go to the top of the page
+Quote Post
dolar
post 8.11.2016, 12:23:55
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


$i=1;
while ($i<5) {
if ($dalej)
echo $playlista[$i]."\n";
$i++;
}

ok tutaj zmienilam, ale nie doszlam jeszcze z nauka do hidden, czy moglby mi ktos to wytlumaczyc? albo jak zapisac zeby ten kod dzialal?
Go to the top of the page
+Quote Post
emstawicki
post 8.11.2016, 13:22:30
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 40
Dołączył: 2.06.2016
Skąd: Olsztyn

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


Może to coś Tobie wyjaśni zasadę działania formularzy i zmiennych POST.
  1. <?php
  2. $playlista = array(
  3. 1 => 'piosenka1',
  4. 2 => 'piosenka2',
  5. 3 => 'piosenka3',
  6. 4 => 'piosenka4',
  7. );
  8. $i = (isset($_POST['numerek']) && !empty($_POST['numerek'])) ? $_POST['numerek'] : 1;
  9. if (isset($_POST['wstecz']) && $i > 1) $i--;
  10. if (isset($_POST['dalej']) && $i < 4) $i++;
  11. echo "<p>{$playlista[$i]}</p>";
  12. ?>
  13. <form method="post">
  14. <input type="submit" name="wstecz" value="Wstecz!">
  15. <input type="submit" name="dalej" value="Dalej!">
  16. <input type="hidden" name="numerek" value="<?php echo $i;?>">
  17. </form>


--------------------
Jak w Olsztynie, to tylko w Revolver Rock Cafe .
Sprawdź postęp propagacji DNS
Go to the top of the page
+Quote Post
dolar
post 8.11.2016, 14:32:05
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


Hmm podobno da sie to zrobic bez uzywania hidden - czy w moim kodzie nie da rady zrobic modyfikacji tak zeby dzialalo? Bo nie wiem w zasadzie czy szlam w dobrym kierunku nawet
Go to the top of the page
+Quote Post
emstawicki
post 8.11.2016, 14:41:24
Post #6





Grupa: Zarejestrowani
Postów: 207
Pomógł: 40
Dołączył: 2.06.2016
Skąd: Olsztyn

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


Opisz może jak rozumiesz interpretowanie skryptu php, a w szczególności pętli while?
Pętla while działa tak jak ją napisałaś i działa prawidłowo czyli po wciśnięcu przycisku dalej wysyła zmienną POST dalej do skryptu php wyświetla 4 elementy z tablicy.
Równie dobrze mogłabyś to zapisać w ten sposób:
  1. $i=1;
  2. if ($dalej) {
  3. while ($i<5) {
  4. echo $playlista[$i]."\n";
  5. $i++;
  6. }
  7. }

Bo zmienna dalej nie zmieni się przez inkrementacje zmiennej I

Ten post edytował emstawicki 8.11.2016, 14:43:59


--------------------
Jak w Olsztynie, to tylko w Revolver Rock Cafe .
Sprawdź postęp propagacji DNS
Go to the top of the page
+Quote Post
dolar
post 8.11.2016, 15:18:27
Post #7





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 19.10.2016

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


hmm ja myslalam zeby to dzialalo w ten sposob:
Jesli uzytkownik wcisnie przycisk Dalej to wyswietli mi sie piosenka1, jesli ponownie bo wcisnie to wyswietli sie piosenka2 itd i analogicznie do przycisku Wstecz. Chcualam to zrobic na jednej tablicy to raz, a dwa rozumowalam tak, ze petla zatrzymuje sie w momencie kiedy uzytkownik ma wcisnac przycisk Dalej i czeka az go ktos wcisnie, a tutaj widze ze to tak nie dziala. Jak raz wcisnie to juz leci petla az do konca.
Go to the top of the page
+Quote Post
viking
post 8.11.2016, 15:32:55
Post #8





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Tak jak ci pisałem, zacznij rozróżniać że PHP działa po stronie serwera i przeglądarka otrzymuje wynik jego działania. Parser już dawno skończył swoją pracę. To o czym mówisz możliwe jest w aplikacjach GUI pisanych np w Java albo JS.


--------------------
Go to the top of the page
+Quote Post
emstawicki
post 9.11.2016, 09:20:50
Post #9





Grupa: Zarejestrowani
Postów: 207
Pomógł: 40
Dołączył: 2.06.2016
Skąd: Olsztyn

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


Dokładnie jak @viking napisał. Po wczytaniu adresu internetowego przez przeglądarkę ze skryptem php uznajemy że skrypt się wykonał - jak amen w pacierzu.


--------------------
Jak w Olsztynie, to tylko w Revolver Rock Cafe .
Sprawdź postęp propagacji DNS
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 Wersja Lo-Fi Aktualny czas: 19.06.2025 - 02:59