Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zachowanie zmiennej
Forum PHP.pl > Forum > Przedszkole
Eurynomoss
siemka mam taki maly problemik mianowicie chcialem zrobic na konkurs os w rodzaju malego testu i wszystko bylo by wporzadku gdyby po kazdym pytaniu zmienna x sie zwiekszala o 1 i zachowywala swoja wartosc. a tutaj zmienna zmienia wartosc ale po wykonaniu skryptu wraca do pierwotnej wartosci. hełp smile.gif

plik test.php
  1. <?
  2. include ("pytania.php");
  3.  
  4. $x = 1;
  5. $pkt = 0;
  6.  
  7. if (isset($odp)) {
  8.  
  9. if ($odp !== "1") {
  10.  
  11. echo 'Zła odpowiedz! Zaczynaj od początku!<br><br>';
  12.  
  13. } else {
  14. $x += 1;
  15. $pkt +=1;
  16. }
  17. }
  18.  
  19. nrp($x);
  20. echo "<b>PUNKTY:</b> $pkt";
  21. ?>


i plik pytania.php
  1. <?
  2. function nrp ($x) {
  3. if ($x == "1") {
  4. p1($odp);
  5. } else if ($x == "2") {
  6. p2($odp);
  7. } else if ($x == "3") {
  8. p3($odp);
  9. } else if ($x == "4") {
  10. p4($odp);
  11. } else {
  12. echo "Nie ma takiego pytania!";
  13. }
  14. }
  15.  
  16. function p1($odp){
  17. echo 'Pytanie 1<br><br>';
  18. echo '<b>tekst</b><br><br>';
  19. echo 'co to jest?<br>';
  20. echo '<form action="1.php3" method="GET">';
  21. echo '<input type="radio" name="odp" value="1"> tekst<br>';
  22. echo '<input type="radio" name="odp" value="2"> literka<br>';
  23. echo '<input type="radio" name="odp" value="3"> cyferka<br><br>';
  24. echo '<input type="submit" value="ok">';
  25. echo '<input type="reset" value="reset"><br>';
  26. echo '</form>';
  27. }
  28.  
  29. function p2($odp){
  30. echo 'Pytanie 2<br><br>';
  31. echo '<b>777</b><br><br>';
  32. echo 'co to jest?<br>';
  33. echo '<form action="1.php3" method="GET">';
  34. echo '<input type="radio" name="odp" value="3"> tekst<br>';
  35. echo '<input type="radio" name="odp" value="2"> literka<br>';
  36. echo '<input type="radio" name="odp" value="1"> cyferka<br><br>';
  37. echo '<input type="submit" value="ok">';
  38. echo '<input type="reset" value="reset"><br>';
  39. echo '</form>';
  40. }
  41.  
  42. function p3($odp){
  43. echo 'Pytanie 3<br><br>';
  44. echo '<b>czerwony</b><br><br>';
  45. echo 'jaki to kolor?<br>';
  46. echo '<form action="1.php3" method="GET">';
  47. echo '<input type="radio" name="odp" value="3"> zielony<br>';
  48. echo '<input type="radio" name="odp" value="1"> czerwony<br>';
  49. echo '<input type="radio" name="odp" value="2"> niebieski<br><br>';
  50. echo '<input type="submit" value="ok">';
  51. echo '<input type="reset" value="reset"><br>';
  52. echo '</form>';
  53. }
  54.  
  55. function p4($odp){
  56. echo 'Pytanie 4<br><br>';
  57. echo '<b>Britney</b><br><br>';
  58. echo 'podaj nazwisko<br>';
  59. echo '<form action="1.php3" method="GET">';
  60. echo '<input type="radio" name="odp" value="2"> Iglesias<br>';
  61. echo '<input type="radio" name="odp" value="1"> Spears<br>';
  62. echo '<input type="radio" name="odp" value="3"> Anderson<br><br>';
  63. echo '<input type="submit" value="ok">';
  64. echo '<input type="reset" value="reset"><br>';
  65. echo '</form>';
  66. }
  67. ?>


prosze pomozcie smile.gif
spryciula
bo za każdym razem, jak odpalasz skrypt, ustawiasz wartość zmiennej
  1. <?php
  2. $x =1;
  3. ?>
,
jeżeli chcesz ją zapisywać, dla konkretnego użytkownika, to zapisz wartość tej zmiennej np. w ciasteczku

o ciastkach czytaj w manualu

