2 rijen in de database worden toegevoegd, terwijl dit er 1 moet zijn.
Bij de index.php wordt de klas en docent uitgekozen en wordt je doorgestuurd naar enquete.php.
Wanneer de enquête is ingevuld is het de bedoeling dat de gegevens van index.php en enquete.php allebei bij elkaar in 1 regel in de database worden weggeschreven.
De database wordt nu op deze manier gevuld:
resultaatID, datum, klas, docent, 1A, 1B, 1C, 1D, 2A, 2B, 2C, 2D
1, 2012-04-03, B1a, docent1, 0, 0, 0, 0, 0, 0, 0, 0
2, 2012-04-03, (leeg), (leeg), 1, 0, 0, 0, 0, 1, 0, 0
Maar zou zo moeten worden:
resultaatID, datum, klas, docent, 1A, 1B, 1C, 1D, 2A, 2B, 2C, 2D
1, 2012-04-03, B1a, docent1, 1, 0, 0, 0, 0, 1, 0, 0
Dit zijn de codes:
index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
session_start();
include("include/header.php");
include("include/config.php");
?>
<html>
<head>
<title>Index</title>
<link rel="stylesheet" type="text/css" href="include/style.css">
</head>
<body>
<?php
$query2 = mysql_query('SELECT klas FROM klassen') or die(mysql_error());
$query3 = mysql_query('SELECT docent FROM docenten') or die(mysql_error());
?>
<form action="enquete.php" method="post">
<table>
<tr>
<td>Klas:</td>
<td><select name="klas">
<?php
while (list($klas) = mysql_fetch_row($query2)){
echo("<option value='$klas'>$klas</option>");
}
?>
</select></td>
</tr>
<tr>
<td>Docent:</td>
<td><select name="docent">
<?php
while (list($docent) = mysql_fetch_row($query3)){
echo("<option value='$docent'>$docent</option>");
}
?>
</select></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="start" name="start"/></td>
</tr>
</table>
</form>
<br>
<a href=login.php>LOGIN</a>
</body>
</html>
<?php
include("include/footer.php");
?>
session_start();
include("include/header.php");
include("include/config.php");
?>
<html>
<head>
<title>Index</title>
<link rel="stylesheet" type="text/css" href="include/style.css">
</head>
<body>
<?php
$query2 = mysql_query('SELECT klas FROM klassen') or die(mysql_error());
$query3 = mysql_query('SELECT docent FROM docenten') or die(mysql_error());
?>
<form action="enquete.php" method="post">
<table>
<tr>
<td>Klas:</td>
<td><select name="klas">
<?php
while (list($klas) = mysql_fetch_row($query2)){
echo("<option value='$klas'>$klas</option>");
}
?>
</select></td>
</tr>
<tr>
<td>Docent:</td>
<td><select name="docent">
<?php
while (list($docent) = mysql_fetch_row($query3)){
echo("<option value='$docent'>$docent</option>");
}
?>
</select></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="start" name="start"/></td>
</tr>
</table>
</form>
<br>
<a href=login.php>LOGIN</a>
</body>
</html>
<?php
include("include/footer.php");
?>
enquete.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
session_start();
include ("include/header.php");
include ("include/config.php");
?>
<html>
<head>
<title>Enquete</title>
<link rel="stylesheet" type="text/css" href="include/style.css" />
</head>
<body>
<form action="" method="post">
<table>
<?php
//hoeveel vragen staan er in de db?
$aantalvragenquery = mysql_query("SELECT * FROM vragen");
$totaalaantalvragen = mysql_num_rows($aantalvragenquery);
// haal vraag id's op
$resultvraagids = mysql_query("SELECT vraagID FROM vragen");
$i = 0;
while ($rij = mysql_fetch_array($resultvraagids))
{
//query om de vragen op te halen en deze beneden erbij te zetten
$resultvragen = mysql_query("SELECT vraag FROM vragen WHERE vraagID =" . $rij["vraagID"]);
//query om te kijken voor elke vraag welke antwoorden erbij horen
$resultantwoorden = mysql_query("SELECT antwoord FROM antwoorden WHERE vraagID =" .
$rij["vraagID"]);
//vragen loop
while ($rij1 = mysql_fetch_array($resultvragen))
{
echo '<tr>
<td><b>' . $rij1["vraag"] . '</b></td>
</tr>
<tr><td></td></tr>';
}
//antwoorden loop
while ($rij2 = mysql_fetch_array($resultantwoorden))
{
$i++;
echo '<tr>
<td><input type="radio" name="antwoord' . $i . '"/>' . $rij2["antwoord"] . '</td>
</tr>';
//kijk voor elk antwoord of het antwoord is aangeklikt en laat het zien
if (isset($_POST['antwoord'.$i]))
{
$antwoord='antwoord';
${$antwoord.$i}=1;
}
}
echo '<tr><td></td></tr>';
}
?>
<tr>
<td></td>
<td><input type="submit" value="stoppen" name="stoppen"/></td>
</tr>
</table>
</form>
</body>
</html>
<?php
if(!empty($_POST))
{
//datum van vandaag
$date = date("Y-m-d");
$id = $_POST['resultaatID'];
//resultaat invoeren
$query = "INSERT INTO resultaten (resultaatID, klas, docent, datum, 1A, 1B, 1C, 1D, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, 4A, 4B, 4C, 4D, 5A, 5B, 5C, 5D, 6A, 6B, 6C, 6D, 7A, 7B, 7C, 7D, 8A, 8B, 8C, 8D, 9A, 9B, 9C, 9D, 10A, 10B, 10C, 10D, 11A, 11B, 11C, 11D, 12A, 12B, 12C, 12D, 13A, 13B, 13C, 13D, 14A, 14B, 14C, 14D, 15A, 15B, 15C, 15D)
VALUES ('$id','$_POST[klas]','$_POST[docent]','$date','$antwoord1','$antwoord2','$antwoord3','$antwoord4','$antwoord5','$antwoord6','$antwoord7','$antwoord8','$antwoord9','$antwoord10','$antwoord11','$antwoord12','$antwoord13','$antwoord14','$antwoord15','$antwoord16','$antwoord17','$antwoord18','$antwoord19','$antwoord20','$antwoord21','$antwoord22','$antwoord23','$antwoord24','$antwoord25','$antwoord26','$antwoord27','$antwoord28','$antwoord29','$antwoord30','$antwoord31','$antwoord32','$antwoord33','$antwoord34','$antwoord35','$antwoord36','$antwoord37','$antwoord38','$antwoord39','$antwoord40','$antwoord41','$antwoord42','$antwoord43','$antwoord44','$antwoord45','$antwoord46','$antwoord47','$antwoord48','$antwoord49','$antwoord50','$antwoord51','$antwoord52','$antwoord53','$antwoord54','$antwoord55','$antwoord56','$antwoord57','$antwoord58','$antwoord59','$antwoord60')";
$result = mysql_query($query) or die ("FOUT: " . mysql_error());
}
include ("include/footer.php");
?>
session_start();
include ("include/header.php");
include ("include/config.php");
?>
<html>
<head>
<title>Enquete</title>
<link rel="stylesheet" type="text/css" href="include/style.css" />
</head>
<body>
<form action="" method="post">
<table>
<?php
//hoeveel vragen staan er in de db?
$aantalvragenquery = mysql_query("SELECT * FROM vragen");
$totaalaantalvragen = mysql_num_rows($aantalvragenquery);
// haal vraag id's op
$resultvraagids = mysql_query("SELECT vraagID FROM vragen");
$i = 0;
while ($rij = mysql_fetch_array($resultvraagids))
{
//query om de vragen op te halen en deze beneden erbij te zetten
$resultvragen = mysql_query("SELECT vraag FROM vragen WHERE vraagID =" . $rij["vraagID"]);
//query om te kijken voor elke vraag welke antwoorden erbij horen
$resultantwoorden = mysql_query("SELECT antwoord FROM antwoorden WHERE vraagID =" .
$rij["vraagID"]);
//vragen loop
while ($rij1 = mysql_fetch_array($resultvragen))
{
echo '<tr>
<td><b>' . $rij1["vraag"] . '</b></td>
</tr>
<tr><td></td></tr>';
}
//antwoorden loop
while ($rij2 = mysql_fetch_array($resultantwoorden))
{
$i++;
echo '<tr>
<td><input type="radio" name="antwoord' . $i . '"/>' . $rij2["antwoord"] . '</td>
</tr>';
//kijk voor elk antwoord of het antwoord is aangeklikt en laat het zien
if (isset($_POST['antwoord'.$i]))
{
$antwoord='antwoord';
${$antwoord.$i}=1;
}
}
echo '<tr><td></td></tr>';
}
?>
<tr>
<td></td>
<td><input type="submit" value="stoppen" name="stoppen"/></td>
</tr>
</table>
</form>
</body>
</html>
<?php
if(!empty($_POST))
{
//datum van vandaag
$date = date("Y-m-d");
$id = $_POST['resultaatID'];
//resultaat invoeren
$query = "INSERT INTO resultaten (resultaatID, klas, docent, datum, 1A, 1B, 1C, 1D, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, 4A, 4B, 4C, 4D, 5A, 5B, 5C, 5D, 6A, 6B, 6C, 6D, 7A, 7B, 7C, 7D, 8A, 8B, 8C, 8D, 9A, 9B, 9C, 9D, 10A, 10B, 10C, 10D, 11A, 11B, 11C, 11D, 12A, 12B, 12C, 12D, 13A, 13B, 13C, 13D, 14A, 14B, 14C, 14D, 15A, 15B, 15C, 15D)
VALUES ('$id','$_POST[klas]','$_POST[docent]','$date','$antwoord1','$antwoord2','$antwoord3','$antwoord4','$antwoord5','$antwoord6','$antwoord7','$antwoord8','$antwoord9','$antwoord10','$antwoord11','$antwoord12','$antwoord13','$antwoord14','$antwoord15','$antwoord16','$antwoord17','$antwoord18','$antwoord19','$antwoord20','$antwoord21','$antwoord22','$antwoord23','$antwoord24','$antwoord25','$antwoord26','$antwoord27','$antwoord28','$antwoord29','$antwoord30','$antwoord31','$antwoord32','$antwoord33','$antwoord34','$antwoord35','$antwoord36','$antwoord37','$antwoord38','$antwoord39','$antwoord40','$antwoord41','$antwoord42','$antwoord43','$antwoord44','$antwoord45','$antwoord46','$antwoord47','$antwoord48','$antwoord49','$antwoord50','$antwoord51','$antwoord52','$antwoord53','$antwoord54','$antwoord55','$antwoord56','$antwoord57','$antwoord58','$antwoord59','$antwoord60')";
$result = mysql_query($query) or die ("FOUT: " . mysql_error());
}
include ("include/footer.php");
?>
Hoe kan ik dit oplossen? Het kan goed zijn dat er nog een aantal fouten inzitten. Ik moet namelijk deze website maken voor een stageopdracht, maar heb nooit echt php gedaan.
Zou eventueel iemand mij ook kunnen helpen met de rest van de website?
Toevoeging op 03/04/2012 10:48:29:
oeps mijn codes staan er nu raar in XD
Gewijzigd op 03/04/2012 10:51:11 door Inge V
Zet tijdens het testen dit bovenaan je script:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
?>
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
?>
Geef je queries duidelijkere namen zo raak je niet in de war.
Or die is geen juiste manier voor foutafhandeling gebruik:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
$query = mysql_query('blabal');
if($query === false){
echo mysql_error();
}
else{
//gadoor
}
?>
$query = mysql_query('blabal');
if($query === false){
echo mysql_error();
}
else{
//gadoor
}
?>
Om fouten te voorkomen, kan je beter je variabelen buiten de quotes halen in je query, en kan je ze direct beveiligen:
Code (php)
1
2
3
2
3
<?
$query = mysql_query("INSERT INTO iets(veld, nogeenveld) VALUES('". mysql_real_escape_string($veld) ."','".mysql_real_escape_string($nogeenveld)."')")
?>
$query = mysql_query("INSERT INTO iets(veld, nogeenveld) VALUES('". mysql_real_escape_string($veld) ."','".mysql_real_escape_string($nogeenveld)."')")
?>
Zo te zien is je database niet erg handig ingedeeld, gebruik een apart tabel voor de vragen en een tabel voor de antwoorden, deze koppel je aan elkaar met ID's.
Om je codes goed weer te geven met je [code][/code] tags om je gehele code heen zetten.
Gewijzigd op 03/04/2012 10:56:43 door gerhard l
en wat is het probleem dan? wat voor foutmelding krijg je wat snap je niet? waar wil je mee geholpen worden?
nu zeg je ik heb A het moet worden B en dit is de code ..
verder.. moet zijn dus met de enkele quotes ( pas dit overal toe in je query )
gebruik mysql_fetch_assoc ipv Fetch..
en waarom de tellertje in je while?
Toevoeging op 03/04/2012 10:57:46:
lees deze tut van roel even door dan weetje gelijk hoe je foutafhandeling moet toepassen en veel van de andere fouten die je nu hebt moet aanpassen.
http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/
Gewijzigd op 03/04/2012 10:55:10 door Reshad F
Gerhard l op 03/04/2012 10:49:47:
Ik moet zeggen als dit je eerste php code is, ben je toch goed bezig. Maar er kan nog wel heel wat verbeterd worden:
Zet tijdens het testen dit bovenaan je script:
Zet tijdens het testen dit bovenaan je script:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
?>
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
?>
Ik heb wat hulp gehad van de icters hier, maar die kunnen natuurlijk niet alles gaan voorkauwen :P
Hij geeft aan:
Undefined variable: antwoord2 in /var/www/enquete.php on line 80 Notice: Undefined variable: antwoord3 in /var/www/enquete.php on line 80.. enz, enz.
Maar omdat hij wordt gestuurd naar zijn eigen pagina, wordt dat onderste gedeelte INSERT wel uitgevoerd en krijg ik wel een 1 in de database als die radiobutton is aangevinkt. Ik denk dat ik dat gedeelte op de verkeerde plaats heb staan, want als ik hem naar een andere pagina stuur dan voert ie het niet uit. Ik weet alleen niet waar ik het moet zetten dan. Of wat ik moet aanpassen.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$aantalvragenquery = mysql_query("SELECT * FROM vragen");
$totaalaantalvragen = mysql_num_rows($aantalvragenquery);
// haal vraag id's op
$resultvraagids = mysql_query("SELECT vraagID FROM vragen");
?>
$aantalvragenquery = mysql_query("SELECT * FROM vragen");
$totaalaantalvragen = mysql_num_rows($aantalvragenquery);
// haal vraag id's op
$resultvraagids = mysql_query("SELECT vraagID FROM vragen");
?>
Bij de tweede query doe je natuurlijk precies hetzelfde als bij de eerste, alleen haal je dan alleen de vraagID kolom op, in plaats van alle kolommen. Die mysql_num_rows kan je dus net zo goed doen op de tweede query, kan je die eerste gewoon weglaten.
Vervolgens doe je nog eens:
Code (php)
1
2
3
2
3
<?php
$resultvragen = mysql_query("SELECT vraag FROM vragen WHERE vraagID =" . $rij["vraagID"]);
?>
$resultvragen = mysql_query("SELECT vraag FROM vragen WHERE vraagID =" . $rij["vraagID"]);
?>
Waarom dat ook niet gewoon meteen invoegen in de eerdere query waar je de IDs ophaalt? Dus:
scheelt je weer een x-aantal queries.
Maar goed zoals gezegd heb ik het idee dat dit tegen dovemansoren is gezegd.
undefined variable houd in dat je een variable hebt die nergens opgehaald wordt / gelinkt wordt aan.. ( weet niet of ik het zo goed uitleg ) dus kijk even waar die vandaan komen. lees even de tut van roel door die ik hiervoor gepost heb en ik denk dat je 80% van je fouten kwijt bent.
Reshadd farid op 03/04/2012 10:49:59:
wijzig je codes eventjes a.u.b. alleen de php code is genoeg. :)
en wat is het probleem dan? wat voor foutmelding krijg je wat snap je niet? waar wil je mee geholpen worden?
nu zeg je ik heb A het moet worden B en dit is de code ..
verder.. moet zijn dus met de enkele quotes ( pas dit overal toe in je query )
gebruik mysql_fetch_assoc ipv Fetch..
en waarom de tellertje in je while?
en wat is het probleem dan? wat voor foutmelding krijg je wat snap je niet? waar wil je mee geholpen worden?
nu zeg je ik heb A het moet worden B en dit is de code ..
verder.. moet zijn dus met de enkele quotes ( pas dit overal toe in je query )
gebruik mysql_fetch_assoc ipv Fetch..
en waarom de tellertje in je while?
Met het tellertje in de while worden de aantal antwoorden die er in de database staan geteld en worden dan netjes op de pagina weergeven.
Als ik er $_POST['klas'] van maak, dan krijg ik een leeg scherm, maar dat heeft denk ik ook met de andere cootjes te maken die ik in mijn script heb staan... weet niet precies hoe de rest dan moet.
Ik wil dat de gegevens die gekozen worden bij index.php in dezelfde rij komen als de gegevens die ingevult worden bij enquete.php
Bij enquete.php haalt hij de vragen op uit de tabel vragen en de antwoorden op uit de tabel antwoorden. Iedere vraag heeft 4 antwoorden en dat wordt ook netjes op de pagina gezet:
vraag1
antwoord1
antwoord2
antwoord3
antwoord4
vraag2
antwoord5
antwoord6
enz..
Nu is het zo wanneer vraag1, antwoord1 is gekozen wordt deze in de database weggeschreven in de tabel resultaten onder de kolom 1A als een 1. wanneer de radiobutton niet is gekozen, komt er een 0 te staan. Zo wordt er dus bij vraag2, antwoord6 een 1 neergzet onder de kolom 2B.
Het enige grote probleem is dus dat er 1 rij komt waar de gekozen radiobuttons in komen te staan + datum en 1 aparte rij voor de gekozen klas en docent op de indexpagina. Ik wil dat dit op 1 rij terecht komt dat het in de database zo weggeschreven wordt:
resultaatID, klas, docent, datum, 1A, 1B, 1C, 1D, 2A, 2B, 2C, 2D..
1, B1a, docent1, 2012-04-03, 1, 0, 0, 0, 0, 1, 0, 0
Kunnen er op één vraag meerdere antwoordrn gegeven worden?
Ger van Steenderen op 03/04/2012 14:27:39:
Je script volgorde is verkeerd. Je handeld namelijk een formulier in hetzelfde script af waarmee je het formulier toont. Geen probleem, maar dan is het beter om eerst te kijken of er gepost - if ($_SERVER['REQUEST_METHOD'] == 'POST') - zoja doe de dingen met de database zo niet dan toon je het formulier.
Kunnen er op één vraag meerdere antwoordrn gegeven worden?
Kunnen er op één vraag meerdere antwoordrn gegeven worden?
Waar kan ik dit dan precies plaatsen? Of als dit toch niet handig is. Hoe kan ik ervoor zorgen dat ik het formulier tonen
Ik heb per vraag 4 antwoorden.
Zou je me eventueel nog meer kunnen helpen met codes voor de kleine website die ik aan het maken ben? Ik ga namelijk te langzaam vooruit, want ik heb te weinig kennis van php, maar toch moet het voor mijn stageopdracht...
Natuurlijk kan ik je verder helpen. Dus als je eerst eventjes vertelt wat die opdracht precies inhoud.