Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] problem z dzialaniem skryptu
Marnius
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2010

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


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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował nospor 21.11.2012, 18:31:26
Powód edycji: [nospor]: poprawiam BBCODE poraz kolejny i ostatni...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




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?
Go to the top of the page
+Quote Post
Marnius
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2010

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


Wielkie dzięki, te literówki wykończą człowieka (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 04:00