Probleem met uitlezen array
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
Waar of wat is hier boven fout? Als ik het insert in de database zijn alle antwoorden 1.
- Ariën -:
Titel aangepast van 'form' naar 'Probleem met uitlezen array'.
Gelieve voortaan zelf de titel duidelijk te maken.
Gelieve voortaan zelf de titel duidelijk te maken.
Gewijzigd op 17/01/2016 18:09:02 door - Ariën -
Code (php)
Ik heb wel mijn vraagtekens waarom je ook dingen die je niet kiest in de database zou willen stoppen, maar je zal er wel een goede reden voor hebben.
Gewijzigd op 17/01/2016 11:33:21 door Ben van Velzen
Nu zijn alle antwoorden in de database 0 ookal vink ik ze aan.
Alvast bedankt!
Laat ook je formulier eens zien en een output van var_dump($values) na de submit.
Ik zie nergens een query.
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
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
<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
else {
echo ("Connection good");
}
$collection= array('appels', 'peren', 'bananen', 'koekjes', 'sap');
if(isset($_POST['submit']))
{ $fruit = $_POST['fruit'];
$values = array();
foreach($collection as $selection )
{ if($selection === $fruit)
{ $values[ $selection ] = 1; }
else
{ $values[ $selection ] = 0; }
}
$sql = "INSERT INTO fruit (appels, peren, bananen, koekjes, sap)
{$values['appels']}, {$values['peren']}, {$values['bananen']}, {$values['koekjes']}, {$values['sap']})";
if ($conn->query($sql) === TRUE) {
echo "<script type= 'text/javascript'>alert('New record created successfully');</script>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
;
}
}
?>
<html>
<head>
</head>
<body>
<form action="index.php" method="post">
<input type="checkbox" name="fruit[]" value="appels">
<input type="checkbox" name="fruit[]" value="bananen">
<input type="checkbox" name="fruit[]" value="koekjes">
<input type="checkbox" name="fruit[]" value="sap">
<input type="checkbox" name="fruit[]" value="peren">
<input type="submit" value="Submit">
</form>
</body>
</html>
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
else {
echo ("Connection good");
}
$collection= array('appels', 'peren', 'bananen', 'koekjes', 'sap');
if(isset($_POST['submit']))
{ $fruit = $_POST['fruit'];
$values = array();
foreach($collection as $selection )
{ if($selection === $fruit)
{ $values[ $selection ] = 1; }
else
{ $values[ $selection ] = 0; }
}
$sql = "INSERT INTO fruit (appels, peren, bananen, koekjes, sap)
{$values['appels']}, {$values['peren']}, {$values['bananen']}, {$values['koekjes']}, {$values['sap']})";
if ($conn->query($sql) === TRUE) {
echo "<script type= 'text/javascript'>alert('New record created successfully');</script>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
;
}
}
?>
<html>
<head>
</head>
<body>
<form action="index.php" method="post">
<input type="checkbox" name="fruit[]" value="appels">
<input type="checkbox" name="fruit[]" value="bananen">
<input type="checkbox" name="fruit[]" value="koekjes">
<input type="checkbox" name="fruit[]" value="sap">
<input type="checkbox" name="fruit[]" value="peren">
<input type="submit" value="Submit">
</form>
</body>
</html>
Gewijzigd op 17/01/2016 17:55:07 door Marcel Groot
Edit: En nog aantal dingen verkeerd, maar daar laat ik je zelf achter komen.
Gewijzigd op 17/01/2016 18:03:14 door DavY -
DavY - op 17/01/2016 18:01:27:
Je mist VALUES op lijn 28 en {} is niet nodig.. (value1, value2, value3, value4).
Edit: En nog aantal dingen verkeerd, maar daar laat ik je zelf achter komen.
Edit: En nog aantal dingen verkeerd, maar daar laat ik je zelf achter komen.
Dat values klopt dat was kopieer foutje.. :/
en ik ben hier eigenlijk gekomen om te vragen voor hulp.. :d
Als ik dit zie:
Dan vraag ik me af of je zelf nog goed kan zien welke accolade nou bij welke statement hoort.
Je form klopt totaal niet met je afhandeling. Je hebt hier $_POST['fruit'] die zelf ook nog weer een array is. Deze array moet je gebruiken om je query op te bouwen.
Maar ik heb een vraag over hoe het komt dat data in mijn database krijg dat alleen maar 1 is en niet 0 terwijl niet alles is aangevinkt..
Je vergelijkt op regel 21 van je laatste fragment een waarde ($selection) met een array ($_POST['fruit']). Dit levert nooit iets zinnigs op.
Wat je dus zou moeten doen is controleren of $_POST['fruit'] bestaat en een array is, en deze dan doorlopen en controleren aan de hand van de lijst van toegestane waarden (ook wel "whitelist" genoemd, de $collection) welke (geldige) items waren geselecteerd.
Als het geselecteerd is wordt de value 1 en als het niet geselecteerd is wordt het 0.
Nu heb ik dit geprobeerd, en wat dus niet werkt.. Maar hoe zou ik het dan wel goed moeten doen.
(Graag laten zien hoe of iets van enige tutorial laten zien.)
Dan met is_array() controleren of $_POST['fruit'] een array is.
En dan met in_array() controleren of de gekozen $selection voorkomt in de Scollection.
Korte vraag. Begrijp je eigenlijk wel wat de code die je typt aan het doen is? En wat er verwacht wordt dat de code gaat doen? Dus wat de input van de code is, en wat het uiteindelijke resultaat moet zijn? Ik ben er namelijk voorstander van dat je zoveel mogelijk zelf doet, dus is het handig als duidelijk is in hoeverre we je aan de hand moeten vasthouden.
Want ik durf te wedden dat je er nog vrijwel niks van gelezen hebt.
Ik had het wel opgezocht.. Misschien niet zorgvuldig genoeg om zeker te weten dat het dat was, maar ik snap het nog steeds niet 100%
Controleer met een if-else op is_array en in_array.