PHP vragen forms

Status
Niet open voor verdere reacties.

robinbiziuk

Gebruiker
Lid geworden
26 jun 2012
Berichten
6
Hallo,

Ik zit met een probleempje, ik moet als opdracht een formulier hebben die als volgt werkt:
Er wordt een vraag gesteld, deze kan beantwoord worden via radio buttons.
Daarna moet er op volgende geklikt kunnen worden en aan de hand van het antwoord moet de passende volgende vraag verschijnen op de zelfde pagina (of na het hebben gehad van de hele reeks vragen een invoerveld die dient voor de db).

Tot zover het werkende gedeelte, nu heb ik al een beetje lopen aanklooien met codes maar het werkt me maar niet.
Ik kan de eerste vraag krijgen, en in een vorig staat van de code code ook op maximaal 1 van de radio buttons een passende volgende vraag gegeven worden, waarna het invullen van de tweede vraag automatisch de eerste terug geeft. Hier gaat het dus al mis aangezien er nog veel meer vragen moeten komen.

dus om een lang verhaal kort te maken

A of B?
0 A
0 B

|volgende|

pagina refresht als het ware

A1 of A2?
0 A1
0 A2

|volgende|

etcetc


Hier een stukje code waarvan ik weet dat alleen de eerste vraag werkt.

PHP:
<?php
	
	function chooseIncident(){
		echo"<h1>Meld Incident</h1>";	
?>
	Probeer alle vragen zo goed mogelijk in te vullen. <br/><br/>
<?
		
		echo"<br/>";
		if(!isset($_POST['submit'])) // formulier niet verzonden?
		{  
?> 
			<form method='post'>
			  <b>Waar berust het probleem zich op?: </b><br/><br/>
			  <input type='radio' name='soort' value='Hardware' />Hardware<br />
			  <input type='radio' name='soort' value='Software' />Software<br />
			  <input type='radio' name='soort' value='Onbekend' />Onbekend<br /><br/>
			  <input type='submit' name='submit' value='Volgende' />
			 </form>
			    
<?
		
			
				if($_POST['soort'] == "Onbekend")
				{
					echo" <i>Onbekend</i>";
					echo" <br/>";
	?>
					<form method='post'>
					<b>Zijn alle kabels goed aangesloten?</b><br/><br/>
					<input type='radio' name='oaangesloten' value='Ja' />Ja<br/>
					<input type='radio' name='oaangesloten' value='Nee' />Nee<br/><br/>
					<input type='submit' name='submitO' value='Volgende'/>
					</form>
	<?
				}
				if(!isset($_POST['submitO2']))
				{
					if($_POST['oaangesloten'] == "Ja")
					{
						echo" <i>Onbekend</i>";
						echo" <br/>";
						
	?>				
						<form method='post'>
						<b>Kan u wel aan het werk op een ander werkstation?</b><br/>
						<input type='radio' name='oander' value='Ja' />Ja<br/>
						<input type='radio' name='oander' value='Nee' />Nee<br/>
						<input type='submit' name='submitO2' value='Volgende' />
						</form>
	<?
					}
					else
					{
						echo" Sluit alle kabels aan en het probleem is opgelost.";
					}
					
			}	}
		}	
					
	
?>

Ik moet in feite dus iets hebben wat van de voorgaande vraag het antwoord onthoud om de volgende vraag te krijgen zonder dat dit ?permanent? opgeslagen wordt.


alvast bedankt!
 
Laatst bewerkt:
Het probleem zit hem in regel 10. Op die regel wordt gecontroleerd of het formulier is verzonden door te controleren of de naam van de submit-button ("submit") in $_POST bestaat. Het gaat mis omdat alleen het eerste formulier een submit-button heeft met die naam, de andere formulieren hebben submit-buttons met namen "submit0" en "submit02". Als je een formulier instuurt waarvan de submit-button een andere naam heeft dan "submit" krijg je het eerste formulier weer te zien.

Ik zou het als volgt doen:
PHP:
if (isset($_POST['submit']))
{
  switch ($_POST['soort'])
  {
    case "Hardware":  // hier het formulier voor als hardware gekozen is
                               break;
    case "Software":   // hier het formulier voor als software gekozen is
                               break;
    case "Onbekend": // hier het formulier voor als onbekend gekozen is
                               break;
    default:                // hier weer het originele formulier omdat een verkeerde/geen keuze is gemaakt
                              break;
  }
}
elseif (isset($_POST['submit0']))
{
  switch($_POST['oaangesloten'])
  {
    case "Ja":   // hier het formulier voor ja
                      break;
    case "Nee":// hier het formulier voo
                      break;
    default:      // hier weer het originele formulier omdat een verkeerde/geen keuze is gemaakt
                      break;
  }
}
elseif(isset($_POST['submit02']))
{
  //etc.
}
else
{
  // hier het eerste formulier dat getoond wordt als er nog geen formulier is verzonden
}

Waarbij ik nog wel even wil opmerken dat controleren op $_POST['naam_van_submit_button'] geen hele betrouwbare controle is. Er zijn browsers die deze naam niet meesturen als de gebruiker het formulier verstuurt door op "Enter" te drukken i.p.v. op de submit-knop te klikken. Het beste kan je daarom controleren op de naam van de radiobuttons.
 
Laatst bewerkt:
Dankjewel voor je antwoord.

Maar nou is mij tweede vraag waar komen de radio buttons dan terug incl. de vraag zelf?
Want ik begrijp nu dat hij kijkt naar de gemaakt keuze.
 
De formulieren met de vragen en radiobuttons plaats je op de plekken die ik heb aangegeven met "// hier het formulier voor als hardware gekozen is", "// hier het formulier voor als software gekozen is", etc.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan