Hallo,

Voor school ben ik bezig met een project om een enquete te ontwikkelen. Dat is natuurlijk geen probleem, maar nou is de bedoeling dat deze enquete online kan worden gezet, en dat er bepaalde conclusies worden getrokken bij elke “uitslag”.

Ik zal het proberen wat nader toe te lichten aan de hand van een klein voorbeeld:

Er zijn 9 categorien met vragen, die elk op een aparte pagina moeten worden weergegeven. Het zijn allemaal ja/nee vragen, die met een zgn. radio-button worden beantwoord (dus er kan maar 1 vraag worden aangeklikt). Als 0-25% van de antwoorden ‘ja’ is, is conclusie A van toepassing. Als 26-50% van de antwoorden ‘ja’ is, is conclusie B van toepassing. Enzovoorts.

Nou is het dus de bedoeling dat, zodra een gebruiker de laatste categorie heeft ingevuld, dat er dus conclusies op het scherm worden weergegeven van alle 9 categorien. Er moet in het begin NAW-gegevens worden ingevoerd.

Ik denk dat het ongeveer zo moet werken: Iemand vult zijn gegevens in, die worden opgeslagen in een database. Vervolgens begint hij aan de 1e categorie. Deze vragen worden ingevuld en op het eind klikt hij op ‘verder’ o.i.d. Hiermee wordt de conclusie van categorie 1 “berekend” en in de database gezet, onder de tabel 1. Hetzelfde geldt voor de 2e categorie: De vragen worden beantwoord, en op het eind wordt de conclusie in de database gezet en wordt er verder gegaan naar de volgende categorie. En zo gaat dat dus door tot dat alle 9 categorien zijn ingevuld. Dan verschijnt op de volgende pagina een overzicht met de verschillende conclusies, die worden opgehaald uit de database.

Goed, ik weet het allemaal heel goed te vertellen, maar heb niet de technische kennis om het ook te realiseren. Is er iemand die tips/suggesties heeft voor mij?

Alvast bedankt.
In de database zet je, mijns inziens, gewoon het aantal goede antwoorden. Dus bijvoorbeeld
vraag1 = 10
vraag2 = 45

Als dan bij vraag 1 bijv. 50 antwoorden mogelijk zijn krijg je dit als uitslag: (uit de database)vraag1 / 50 * 100 en dat geeft dan 20% en daar bind je de conclusie aan vast. En hebben er straks b.v 10 mensen meegedaan dan tel je alles betreffende vraag 1 op uit de database (bv 130) en dan is je gemiddelde (130 (totaal) / 10 (aantal mensen)) / 50 (aantal vragen) * 100 en dat is dan 26%
Okee, dan ga je dus eerst het formulier maken waarin mensen die gegevens invullen:

maak bijvoorbeeld een pagina gegevens.php
met daarop:

<?php
// gegevensformulier
<form method="post">

<p>naam bedrijf:
<input id="naam_bedrijf" name="naam_bedrijf" type="text">
</p>

... zo alle velden zelf maken

<p><input id="verzenden" name="verzenden" type="submit" value="verzenden"></p>


</form>
?>

Als je dit form zelf even verder afwerkt en online zet, dan kunnen wij kijken of het klopt ;-)
Wat ik nu heb:

<?php
// gegevensformulier
<form method="post">

<p>Naam bedrijf:
<input id="naam_bedrijf" name="naam_bedrijf" type="text">
</p>

<p>Naam contactpersoon:
<input id="naam_contactpersoon" name="naam_contactpersoon" type="text">
</p

<p>Functie:
<input id="functie" name="functie" type="text">
</p

<p>E-mailadres:
<input id="email" name="email" type="text">
</p

<p>Telefoonnummer:
<input id="telefoon" name="telefoon" type="text">
</p>

<p><input id="verzenden" name="verzenden" type="submit" value="verzenden"></p>


</form>
?>
Sorry, ik zie dat ik een paar keer ">" mis. Ik heb ze er nu wel bijstaan:

<?php
// gegevensformulier
<form method="post">

<p>Naam bedrijf:
<input id="naam_bedrijf" name="naam_bedrijf" type="text">
</p>

<p>Naam contactpersoon:
<input id="naam_contactpersoon" name="naam_contactpersoon" type="text">
</p>

<p>Functie:
<input id="functie" name="functie" type="text">
</p>

<p>E-mailadres:
<input id="email" name="email" type="text">
</p>

<p>Telefoonnummer:
<input id="telefoon" name="telefoon" type="text">
</p>

<p><input id="verzenden" name="verzenden" type="submit" value="verzenden"></p>


</form>
?>
Je formulier moet ergens naar toe gestuurd worden anders heb je er niets aan de gegevens op dat formulier dus voeg aan de form tag een action toe, dus:

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

Maak dan dit bestand aan en begin met:
<?php
error_reporting(E_ALL); # Alle PHP errors weergeven


if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
# Het formulier is verzonden

# Even kijken wat we allemaal hebben verstuurd
print_r($_POST);

# Verbinding maken met de database server
# Database selecteren
# Query maken
# Query uitvoeren
}
else
{
# Er is niets verzonden

}
?>





Okee, ziet er keurig uit. Nu moet je gaan kijken hoe je deze gegevens gaat verwerken.

Je hebt een MySql tabel nodig. Noem hem "personen" en maak hem aan in PHP MyAdmin (als je dat hebt).

velden:
id - int - autoincrement - primairy key
naam_bedrijf - varchar 128
naam_contactpersoon - varchar 128
functie - varchar 128
email - varchar 64
telefoon - varchar 16
Hmm, nou ben ik de weg even kwijt :)

Ik heb dus het bestand "gegevens.php" met daarin de volgende code:


<?php
// gegevensformulier
<form method="post">

<p>Naam bedrijf:
<input id="naam_bedrijf" name="naam_bedrijf" type="text">
</p>

<p>Naam contactpersoon:
<input id="naam_contactpersoon" name="naam_contactpersoon" type="text">
</p>

<p>Functie:
<input id="functie" name="functie" type="text">
</p>

<p>E-mailadres:
<input id="email" name="email" type="text">
</p>

<p>Telefoonnummer:
<input id="telefoon" name="telefoon" type="text">
</p>

<p><input id="verzenden" name="verzenden" type="submit" value="verzenden"></p>


</form>
?>


Moet ik in het bestand "gegevens.php" dan de volgende code toevoegen:

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


En een nieuwe file aanmaken ("enquete.php") met de volgende code:


<?php
error_reporting(E_ALL); # Alle PHP errors weergeven


if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
# Het formulier is verzonden

# Even kijken wat we allemaal hebben verstuurd
print_r($_POST);

# Verbinding maken met de database server
# Database selecteren
# Query maken
# Query uitvoeren
}
else
{
# Er is niets verzonden

}
?>


Heb ik het zo goed begrepen of doe ik iets fout?
Je kunt ook alles bijelkaar in doen maar 1 bestand om het formulier te laten zien en 1 om de gegevens te verwerken vind ik mooier, beter en overzichtelijker.

Trouwens, je kunt de gebruiker weer terug sturen naar gegevens.php als er niets is verzonden, dat doe je zo:

<?php
# Er is niets verzonden
header('Location: gegevens.php');
exit;
?>

Tussen de accolades...
Jan,

Het is gelukt, denk ik. Ik heb in ieder geval geen foutmelding gehad en krijg nu de volgende tekst te zien:


SQL-query:
CREATE TABLE `personen` (
`id` INT NOT NULL AUTO_INCREMENT ,
`naam_bedrijf` VARCHAR( 128 ) NOT NULL ,
`naam_contactpersoon` VARCHAR( 128 ) NOT NULL ,
`functie` VARCHAR( 128 ) NOT NULL ,
`email` VARCHAR( 64 ) NOT NULL ,
`telefoon` VARCHAR( 16 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
Ik weet niet precies hoeveel getallen er nu in je primary key kolom kunnen maar dit lijkt mij beter

`id` int(10) unsigned NOT NULL auto_increment,

unsigned betekend dat Mysql alleen rekening hoeft te houden met gehele getallen (dus niet negatief).

Reageren