COOKIE
Mary$
możesz też użyć SESSION" title="Zobacz w manualu PHP" target="_manual. Ogólnie po odświeżeniu skryptu (bo to właśnie robisz wciskając "OK") wszelkie zmienne są resetowane.
Eurynomoss
no wlasnie a czy nie dalo by się może przechowac jej juz powiekszonej o 1 w formularzu w polu hidden?
Mary$
dało by się. A tak btw - czy to działa? przecież w środku funkcji nie daje się Echo, tylko co najwyżej zbiera sie wszystkie dane do zmiennej i na koniec
  1. <?php
  2. return $kod;
  3. ?>
. Po drugie: co zrobisz jak będziesz miał 200 pytań? Będziesz tak przepisywał cały ten kod 200 razy? weż lepiej zrób dwie tablice i pętlę smile.gif
Eurynomoss
bardzo był bym wdzieczny gdybyś mnie poinstruowal chociaz troszke smile.gif
Mary$
plik test.php
  1. <?php
  2.  
  3. //rejestracja zmiennych (jeżeli to potrzebne)
  4. IF ((!session_is_registered($_SESSION['pytanie']))&&(!session_is_registered($_SESSION['punkty']))&&(!isset($_POST['odp']))){
  5. session_register('pytanie');
  6. $_SESSION['pytanie'] = 0;
  7. session_register('punkty');
  8. $_SESSION['punkty'] = 0;
  9. }
  10.  
  11. include('pytania.php'); // dołączam plik z pytaniami oraz z odpowiedziami
  12.  
  13. //sprawdzanie poprawności
  14. if (isset($_POST['odp'])) {
  15. if ($_POST['odp'] != $pop_odpowiedzi[$_SESSION['pytanie']]) {// co się dzieje, gdy odpowiedź niepoprawna
  16. echo 'Zła odpowiedz! Zaczynasz od początku!<br><br>';
  17. $_SESSION['pytanie'] = 0;
  18. $_SESSION['punkty'] = 0;
  19. } else {//jeżeli odpowiedź poprawna
  20. $_SESSION['pytanie']++;
  21. $_SESSION['punkty']++;
  22.  
  23. IF ($_SESSION['pytanie'] > count($pytania)-1){ //sprawdzanie, czy nie skończyły się pytania, jeżeli tak, wyświetla komunikat
  24. Echo 'Koniec! Twój wynik to: '.$_SESSION['punkty'].'<br>
  25. <a href="">Od początku</a>';
  26. session_unregister('punkty');
  27. session_unregister('pytanie');
  28. session_destroy();//czyszczenie całej sesji
  29. exit();//zatrzymuje wykonywanie skryptu
  30. };
  31. }
  32. }
  33.  
  34. Echo '<p><strong>'.$pytania[$_SESSION['pytanie']].'</strong></p>';
  35. Echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
  36. $Aodp = explode(',',$odpowiedzi[$_SESSION['pytanie']]);
  37. $i = 0;
  38. while ($i < count($Aodp)){
  39. Echo '<input type="radio" name="odp" value="'.$Aodp[$i].'">'.$Aodp[$i].'<br>
  40. ';
  41. $i++;
  42. };
  43. Echo '<input type="submit" value="OK">
  44. </form>';
  45.  
  46. echo "<b>PUNKTY:</b> ".$_SESSION['punkty'];
  47. ?>


plik pytanie.php
  1. <?php
  2. //pytania
  3. $pytania = array(
  4. 'Ile to jest 2+2?',
  5. 'Ile to jest 4:2 ?',
  6. 'Ile to jest 8-2?', 
  7. 'Ile to jest 6+4?'
  8. );
  9.  
  10. //poprawne odpowiedzi
  11. $pop_odpowiedzi = array(
  12. '4',
  13. '2',
  14. '6',
  15. '10'
  16. );
  17.  
  18. //możliwości do wyboru oddzielone PRZECINKIEM
  19. $odpowiedzi = array('2,4,6',
  20. '3,7,2',
  21. '3,6,2',
  22. '2,6,10'
  23. );
  24. ?>

z takich ważniejszych funkcji, to masz: session_register" title="Zobacz w manualu PHP" target="_manual, session_start" title="Zobacz w manualu PHP" target="_manual, session_is_registered" title="Zobacz w manualu PHP" target="_manual, explode" title="Zobacz w manualu PHP" target="_manual
Eurynomoss
ok sprawdze dzieki za to smile.gif
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.