Enquêteformulier met een database, checkboxen en invulvelden

Status
Niet open voor verdere reacties.

Timmy Ownage

Gebruiker
Lid geworden
11 jan 2008
Berichten
60
Hallo,

Ik heb een script om enquêtes mee af te nemen. Deze werkt alleen met radiobuttons. Ik wil nu echter ook de mogelijkheid hebben om invulvelden te krijgen. Ik heb dus een aantal vragen in mijn database staan, maar ik wil bij vraag 1 en 3 een invulveld krijgen. De andere vragen zijn gesloten. Mijn script is als volgt:

PHP:
<?php
session_start(); // Begin de sessie

include "config.php"; // Gebruik config.php
$aantal_vragen = mysql_num_rows(mysql_query("SELECT id FROM vragen")); // Hoeveel entries zijn er in de database?

if($_POST['volgende'] && $_SESSION['vraagnr'] != '' && $_POST['vraag'.$_SESSION['vraagnr']] != '') // Als er op de knop gedrukt wordt, controleer de vraag en ga zo mogelijk naar de volgende vraag
{
    if($_POST['vraag1']) // Als er bij vraag1 op volgende wordt gedrukt...
        $_SESSION['antwoordjes'] = $_POST['vraag1']; // Onthoud de antwoorden
    else // Anders
        $_SESSION['antwoordjes'] .= '|'.$_POST['vraag'.$_SESSION['vraagnr']]; // Onthoud de antwoorden voor de andere vragen
    
    $_SESSION['vraagnr']++; // Ga naar de volgende vraag
}

if($_POST['vraag'.$aantal_vragen] != '' && $_SESSION['vraagnr'] >= ($aantal_vragen + 1)) // Als alle vragen beantwoord zijn... 
{
    mysql_query("INSERT INTO antwoorden (ip,antwoorden,datum) VALUES ('".$_SERVER['REMOTE_ADDR']."','".$_SESSION['antwoordjes']."',NOW())"); // Schrijf de antwoorden naar de database
    session_destroy(); // Stop de sessie
    header("Location: bedankt.php"); // Ga naar de bedankt-pagina
}

if($_SESSION['vraagnr'] == '' || $_SESSION['vraagnr'] >= ($aantal_vragen + 1)) // Als er geen sessie is of de sessie is groter dan alle vragen + 1 (die bestaat dus niet)
{
    $vraag = 1; // De vraag is nummer 1
    $_SESSION['vraagnr'] = $vraag; // Ga naar vraag 1
}

else // Anders
    $vraag = $_SESSION['vraagnr']; // We zijn bij de vraag die aangeduid wordt in de sessie

$data = mysql_fetch_array(mysql_query("SELECT vraag,antwoorden FROM vragen WHERE id='".$vraag."'")); // Informatie laden van de database...
$antwoorden = explode('|',$data['antwoorden']); // De antwoorden zijn alle informatie uit de database antwoorden zonder het teken |
$vraag = stripslashes($data['vraag']); // Verwijder de aanhalingstekens
?>

En om de vragen en antwoorden weer te geven op het scherm:
PHP:
	<strong><?php echo $vraag; ?></strong>
<form method="post" action="enquete.php">
<?php
$nummer = 1;
foreach($antwoorden as $antwoord)
{
    echo '<input type="radio" name="vraag'.$_SESSION['vraagnr'].'" value="'.$nummer.'" id="antwoord'.$nummer.'" /><label for="antwoord'.$nummer.'">'.$antwoord.'</label><br />';
    $nummer++;
}

?>

Is dit mogelijk? Het doel is dus dat ik gesloten vragen heb die gelezen worden uit een database. Bij 2 vragen wil ik echter een invulveld krijgen, maar ik weet niet hoe ik dat zou moeten programmeren. Graag ontvang ik jullie reacties!
 
Zet in je foreach-loop een check om te controleren welk nummer vraag het is. Als het vraag nummer 1 en 3 is toon je een invulbox en is het een andere vraag toon je een radiobutton.
Bijvoorbeeld:
PHP:
foreach($antwoorden as $antwoord) {
    if (($_SESSION['vraagnr'] == 1) || ($_SESSION['vraagnr'] == 3)) {
        echo "Een input textbox";
    }
    else {
        echo "Een radiobutton";
    }
    $nummer++;
}

groeten vreugde
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan