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:
<html>
<body>
<form action="index.php" method="post" >
Iloćś Pytań <input type="text" name="ilosc_pytan" value="" /> </br>
Ilość odpowiedzi na pytanie: <select name="ilosc_odp">
<option>2</option> <!-- Formularz -->
<option>4</option>
</select> </br>
<input type="submit" value="Prześlij" />
</form>
<form action="form.php" method="post" >
<?php
$pytania= $_POST['ilosc_pytan']; // przypisywanie wartosci pol formularza do zmiennych
$odpowiedzi= $_POST['ilosc_odp'];
$abcd[1]= 'a. ';
$abcd[2]= 'b. ';
$abcd[3]= 'c. '; // tablica z literami do odpowiedzi
$abcd[4]= 'd. ';
echo '<input type="hidden"'. 'name='. '"'. "ilosc_wszystkich_pytan". '"' . 'value='. '"'. "$pytania". '" />'; // liczba ilosci pytan echo '<input type="hidden"'. 'name='. '"'. "ilosc_wszystkich_odpowiedzi". '"' . 'value='. '"'. "$odpowiedzi". '" />';
// tworzenie pytan
for($i=1; $i<= $pytania; $i++)
{
echo "Pytanie $i: ". '<input type="text"'. 'name='. '"'. "ilosc_pytan$i". '"' . 'value="" />'. '</br>'; //petla for ilosc pytan i odpow
// jesli sa tylko dwie odpowiedzi funkca if
if($odpowiedzi==2)
{
echo "Podaj odpowiedzi, zaznacz takrze ktora jest poprawna: </br>"; for($j=1; $j<=2; $j++)
{
echo '<input type="checkbox"'. 'name='. '"'. "odp_true1$i$j". '"' . 'value='. '"'. "$j". '" />'. " $abcd[$j]". '<input type="text"'. 'name='. '"'. "odpowiedzi$i$j". '"' . 'value="" />';
}
}
// jesli sa 4 odpowiedzi elseif
elseif($odpowiedzi==4)
{
echo "Podaj odpowiedzi, zaznacz takrze ktora jest poprawna: </br>";
for($j=1; $j<=4; $j++)
{
echo '<input type="checkbox"'. 'name='. '"'. "odp_true1$i$j". '"' . 'value='. '"'. "$j". '" />'. " $abcd[$j]". '<input type="text"'. 'name='. '"'. "odpowiedzi$i$j". '"' . 'value="" />'. '</br>';
}
}
}
echo '<input type="submit" value="Wyślij" /> </form>';
// koniec skryptu pytajacego
// poczatek skryptu obliczajacego i wyswietlajacego
?>
</body>
</html>
plik form:
<html><body>
<form action="form.php" method="post" >
<?php
$abcd[1]= 'a. ';
$abcd[2]= 'b. ';
$abcd[3]= 'c. '; // tablica z literami do odpowiedzi
$abcd[4]= 'd. ';
$ile_pytan = $_POST['ilosc_wszystkich_pytan'];
$ile_odpowiedzi= $_POST['ilosc_wszystkich_odpowiedzi'];
// przesyla informacje o ilosci pytan i odpowiedzi
echo '<input type="hidden"'. 'name='. '"'. "ilosc1". '"' . 'value='. '"'. "$ile_pytan". '" />'; echo '<input type="hidden"'. 'name='. '"'. "ilosc2". '"' . 'value='. '"'. "$ile_odpowiedzi". '" />';
// ...
// niewidoczne pola odpowiedzi
for($rr=1; $rr<=$ile_pytan; $rr++)
{
// jesli 2 odpowiedzi
if($ile_odpowiedzi==2)
{
for($aa=1; $aa<=2; $aa++)
{
$true_index= $_POST["odp_true1$rr$aa"];
echo '<input type="hidden"'. 'name='. '"'. "odp_true3$rr$aa". '"' . 'value='. '"'. "$true_index". '" /></br>'; }
}
// jesli 4 odp
if($ile_odpowiedzi==4)
{
for($aa=1; $aa<=4; $aa++)
{
$true_index= $_POST["odp_true1$rr$aa"];
echo '<input type="hidden"'. 'name='. '"'. "odp_true3$rr$aa". '"' . 'value='. '"'. "$true_index". '" /></br>'; }
}
}
// ...
for($z=1; $z<=$ile_pytan; $z++)
{
$post= $_POST["ilosc_pytan$z"]; // petla wyswietla pytania
echo "<b>$z. $post ?</b> </br>";
if($ile_odpowiedzi==2)
{
for($zz=1; $zz<=2; $zz++)
{
$odp= $_POST["odpowiedzi$z$zz"]; // jesli 2 odpowiedzi
echo '<input type="checkbox"'. 'name='. '"'. "odp_true2$z$zz". '"' . 'value='. '"'. "$zz". '" />'. "<b> $abcd[$zz]</b> $odp </br>"; }
}
// ...
if($ile_odpowiedzi==4)
{
for($zz=1; $zz<=4; $zz++)
{
$odp= $_POST["odpowiedzi$z$zz"]; // jesli 4 odpowiedzi
echo '<input type="checkbox"'. 'name='. '"'. "odp_true2$z$zz". '"' . 'value='. '"'. "$zz". '" />'. "<b> $abcd[$zz]</b> $odp </br>"; }
}
// ...
}
// koniec skryptu wyświetlania
echo '<input type="submit" value="Wyslij" /></form>';
// skrypt liczacy
$ile_pytan1 = $_POST['ilosc1']; // przypisywanie ilosci pytan i odpowiedzi
$ile_odpowiedzi2= $_POST['ilosc2'];
for($cc=1; $cc<=$ile_pytan1; $cc++)
{
// jesli 2 odp
if($ile_odpowiedzi2==2)
{
$true1= $_POST["odp_true3$cc". '1'];
$true2= $_POST["odp_true3$cc". '2'];
$true11= $_POST["odp_true2$cc". '1'];
$true22= $_POST["odp_true2$cc". '2'];
echo $true1; ////////////////////////////////////////// o to chodzi
if($true1==$true11 and $true2==$true22 and $true1=!0 and $true11!=0 and $true2=!0 and $true22!=0)
$ppp++;
if($true1==$true11 and $true2==0 and $true22==0 and $true11!=0 and $true1!=0)
$ppp++;
if($true2==$true22 and $true1==0 and $true11==0 and $true22!=0 and $true2!=0)
$ppp++;
$punkty[$cc]= $ppp;
echo $true1; /////////////////////////////////////////////// i to }
}
for($ww=1; $ww<=$ile_pytan1; $ww++)
{
$wynik=0;
$wynik+=$punkty[$ww];
}
?>
</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
Ten post edytował nospor 21.11.2012, 18:31:26
Powód edycji: [nospor]: poprawiam BBCODE poraz kolejny i ostatni...