Formular | A BIG PROBLEM!

Programovacie jazyky, rady, poradňa...
Marbulinek
Amateur
Amateur
Príspevky: 12
Registrovaný: 15 okt 2008, 20:45

Formular | A BIG PROBLEM!

Príspevok od používateľa Marbulinek »

Caute, chcem sa poradit s vami s takou "zakernou" php vecou a to ze:
Mam stranku test.php, kde generujem test z databaze, pricom sa mi premenne z
databaze dosadzuju uz do pripraveneho inputu a to RADIO a name sa tiez
dava z databaze, a to dosadzujem vlastne id.
Nemozem sa vsak pohnut dalej, kedze neviem, ako ten formular vyhodnotit.

Kod, kde generujem udaje z databaze do "testovej podoby":

Kód: Vybrať všetko

echo "<form action='?stranka=#' method='post'>";

$query = mysql_query("SELECT * FROM test_vypis WHERE `nazov_testu`='$id'");
while ($vypis = mysql_fetch_assoc($query)) {
echo "<p><strong>".$vypis['zadanie']."</strong><br />";
echo "<input type='radio' name='".$id1."' value='a'>a)
".$moznost_a."<br />";
echo "<input type='radio' name='".$id1."' value='b'>b)
".$moznost_b."<br />";
echo "<input type='radio' name='".$id1."' value='c'>c)
".$moznost_c."<br />";
echo "<input type='radio' name='".$id1."' value='d'>d)
".$moznost_d."<br /></p>";
}

echo "<input type='submit' name='send' value='Skontroluj!' />";
echo "<input type='hidden' name='sent' value=''/>";
echo "</form>";

Ta premenna $id1 sa meni a formular tak ako ma uz vysledne obsahuje
vlastne ID z tabulky, cize nabera hodnotu 1,2,3 atd. (To je v poriadku, facha to
normalne!)
Problem nastava, ked chcem formular vyhodnotit:
Prosim napiste, ako by ste napisali podmienku pre vyhodnotenie na tento
formular,
Dakujem a s pozdravom Marbulinek
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

nie som si istý či presne chápem o čo ti ide, ale ak áno, tak to môžeš riešiť dvoma spôsobmi. Vypadá to tak, že tebe robí problém to, že nevieš ako a volá premenná ktorá ti príde, lebo jej názov sa generuje. Takže si jej názov môžeš tiež poslať (buď ako get parameter v url, alebo ako hidden input a prenesie sa cez post). Druhá možnosť je pozreť sa na všetky premenné čo sú v $_POST
Marbulinek
Amateur
Amateur
Príspevky: 12
Registrovaný: 15 okt 2008, 20:45

RE

Príspevok od používateľa Marbulinek »

Hej si moja zachrana, to je presne moj problem, pls nacrtni aspon ako sa mozem z toho dostat, fakt by si mi pomohol pomocou toho citujem
alebo ako hidden input a prenesie sa cez post
, ako by to malo ist, dikes este raz za pomoc...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

tvoj formulár bude vypadať ako teraz, len tam pribudne jeden skrytý input:

Kód: Vybrať všetko

echo "<form action='?stranka=#' method='post'>";

$query = mysql_query("SELECT * FROM test_vypis WHERE `nazov_testu`='$id'");
while ($vypis = mysql_fetch_assoc($query)) {
echo "<p><strong>".$vypis['zadanie']."</strong><br />";
echo "<input type='radio' name='".$id1."' value='a'>a)
".$moznost_a."<br />";
echo "<input type='radio' name='".$id1."' value='b'>b)
".$moznost_b."<br />";
echo "<input type='radio' name='".$id1."' value='c'>c)
".$moznost_c."<br />";
echo "<input type='radio' name='".$id1."' value='d'>d)
".$moznost_d."<br /></p>";
}

echo "<input type='submit' name='send' value='Skontroluj!' />";
echo "<input type='hidden' name='sent' value=''/>";
echo "<input type='hidden' name='form_id' value='".$id."'/>";
echo "</form>";
a potom budeš vedieť aké name majú tie tvoje inputy, takže k ním pristúpiš ako $_POST['form_id']
Marbulinek
Amateur
Amateur
Príspevky: 12
Registrovaný: 15 okt 2008, 20:45

Re:

Príspevok od používateľa Marbulinek »

