Automatische enquete

Status
Niet open voor verdere reacties.
En dit werkt nu ook, super!:d
Ik probeerde in eerste instantie een tabel naast de vragen te maken, maar blijkbaar moesten de vragen dus ook in een tabel.

Die tutorials ga ik inderdaad nog wel eens doornemen, maar helaas niet zo veel tijd voor momenteel
 
Op dit moment ben ik bezig om ervoor te zorgen dat mensen de enquete niet kunnen maken zonder overal iets in te vullen. Ik heb het tot nu toe alleen toegepast op vraag 2, als test. Ik heb het op de volgende manier gedaan:

- Bij vraag 3 wordt er gecontroleerd of het antwoord dat vraag 2 verstuurd heeft niet 'leeg' is
- Als hij leeg is dan stopt het script. Op dat moment staat er al een knop met daarop: 'Vorige vraag'. Als daarop geklikt wordt ga je terug naar vraag 2 en wordt het antwoord van vraag 1 meegestuurd.
- Als hij niet leeg is verschijnt het form van vraag 3, waarna de enquete vervolgd kan worden. De vraag met 'vorige vraag' staat er alsnog zodat mensen een vraag overnieuw kunnen doen.

Nu heb ik een klein, raar probleempje:
Als ik heel vaak heen en weer ga tussen vraag 2 en 3 dan worden er steeds meer spaties toegevoegd aan het antwoord van vraag 1. Dit is een screenshot van de database waarin het duidelijk is te zien:
schermafbeelding2011011.png

Als iemand dus van vraag 3 naar vraag 2 gaat dan wordt er een spatie toegevoegd aan het antwoord van vraag 1. En ik snap niet waar dat aan ligt.

Nu ik er mee bezig ben ontdek ik ineens dat álle antwoorden in de database heel wat spaties voor zich hebben. Het valt alleen niet op omdat ze allemaal evenveel spaties hebben. Vraag 1 krijgt dus meer spaties dan de rest omdat hij vaker heen en weer wordt gestuurd. Is er wat te doen aan deze spaties? Alvast bedankt!

Edit: Ik heb het probleem al ontdekt:
PHP:
value=" <?php echo $value_question_9 ?> "
Moet zijn:
PHP:
value="<?php echo $value_question_9 ?>"
 
Laatst bewerkt:
Hallo,

Ik zit weer met een klein probleempje. We hebben een knop die verwijst naar de vorige vraag. Deze staat een een tabel links van de tabel waar de vragen in staan.
Echter, deze knop bevind zich in het midden van de linkse tabel en wij willen hem onderaan, naast de volgende vraag knop. Maar dit lukt ons niet, hoe moet dit?
Plaatje van hoe het eruitziet:
Schermafbeelding 2011-01-19 om 12.11.56.png

Alvast bedankt.

PHP:
<html>
<link href="style.css" rel="stylesheet" type="text/css">
<body style="background-color:black">

<?php
// Doordat dit een PHP bestand is, wordt deze vaak begonnen met de php openings-tag zoals hierboven.

// Omdat bij vraag1.html de form method op POST staat, gebruik je bij vraag 2 $_POST om de antwoorden op te halen.
// Tevens gebruik je hier de name-attribuut waarde van de Submit-knop van vraag.html, om zo juist te linken.
// Hier is het van belang dat deze uniek is.
if (isset($_POST["vraag1"]))
{
	// Doordat de name-attribuut van de radio-buttons "vraag1_antwoord" heet, kan je de waarde hiervan ophalen met een $_POST.
	// De waarde stop je in een variabele die je later in de bestand weer kan gebruiken.
	$value_question_1 = $_POST["vraag1_antwoord"];
}
?>

<table width="100%" border="0">
  <tr>
  <td width="5%" height="241"> 
  <div style="text-align:bottom;">
  <form action="vraag1.html" method="post">
<input type="submit" name="vraag1" value="Vorige vraag"/>

</form>
</div>
<div class="standaard"> <?php
  if(empty($value_question_1)) 
  {
    echo("Je hebt niks ingevuld.");
		{ die;
		}
  }
?> </div>

  </td>
    <td rowspan="2"><div class="standaard">Vraag 2: Hoe oud ben je?

<!-- Net als bij vraag1.html link je hier naar de volgende vraag en met de method POST zodat de antwoorden alleen door jou gebruikt kunnen worden in de code. -->
<form action="vraag3.php" method="post">

<input type="radio" name="vraag2_antwoord" value="12" /> 12 <br />
<input type="radio" name="vraag2_antwoord" value="13" /> 13 <br />
<input type="radio" name="vraag2_antwoord" value="14" /> 14 <br />
<input type="radio" name="vraag2_antwoord" value="15" /> 15 <br />
<input type="radio" name="vraag2_antwoord" value="16" /> 16 <br />
<input type="radio" name="vraag2_antwoord" value="17" /> 17 <br />
<input type="radio" name="vraag2_antwoord" value="18" /> 18 <br />
<input type="radio" name="vraag2_antwoord" value="19" /> 19 <br />

<!-- Omdat je het antwoord van de eerste vraag mee wilt nemen, moet je deze iedere keer in een hidden input zetten. Hierdoor staat hij wel in de HTML code 
	maar is deze niet zichtbaar voor de gebruiker.
	Mocht je bij vraag 3 zijn moet je ook het antwoord van vraag 2 als hidden erbij plaatsen. -->
<input type="hidden" name="vraag1_antwoord" value=" <?php echo $value_question_1 ?> " />

<!-- Wat opvalt aan deze Submit-knop is dat de name-attribuut weer uniek is ten opzichte van de vorige -->
<input type="submit" name="vraag2" value="Volgende Vraag" />

</form>  </div></td>
    <td width="66%" rowspan="2"><img border="0" src="plaatjes/kiri.jpeg" alt="Kiri logo1" width="500" height="269" /></td>
  </tr>
</table>







</body>
</html>
 
Heey jongens, ik heb hem eronder neergezet. Er zaten wel een paar ernstige netheid en zelfs functie fouten in. Ik heb ze der even uitgehaald en je code wat netter gemaakt. Werk met tabjes! Voor de rest zetten jullie ergens midden in je ding een php ding wat kijkt of het leeg is en dan typen.

Jullie grootste fout was het ontbreken van een doctype. Bovendien heb ik de grote delen van het commentaar veranderd/verwijderd. Probeer dit eens:

PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css">
<title>Voeg hier de titel vand de pagina in.</title>
<style type="text/css">
body {
	background-color: black; /*Is veel netter, dan in de html tag zetten*/
}
</style>
</head>
<body>
<?php
//Kijken of de post niet leeg is opgestuurd.
if (isset($_POST["vraag1"]))
{
//Waarde uit de POST halen
$value_question_1 = $_POST["vraag1_antwoord"];
}
?>
 
<table width="100%" border="0">
	<tr>
		<td width="5%" height="241">           
			<div class="standaard"> 
				<?php
				//Als die leeg zou zijn, zou $value_question_1 Niet gevuld worden, vanwege het stukje code hierboven. Je zult dus weer isset moeten gebruiken. 				//Je hadt if(empty). Waarom zou die moeten sterven? Als je wilt dat hij alleen dit stukje tekst weergeeft, dus geen opmaak, wat wel gaat 	
				//gebeuren als je hem laat sterven, kan je dat net zo goed bij de else hierboven zetten. Ook heb ik erbij gezet wat niet is ingevuld...
				if(isset($value_question_1)) {
					echo("Je hebt niks ingevuld bij vraag 1");
				}
				?> 
			</div>
 
   		</td>
    	<td rowspan="2">
        	<div class="standaard">Vraag 2: Hoe oud ben je?
 				<!--Nieuwe vraag invoegen -->
				<form action="vraag3.php" method="post">
				<input type="radio" name="vraag2_antwoord" value="12" /> 12 <br />
				<input type="radio" name="vraag2_antwoord" value="13" /> 13 <br />
				<input type="radio" name="vraag2_antwoord" value="14" /> 14 <br />
				<input type="radio" name="vraag2_antwoord" value="15" /> 15 <br />
				<input type="radio" name="vraag2_antwoord" value="16" /> 16 <br />
				<input type="radio" name="vraag2_antwoord" value="17" /> 17 <br />
				<input type="radio" name="vraag2_antwoord" value="18" /> 18 <br />
				<input type="radio" name="vraag2_antwoord" value="19" /> 19 <br />
 				<!-- De vorige vragen meenemen -->
				<input type="hidden" name="vraag1_antwoord" value=" <?php echo $value_question_1 ?> " />
 				<!-- Submit, kijk uit de name moet anders zijn! -->
				<input type="submit" name="vraag2" value="Volgende Vraag" />
 				</form>  <br />
                <form action="vraag1.html" method="link"> <!-- METHOD MOET LINK ZIJN - NIET POST BOVENDIEN HBE IK HEM HIER NEER GEZET DAT LOST JE PROBLEEM OP 			 				-->
				<input type="submit" name="vraag1" value="Vorige vraag"/>
				</form>
			</div>
		</td>
		<td width="66%" rowspan="2">
        	<img border="0" src="plaatjes/kiri.jpeg" alt="Kiri logo1" width="500" height="269" />
		</td>
  	</tr>
