Gegevens volgens insert into werkt niet
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
error_reporting(E_ALL);
$db=mysql_connect("localhost", "root")
or die("Kan niet verbinden: ". mysql_error());
$res=mysql_select_db("tevredenheidsonderzoek",$db);
if(!$res)
{
echo "Kan de database niet openen";
exit;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "INSERT INTO antwoorden (volgordenr, antwoord)VALUES
(
'" . mysql_real_escape_string ($_POST['volgordenr']) . "',
'" . mysql_real_escape_string ($_POST['antw1']) . "',
'" . mysql_real_escape_string ($_POST['antw2']) . "',
'" . mysql_real_escape_string ($_POST['antw3']) . "',
'" . mysql_real_escape_string ($_POST['antw4']) . "',
'" . mysql_real_escape_string ($_POST['antw5']) . "'
'" . mysql_real_escape_string ($_POST['antw6']) . "'
)";
if (!mysql_query ($sql)) {
trigger_error (mysql_error ());
}
echo('De gegevens zijn in de db gezet, bedankt voor het invullen.');
}
$sql="SELECT * FROM `vragen` WHERE `hoofdstuknr`=1 order by `volgordenr`";
$resultaat=mysql_query($sql);
if (mysql_num_rows($resultaat)==0)
echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "ALGEMENE VRAGEN";
echo "<table border=1 width=100%>";
while($rij=mysql_fetch_array($resultaat))
{
echo "<tr>\n";
echo "<td>".$rij["volgordenr"]."</td>";
echo "<td>".$rij["vraagtekst"]."</td>";
echo "<td>";
if (trim($rij["antw1"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw1\"/>" .$rij["antw1"];
}
else
{
echo " ";
}
echo "<td>";
if (trim($rij["antw2"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw2\"/>" .$rij["antw2"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw3"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw3\"/>" .$rij["antw3"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw4"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw4\"/>" .$rij["antw4"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw5"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw5\"/>" .$rij["antw5"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw6"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw6\"/>" .$rij["antw6"];
}
else
{
echo " ";
}
echo "</td>";
echo "</tr>\n";
}
echo "</table></form>";
echo "<input type=\"submit\"name=\"submit\"value=\"formulier verwerken\"/>";
mysql_close($db);
?>
error_reporting(E_ALL);
$db=mysql_connect("localhost", "root")
or die("Kan niet verbinden: ". mysql_error());
$res=mysql_select_db("tevredenheidsonderzoek",$db);
if(!$res)
{
echo "Kan de database niet openen";
exit;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "INSERT INTO antwoorden (volgordenr, antwoord)VALUES
(
'" . mysql_real_escape_string ($_POST['volgordenr']) . "',
'" . mysql_real_escape_string ($_POST['antw1']) . "',
'" . mysql_real_escape_string ($_POST['antw2']) . "',
'" . mysql_real_escape_string ($_POST['antw3']) . "',
'" . mysql_real_escape_string ($_POST['antw4']) . "',
'" . mysql_real_escape_string ($_POST['antw5']) . "'
'" . mysql_real_escape_string ($_POST['antw6']) . "'
)";
if (!mysql_query ($sql)) {
trigger_error (mysql_error ());
}
echo('De gegevens zijn in de db gezet, bedankt voor het invullen.');
}
$sql="SELECT * FROM `vragen` WHERE `hoofdstuknr`=1 order by `volgordenr`";
$resultaat=mysql_query($sql);
if (mysql_num_rows($resultaat)==0)
echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "ALGEMENE VRAGEN";
echo "<table border=1 width=100%>";
while($rij=mysql_fetch_array($resultaat))
{
echo "<tr>\n";
echo "<td>".$rij["volgordenr"]."</td>";
echo "<td>".$rij["vraagtekst"]."</td>";
echo "<td>";
if (trim($rij["antw1"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw1\"/>" .$rij["antw1"];
}
else
{
echo " ";
}
echo "<td>";
if (trim($rij["antw2"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw2\"/>" .$rij["antw2"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw3"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw3\"/>" .$rij["antw3"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw4"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw4\"/>" .$rij["antw4"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw5"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw5\"/>" .$rij["antw5"];
}
else
{
echo " ";
}
echo "</td>";
echo "<td>";
if (trim($rij["antw6"]) != "")
{
echo "<input type=\"radio\" name=\"antw" . $rij['volgordenr'] . "\" value=\"Antw6\"/>" .$rij["antw6"];
}
else
{
echo " ";
}
echo "</td>";
echo "</tr>\n";
}
echo "</table></form>";
echo "<input type=\"submit\"name=\"submit\"value=\"formulier verwerken\"/>";
mysql_close($db);
?>
Daarnaast ben ik bang dat het datamodel dat je nu gebruikt niet helemaal juist is. Dit vermoeden krijg ik door de variabelen $rij['antw1'] etc. Zodra je namelijk kolommen gaat nummeren wijst dat bijna altijd op een incorrect datamodel. Dat zou onder andere ook de problemen die je nu hebt kunnen verklaren.
Zou je misschien eens aan kunnen geven hoe je datamodel er nu uit ziet?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$query = "INSERT INTO antwoorden (volgordenr, antwoord)VALUES
(
'" . mysql_real_escape_string ($_POST['volgordenr']) . "',
'" . mysql_real_escape_string ($_POST['antw1']) . "',
'" . mysql_real_escape_string ($_POST['antw2']) . "',
'" . mysql_real_escape_string ($_POST['antw3']) . "',
'" . mysql_real_escape_string ($_POST['antw4']) . "',
'" . mysql_real_escape_string ($_POST['antw5']) . "'
'" . mysql_real_escape_string ($_POST['antw6']) . "'
)";
?>
$query = "INSERT INTO antwoorden (volgordenr, antwoord)VALUES
(
'" . mysql_real_escape_string ($_POST['volgordenr']) . "',
'" . mysql_real_escape_string ($_POST['antw1']) . "',
'" . mysql_real_escape_string ($_POST['antw2']) . "',
'" . mysql_real_escape_string ($_POST['antw3']) . "',
'" . mysql_real_escape_string ($_POST['antw4']) . "',
'" . mysql_real_escape_string ($_POST['antw5']) . "'
'" . mysql_real_escape_string ($_POST['antw6']) . "'
)";
?>
Dit gaat igg geval al op 2 punten fout. Je geeft hier 2 velden die je wilt vullen met 7 waarden.
Je zult die query in een for of while loop moeten zetten.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$max = aantal vragen;
for ($i=1;$i<=$max;$i++) {
$result=mysql_query("INSERT INTO antwoorden (volgordenr, antwoord)VALUES
(
'" . mysql_real_escape_string ($_POST['volgordenr']) . "',
'" . mysql_real_escape_string ($_POST['antw'.$i]) . "'");
}
?>
$max = aantal vragen;
for ($i=1;$i<=$max;$i++) {
$result=mysql_query("INSERT INTO antwoorden (volgordenr, antwoord)VALUES
(
'" . mysql_real_escape_string ($_POST['volgordenr']) . "',
'" . mysql_real_escape_string ($_POST['antw'.$i]) . "'");
}
?>
Dat zie je dus ook meteen dat je de mysql_query niet aanroept en daarom ook niets in je database gezet wordt, zelfs geen foute data.
Edit: Haha, blanche was me voor :)
Gewijzigd op 01/01/1970 01:00:00 door Jaws
Je methode om te controleren of het formulier is gepost is sowieso fout.
Je controleert of de request method POST is, maar niet of de variabelen bestaan...
Vind het trouwens ook wel vreemd dat je radio buttons gebruikt. Je hebt namelijk maar 1 optie per name... Hoezo dan radio? Radio is om te kiezen uit verschillende opties voor 1 name.
Denk dat je checkbox moet hebben. Dan heb je elke name met 1 value en die staat dan uit of aan.
Dat kan je controleren met isset().
Quote:
Dat is niet waar. Dit is de manier om te controleren of er een formulier gepost is. Natuurlijk moet je vervolgens ook (!) controleren of de velden wel ingevulde zijn (cq. variabelen wel bestaan).Je methode om te controleren of het formulier is gepost is sowieso fout.
En hoogstwaarschijnlijk zit de fout in een verkeerd datamodel, dus dat zal eerst opgelost moeten worden.
Blanche schreef op 22.03.2007 14:37:
Je INSERT query klopt niet. Je probeert 7 waarden in te voegen in maar 2 kolommen, dat gaat natuurlijk niet werken.
Daarnaast ben ik bang dat het datamodel dat je nu gebruikt niet helemaal juist is. Dit vermoeden krijg ik door de variabelen $rij['antw1'] etc. Zodra je namelijk kolommen gaat nummeren wijst dat bijna altijd op een incorrect datamodel. Dat zou onder andere ook de problemen die je nu hebt kunnen verklaren.
Zou je misschien eens aan kunnen geven hoe je datamodel er nu uit ziet?
Daarnaast ben ik bang dat het datamodel dat je nu gebruikt niet helemaal juist is. Dit vermoeden krijg ik door de variabelen $rij['antw1'] etc. Zodra je namelijk kolommen gaat nummeren wijst dat bijna altijd op een incorrect datamodel. Dat zou onder andere ook de problemen die je nu hebt kunnen verklaren.
Zou je misschien eens aan kunnen geven hoe je datamodel er nu uit ziet?
Ik heb 1 database dat bestaat uit een vraagnr., volgordernr., vraagtekst, antw1, antw2, antw3, antw4, antw5, antw6 hierin staan alle gegevens deze haalt hij met de Select om een toont zo de vragen etc. Het datamodel waar het naar toe moet worden gestuurd bestaat uit een kolom volgordenr. en een kolom antwoord. In de kolom volgorder moet de nr. van de vraag komen en in de kolom antwoord 1 van de antwoorden die bij die desbetreffende rij is ingevuld (hier kan je dan kiezen uit 6 antwoorden) dus er hoeft alleen maar het volgordenr. en een antwoord per vraag worden weggeschreven (ik hoop dat je het nog snapt) voor jullie misschien gesneden koek maar ik vindt het nog steeds een erge moeilijke materie
Hoe het er bijvoorbeeld uit zou kunnen zien is als volgt:
vragen
--------
id
vraag
antwoorden
-------------
id
antwoord
vraag_id
gegeven_antwoorden
------------------------
id
vraag_id
antwoord_id
In de vragen tabel komen alle vragen te staan. In de antwoorden tabel staan alle antwoorden met daarbij aangegeven bij welke vraag ze horen. In de gegeven_antwoorden tabel sla je de antwoorden die gegeven worden op.
Zoals je ziet is het nu een anoniem systeem, maar je zou er natuurlijk ook nog een tabel 'gebruikers' in op kunnen nemen en vervolgens in de 'gegeven_antwoorden' tabel ook het gebruiker_id kunnen plaatsen.
dus er wordt per vraag een volgordenr. (van de vraag) + één antwoord weggeschreven.
Kijk ook eens naar de verschillende tutorials over het normaliseren van een database. Dat is wat je nu namelijk te doen staat.