Ok, skusim to, az by to este neslo alebo by som robil niekde chybu, mozem sa este na teba obratit?
PS: v tom tvojom skrytom inpute, nema byt ta hodnota id1, lebo je tam id...

Kód: Vybrať všetko

if(isset($_POST['sent'])){
$form_id=$_POST['form_id'];
$query = mysql_query("SELECT spravna_moznost FROM test_vypis WHERE `nazov_testu`='$id'");
while ($vypis = mysql_fetch_assoc($query)) {
$spravna_moznost=$vypis['spravna_moznost'];
$poradie++;
if($form_id==$spravna_moznost){
echo "<span id='ok'>".$poradie.") Dobre: ".$spravna_moznost."</span><br />";
}else{
echo "<span id='red'>".$poradie.") Zle, správne bolo: ".$spravna_moznost."</span><br />";
}
}
}
Ako sa mam na to pytat, aby mi to vyhodnotilo, kludne to mozes upravit, dikes este raz za pomoc...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ja som to najprv zle pochopil, myslel som že ide iba o jednootázkový test. Ak sa ich vygeneruje naraz viac, budeš to musieť spraviť inač. Skús takto nejak:

Kód: Vybrať všetko

echo "<form action='?stranka=#' method='post'>";

$query = mysql_query("SELECT * FROM test_vypis WHERE `nazov_testu`='$id'");
while ($vypis = mysql_fetch_assoc($query)) {
echo "<p><strong>".$vypis['zadanie']."</strong><br />";
echo "<input type='radio' name='".$id1."' value='a'>a)
".$moznost_a."<br />";
echo "<input type='radio' name='".$id1."' value='b'>b)
".$moznost_b."<br />";
echo "<input type='radio' name='".$id1."' value='c'>c)
".$moznost_c."<br />";
echo "<input type='radio' name='".$id1."' value='d'>d)
".$moznost_d."<br /></p>";
}

echo "<input type='submit' name='send' value='Skontroluj!' />";
echo "<input type='hidden' name='sent' value=''/>";
echo "<input type='hidden' name='form_id' value='".$id."'/>";
echo "</form>";
a overenie nejak takto:

Kód: Vybrať všetko

if(isset($_POST['sent'])){
	$form_id=$_POST['form_id'];
	$query = mysql_query("SELECT * FROM test_vypis WHERE `nazov_testu`='$form_id'");
	while ($vypis = mysql_fetch_array($query)) {
		$spravna_moznost=$vypis['spravna_moznost'];
		$poradie++;
		if($_POST[$vypis['id1']]==$spravna_moznost){
			echo "<span id='ok'>".$poradie.") Dobre: ".$spravna_moznost."</span><br />";
		}else{
		echo "<span id='red'>".$poradie.") Zle, správne bolo: ".$spravna_moznost."</span><br />";
		}
	}
}
samozrejme len ak som si dobre domyslel štruktúru tvojej db
Marbulinek
Amateur
Amateur
Príspevky: 12
Registrovaný: 15 okt 2008, 20:45

RE:

Príspevok od používateľa Marbulinek »

Aha, nejak som to ešte upravil a teraz mi vyhodnocuje super, len skoda ze vyhodnoti len poslednu otazku, nie vsetky:

Kód: Vybrať všetko

if(isset($_POST['sent'])){
   $form_id=$_POST['form_id'];
   $query = mysql_query("SELECT * FROM test_vypis WHERE `id`='$form_id'");
   
   while ($vypis = mysql_fetch_array($query)) {
    $spravna_moznost=$vypis['spravna_moznost'];
     $poradie++;
      if($_POST[$vypis['id']]==$spravna_moznost){
      echo "<span id='ok'>".$poradie.") Dobre: ".$spravna_moznost."</span><br />";
   }else{
   echo "<span id='red'>".$poradie.") Zle, správne bolo: ".$spravna_moznost."</span><br />";
   }
   }
}
Problem je v tom ze v uvodnom zapise, teda vo vypise toho formularu sa mi nenacita v cykle toto:

Kód: Vybrať všetko

echo "<input type='hidden' name='form_id' value='".$id."'/>";
, a tym padom sa mi tam uklada len posledne id a preto vzdy vypise len odpoved na posledne uvedenu otazku.
Neviete, ako to nejak vhodne upraviť ???
Napísať odpoveď