</table>
</body>
</html>
 
Hoi, we hebben hem geprobeerd, maar het is niet helemaal wat wij bedoelen. Het was de bedoeling dat er eerst gecontroleerd werd of er bij vraag 1 iets was ingevuld. Als er niks ingevuld is verschijnt alleen de 'vorige vraag'-knop, zodat er alsnog een antwoord ingevuld kan worden bij vraag 1. Vandaar de 'die'.

Dit hebben we gedaan om te voorkomen dat mensen zomaar niks invullen in de enquete.

Dat werkte dus al wel, alleen het probleem was dat de 'vorige vraag'-knop niet mooi naast de 'volgende vraag'-knop was geplaatst.

Bedankt voor het netter maken van de code! Nog een vraagje: waarom moet method "link" zijn? "post" werkte namelijk wel gewoon.
 
dat is hetzelfde als font tags gebruiken in html ;)
Okee ik snap het. Dan zou ik een if statement gebruiken ;)

If(isset(vraag 1 dinges) { print<<<END Je tekst END; }
else { print<<<END het geberuen wat er moet verschijnen om terug te gaan END; }

De end statement, aangezien je redelijk wat html gebruikt, inclusief " en ' tekens....

Succes ;)

EDIT: overegens in de code die ik je gaf, moet de 2e isset met een ! teken ervoor, want dat moet gebeuren als die niet geset is.
 
Laatst bewerkt:
We weten niet precies wat we met de END dingen moeten beginnen?
Er komt nu in ieder geval een foutmelding. Kunnen we daar gewoon html-code tussen zetten zodat de vorige vraag knop verschijnt dan? Want ik dacht dat er geen html-code tussen php code gezet kon worden
 
Dit kan wel, maar niet letterlijk. Je moet het de opdracht geven html te printen. Normaal gesproken zou je een print "inhoud van de string" doen, maar omdat je met heel veel html parameters werkt, die ook " vereisen, adviseer ik je end te gebruiken, omdat je anders elke " in de html moet veranderen naar ' of \"
 
Okee ik snap niet waarom je moet printen, want het enige wat we willen is die knop naar onderen, naast de "volgende vraag"-knop. Kun je het misschien even voor doen in het script?
 
Zo moet het (A)
Kijk de code wel even over en probeer het te begrijpen ;)
Bovendien moet je de link nog invullen

PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css">
<title>Voeg hier de titel vand de pagina in.</title>
<style type="text/css">
body {
    background-color: black; /*Is veel netter, dan in de html tag zetten*/
}
</style>
</head>
<body>
<?php
//Kijken of de post niet leeg is opgestuurd.
if (isset($_POST["vraag1"]))
{
//Waarde uit de POST halen
$value_question_1 = $_POST["vraag1_antwoord"];
}
?>
<table width="100%" border="0">
    <tr>
        <td rowspan="2">       
            <div class="standaard">
            
             	<?php
                //Als die leeg zou zijn, zou $value_question_1 Niet gevuld worden, vanwege het stukje code hierboven. Je zult dus weer isset moeten gebruiken.              	//Je hadt if(empty). Waarom zou die moeten sterven? Als je wilt dat hij alleen dit stukje tekst weergeeft, dus geen opmaak, wat wel gaat    
                //gebeuren als je hem laat sterven, kan je dat net zo goed bij de else hierboven zetten. Ook heb ik erbij gezet wat niet is ingevuld...
                if(!isset($value_question_1)) {
                    echo '<form action="URL NAAR VRAAG 1" method="LINK"><input type="submit" value="ga terug naar vraag 1"></FORM>';
                }
                else {
				echo "
            	Vraag 2: Hoe oud ben je?
                <!--Nieuwe vraag invoegen -->
                <form action=\"vraag3.php\" method=\"post\">
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"12\" /> 12 <br />
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"13\" /> 13 <br />
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"14\" /> 14 <br />
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"15\" /> 15 <br />
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"16\" /> 16 <br />
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"17\" /> 17 <br />
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"18\" /> 18 <br />
                <input type=\"radio\" name=\"vraag2_antwoord\" value=\"19\" /> 19 <br />
                <!-- De vorige vragen meenemen -->
                <input type=\"hidden\" name=\"vraag1_antwoord\" value=\"$value_question_1\" />
                <!-- Submit, kijk uit de name moet anders zijn! -->
                <input type=\"submit\" name=\"vraag2\" value=\"Volgende Vraag\" />
                </form>  <br />
                <form action=\"vraag1.html\" method=\"link\"> <!-- METHOD MOET LINK ZIJN - NIET POST BOVENDIEN HBE IK HEM HIER NEER GEZET DAT LOST JE PROBLEEM					 OP                           -->
                <input type=\"submit\" name=\"vraag1\" value=\"Vorige vraag\"/>
                </form>
                ";}
				?>
            </div>
        </td>
        <td width="66%" rowspan="2">
            <img border="0" src="plaatjes/kiri.jpeg" alt="Kiri logo1" width="500" height="269" />
        </td>
    </tr>
</table> 
</body>
</html>
 
Laatst bewerkt:
Ik heb overegens het gedoe met END achterwegen gelaten en met vervangen alle " in \" veranderd
 
Oke, bedankt voor de moeite.
Maar hij zet de knop naar de vorige vraag, onder de knop naar de vorige plaats. (ipv links naar de knop van volgende vraag)
Ik snap eigenlijk nog steeds niet waarom " veranderd moet worden in \"
 
Als je een normale variable string (variable die tekst bevat) beschrijft, zet je hem tussen haakjes:

$variable1 = "Je stukje tekst is hier dus de string";

Zodra je " in dat stukje tekst gaat voegen, weet php niet meer wanneer de string eindigt.:

$variable2 = "is dit de string" of hoort dit er nog bij";

Aangezien die de eerste neemt...

$variable3 = "is dit de string\" of hoort dit er nog bij?";

gaat wel goed....

Je probleem, kan ik nu niet verder helpen, moet werken.... Succes iig.
 
Overegens, je moet toch alleen een knop naar de ovrige vraag krijgen als daar niks is ingevult (en dan moet die knop toch het enige, zijn, zodat men niet verder kan met de enquete)
 
Ik heb overegens het gedoe met END achterwegen gelaten en met vervangen alle " in \" veranderd

????

En je denkt dat het niet makkelijker is om bij echo een single quote te gebruiken?

echo '<a href="bla.php">';
 
En die staan niet buiten quotes en ook dat is fout als het gaat om overzicht. Hier gecorrigeerd:

PHP:
echo 'Vraag 2: Hoe oud ben je?
		<!--Nieuwe vraag invoegen -->
      <form action="vraag3.php" method="post">
		<input type="radio" name="vraag2_antwoord" value="12" /> 12 <br />
        <input type="radio" name="vraag2_antwoord" value="13" /> 13 <br />
        <input type="radio" name="vraag2_antwoord" value="14" /> 14 <br />
        <input type="radio" name="vraag2_antwoord" value="15" /> 15 <br />
        <input type="radio" name="vraag2_antwoord" value="16" /> 16 <br />
        <input type="radio" name="vraag2_antwoord" value="17" /> 17 <br />
        <input type="radio" name="vraag2_antwoord" value="18" /> 18 <br />
        <input type="radio" name="vraag2_antwoord" value="19" /> 19 <br />
              
        <input type="hidden" name="vraag1_antwoord" value="'. $value_question_1 .'" />
        <input type="submit" name="vraag2" value="Volgende Vraag" />
      </form>  <br />
      
	  <form action="vraag1.html" method="link"> <!-- METHOD MOET LINK ZIJN - NIET POST BOVENDIEN HBE IK HEM HIER NEER GEZET DAT LOST JE PROBLEEM                   OP                           -->
         <input type="submit" name="vraag1" value="Vorige vraag" />
      </form>';
 
De enquete is nu bijna af, alleen er zit ergens een foutje.
Van vraag 30 moet hij naar prijsvraag.php
Maar wanneer je bij vraag 30 op volgende vraag klikt komt er niets in beeld.
Ziet iemand hieronder een fout in prijsvraag.php?

Edit: Dit is de foutmelding: Column count doesn't match value count at row 1

PHP:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css">
<body style="background-color:black">

<?php
if (isset($_POST["vraag30"]))
{
	$antwoord1 = $_POST["vraag1_antwoord"];
	$antwoord2 = $_POST["vraag2_antwoord"];
	$antwoord3 = $_POST["vraag3_antwoord"];
	$antwoord4 = $_POST["vraag4_antwoord"];
	$antwoord5 = $_POST["vraag5_antwoord"];
	$antwoord6 = $_POST["vraag6_antwoord"];
	$antwoord7 = $_POST["vraag7_antwoord"];
	$antwoord8 = $_POST["vraag8_antwoord"];
	$antwoord9 = $_POST["vraag9_antwoord"];
	$antwoord10 = $_POST["vraag10_antwoord"];
	$antwoord11 = $_POST["vraag11_antwoord"];
	$antwoord12 = $_POST["vraag12_antwoord"];
	$antwoord13 = $_POST["vraag13_antwoord"];
	$antwoord14 = $_POST["vraag14_antwoord"];
	$antwoord15 = $_POST["vraag15_antwoord"];
	$antwoord16a = $_POST["vraag16a_antwoord"];
	$antwoord16b = $_POST["vraag16b_antwoord"];
	$antwoord16c = $_POST["vraag16c_antwoord"];
	$antwoord16d = $_POST["vraag16d_antwoord"];
	$antwoord17 = $_POST["vraag17_antwoord"];
	$antwoord18 = $_POST["vraag18_antwoord"];
	$antwoord19 = $_POST["vraag19_antwoord"];
	$antwoord20 = $_POST["vraag20_antwoord"];
	$antwoord21 = $_POST["vraag21_antwoord"];
	$antwoord22 = $_POST["vraag22_antwoord"];
	$antwoord23 = $_POST["vraag23_antwoord"];
	$antwoord24 = $_POST["vraag24_antwoord"];
	$antwoord25 = $_POST["vraag25_antwoord"];
	$antwoord26 = $_POST["vraag26_antwoord"];
	$antwoord27 = $_POST["vraag27_antwoord"];
	$antwoord28 = $_POST["vraag28_antwoord"];
	$antwoord29 = $_POST["vraag29_antwoord"];
	$antwoord30 = $_POST["vraag30_antwoord"];


	$mysql_link = mysql_connect("localhost", "deb42120_enquete", "knaapaap") or die(mysql_error()); 
	$mysql_db = mysql_select_db("deb42120_enquete")or die(mysql_error());
	
	$query = "INSERT INTO `enquete` (`id`, `vraag1`, `vraag2`, `vraag3`, `vraag4`, `vraag5`, `vraag6`, `vraag7`, `vraag8`, `vraag9`, `vraag10`, `vraag11`, `vraag12`, `vraag13`, `vraag14`, `vraag15`, `vraag16a`, `vraag16b`, `vraag16c`, `vraag16d`, `vraag17`, `vraag18`, `vraag19`, `vraag20`, `vraag21`, `vraag22`, `vraag23`, `vraag24`, `vraag25`, `vraag26`, `vraag27`, `vraag28`, `vraag29`, `vraag30`) VALUES (NULL, '$antwoord1', '$antwoord2', '$antwoord3', '$antwoord4', '$antwoord5', '$antwoord6', '$antwoord7', '$antwoord8', '$antwoord9', '$antwoord10', '$antwoord11', '$antwoord12', '$antwoord13', '$antwoord14', '$antwoord14', '$antwoord15', '$antwoord16a', '$antwoord16b', '$antwoord16c', '$antwoord16d', '$antwoord17', '$antwoord18', '$antwoord19', '$antwoord20', '$antwoord21', '$antwoord22', '$antwoord23', '$antwoord24', '$antwoord25', '$antwoord26', '$antwoord27', '$antwoord28', '$antwoord29', '$antwoord30');";
	
	$result = mysql_query($query) or die(mysql_error());

	



}
?>

</form>
</div>
<div class="standaard"> <?php
  if(empty($antwoord30)) 
  {
    echo("U heeft niks ingevuld. Ga terug naar de vorige vraag en vul een antwoord in.");
		{ die;
		}
  }
	


?>

<html>

<p style="font-size:50px">De prijsvraag</p>

<form action="afgerond.php" method="post">

Naam + achternaam: <br /><input type="text" name="naam_ingevuld" /><br /><br />
Klas: <br /><input type="text" name="klas_ingevuld" /><br /><br />
Jouw idee: <br /><textarea name="idee_ingevuld" rows="10" cols="50"></textarea><br /><br />


<input type="submit" name="prijsvraag" value="Verstuur idee" />
</form></div>

</html>
 
Laatst bewerkt:
Ik heb de fout al ontdekt. We stuurden vraag 14 2x naar de database. Hierdoor werden er meer antwoorden gestuurd dan dat er kolommen waren, vandaar de foutmelding.
Maar is er een manier waarmee je in kan stellen dat er per IP maar 1x de enquete ingevuld kan worden?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan