Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z dzialaniem skryptu
Forum PHP.pl > Forum > Przedszkole
Marnius
Witam, mam problem z działaniem skryptu, nie ogarniam pewnej rzeczy. Zaznaczam ze dopiero się uczę wiec proszę o dużo wyrozumiałości. Działanie tego skryptu polega na tym że "user" tworzy pytania, zaznacza prawidłowe odpowiedzi, następnie wyświetlają się te pytania i odpowiedzi do zaznaczenia, na samym końcu są liczone punkty. Wygląda to mniej więcej tak:

Index:

  1. <html>
  2. <body>
  3.  
  4.  
  5. <form action="index.php" method="post" >
  6. Iloćś Pytań <input type="text" name="ilosc_pytan" value="" /> </br>
  7.  
  8. Ilość odpowiedzi na pytanie: <select name="ilosc_odp">
  9. <option>2</option> <!-- Formularz -->
  10. <option>4</option>
  11. </select> </br>
  12. <input type="submit" value="Prześlij" />
  13. </form>
  14. <form action="form.php" method="post" >
  15. <?php
  16. $pytania= $_POST['ilosc_pytan']; // przypisywanie wartosci pol formularza do zmiennych
  17. $odpowiedzi= $_POST['ilosc_odp'];
  18. $abcd[1]= 'a. ';
  19. $abcd[2]= 'b. ';
  20. $abcd[3]= 'c. '; // tablica z literami do odpowiedzi
  21. $abcd[4]= 'd. ';
  22. echo '<input type="hidden"'. 'name='. '"'. "ilosc_wszystkich_pytan". '"' . 'value='. '"'. "$pytania". '" />'; // liczba ilosci pytan
  23. echo '<input type="hidden"'. 'name='. '"'. "ilosc_wszystkich_odpowiedzi". '"' . 'value='. '"'. "$odpowiedzi". '" />';
  24.  
  25. // tworzenie pytan
  26. for($i=1; $i<= $pytania; $i++)
  27. {
  28. echo "Pytanie $i: ". '<input type="text"'. 'name='. '"'. "ilosc_pytan$i". '"' . 'value="" />'. '</br>'; //petla for ilosc pytan i odpow
  29.  
  30. // jesli sa tylko dwie odpowiedzi funkca if
  31. if($odpowiedzi==2)
  32. {
  33. echo "Podaj odpowiedzi, zaznacz takrze ktora jest poprawna: </br>";
  34. for($j=1; $j<=2; $j++)
  35. {
  36. echo '<input type="checkbox"'. 'name='. '"'. "odp_true1$i$j". '"' . 'value='. '"'. "$j". '" />'. " $abcd[$j]".
  37. '<input type="text"'. 'name='. '"'. "odpowiedzi$i$j". '"' . 'value="" />';
  38. }
  39. echo "</br></br>";
  40. }
  41. // jesli sa 4 odpowiedzi elseif
  42.  
  43. elseif($odpowiedzi==4)
  44. {
  45. echo "Podaj odpowiedzi, zaznacz takrze ktora jest poprawna: </br>";
  46.  
  47. for($j=1; $j<=4; $j++)
  48. {
  49. echo '<input type="checkbox"'. 'name='. '"'. "odp_true1$i$j". '"' . 'value='. '"'. "$j". '" />'. " $abcd[$j]".
  50. '<input type="text"'. 'name='. '"'. "odpowiedzi$i$j". '"' . 'value="" />'. '</br>';
  51. }
  52. echo "</br></br>";
  53. }
  54. }
  55. echo '<input type="submit" value="Wyślij" /> </form>';
  56.  
  57. // koniec skryptu pytajacego
  58. // poczatek skryptu obliczajacego i wyswietlajacego
  59. ?>
  60. </body>
  61. </html>



plik form:

  1. <html><body>
  2.  
  3. <form action="form.php" method="post" >
  4. <?php
  5.  
  6. $abcd[1]= 'a. ';
  7. $abcd[2]= 'b. ';
  8. $abcd[3]= 'c. '; // tablica z literami do odpowiedzi
  9. $abcd[4]= 'd. ';
  10.  
  11. $ile_pytan = $_POST['ilosc_wszystkich_pytan'];
  12. $ile_odpowiedzi= $_POST['ilosc_wszystkich_odpowiedzi'];
  13.  
  14. // przesyla informacje o ilosci pytan i odpowiedzi
  15.  
  16. echo '<input type="hidden"'. 'name='. '"'. "ilosc1". '"' . 'value='. '"'. "$ile_pytan". '" />';
  17. echo '<input type="hidden"'. 'name='. '"'. "ilosc2". '"' . 'value='. '"'. "$ile_odpowiedzi". '" />';
  18.  
  19. // ...
  20. // niewidoczne pola odpowiedzi
  21. for($rr=1; $rr<=$ile_pytan; $rr++)
  22. {
  23. // jesli 2 odpowiedzi
  24.  
  25. if($ile_odpowiedzi==2)
  26. {
  27. for($aa=1; $aa<=2; $aa++)
  28. {
  29. $true_index= $_POST["odp_true1$rr$aa"];
  30. echo '<input type="hidden"'. 'name='. '"'. "odp_true3$rr$aa". '"' . 'value='. '"'. "$true_index". '" /></br>';
  31. }
  32.  
  33. }
  34. // jesli 4 odp
  35.  
  36. if($ile_odpowiedzi==4)
  37. {
  38. for($aa=1; $aa<=4; $aa++)
  39. {
  40. $true_index= $_POST["odp_true1$rr$aa"];
  41. echo '<input type="hidden"'. 'name='. '"'. "odp_true3$rr$aa". '"' . 'value='. '"'. "$true_index". '" /></br>';
  42. }
  43. }
  44. }
  45. // ...
  46.  
  47. for($z=1; $z<=$ile_pytan; $z++)
  48. {
  49. $post= $_POST["ilosc_pytan$z"]; // petla wyswietla pytania
  50. echo "<b>$z. $post ?</b> </br>";
  51.  
  52. if($ile_odpowiedzi==2)
  53. {
  54. for($zz=1; $zz<=2; $zz++)
  55. {
  56. $odp= $_POST["odpowiedzi$z$zz"]; // jesli 2 odpowiedzi
  57.  
  58. echo '<input type="checkbox"'. 'name='. '"'. "odp_true2$z$zz". '"' . 'value='. '"'. "$zz". '" />'. "<b> $abcd[$zz]</b> $odp </br>";
  59. }
  60. }
  61. // ...
  62.  
  63. if($ile_odpowiedzi==4)
  64. {
  65. for($zz=1; $zz<=4; $zz++)
  66. {
  67. $odp= $_POST["odpowiedzi$z$zz"]; // jesli 4 odpowiedzi
  68.  
  69. echo '<input type="checkbox"'. 'name='. '"'. "odp_true2$z$zz". '"' . 'value='. '"'. "$zz". '" />'. "<b> $abcd[$zz]</b> $odp </br>";
  70. }
  71. }
  72. // ...
  73. }
  74. // koniec skryptu wyświetlania
  75. echo '<input type="submit" value="Wyslij" /></form>';
  76.  
  77. // skrypt liczacy
  78.  
  79. $ile_pytan1 = $_POST['ilosc1']; // przypisywanie ilosci pytan i odpowiedzi
  80. $ile_odpowiedzi2= $_POST['ilosc2'];
  81.  
  82. for($cc=1; $cc<=$ile_pytan1; $cc++)
  83. {
  84.  
  85. // jesli 2 odp
  86.  
  87. if($ile_odpowiedzi2==2)
  88. {
  89.  
  90. $true1= $_POST["odp_true3$cc". '1'];
  91. $true2= $_POST["odp_true3$cc". '2'];
  92.  
  93. $true11= $_POST["odp_true2$cc". '1'];
  94. $true22= $_POST["odp_true2$cc". '2'];
  95.  
  96.  
  97. echo $true1; ////////////////////////////////////////// o to chodzi
  98.  
  99. if($true1==$true11 and $true2==$true22 and $true1=!0 and $true11!=0 and $true2=!0 and $true22!=0)
  100. $ppp++;
  101. if($true1==$true11 and $true2==0 and $true22==0 and $true11!=0 and $true1!=0)
  102. $ppp++;
  103. if($true2==$true22 and $true1==0 and $true11==0 and $true22!=0 and $true2!=0)
  104. $ppp++;
  105. $punkty[$cc]= $ppp;
  106. echo $true1; /////////////////////////////////////////////// i to
  107. }
  108. }
  109. for($ww=1; $ww<=$ile_pytan1; $ww++)
  110. {
  111. $wynik=0;
  112. $wynik+=$punkty[$ww];
  113.  
  114. }
  115.  
  116. echo $wynik;
  117.  
  118. ?>
  119.  
  120.  
  121. </body></html>



Problem polega na tym iż nie wiem dlaczego echo $true1; "na górze" pokazuje dobrą wartość natomiast to poniżej złą. Chodzi mi o sytuacje gdy nie wybierze się żadnej odpowiedzi. Chciałbym aby ktoś mi wyjaśnił z kąd ta różnica i gdzie tkwi błąd, byłbym bardzo wdzięczny smile.gif
nospor
1) Używaj proszę bbcode PHP a nie CODE...
2) Nie koloruj ty lepiej żadnych kodów, bo jak sam widzisz nic to nie daje, a po prostu pisz obok komentarz, np:
  1. echo $true1; /// O TO NA CZERWONO
  2. .....
  3.  
  4. echo $true1; /// O TO NA ZIELONOE

Będzie o niebo czytleniejsze

Zaś co do błędu to masz taki o to kod:

$true1=!0

a powinno być:
$true1!=0

Twój zły kod przypisuje wartość dla $true zamiast ją porównywać, dlatego też czerwony $true1 ma złą wartość
To samo zresztą masz ze zmienna $true2
$true2=!0

edit: poprawiłem ci bbcode na PHP a ty spowrotem zrobiłeś z tego CODE.... kurka, po co?
Marnius
Wielkie dzięki, te literówki wykończą człowieka wink.gif sorki za to bbcode, ale też w tym samym momencie pewnie edytowałem posta co ty zmieniałeś. Nie udało się to na kolorowo zaznaczyć wiec go edytowałem. Jeszcze raz wielkie dzięki, Pozdrawiam
nospor
Cytat
ale też w tym samym momencie pewnie edytowałem posta co ty zmieniałeś.
Jakbyś przy edycji, poprawił też bbcode na które prosiłem, wpadki by nie było wink.gif

Ok, to na koniec jeszcze jedna uwaga:
Gdy ktoś rozwiąże Twój problem, kliknij przycisk POMOGŁ. Informuje to innych użytkowników, że problem jest rozwiązany i nie muszą zaglądać do tematu.
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.