Probleem met uitlezen array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marcel Groot

Marcel Groot

17/01/2016 11:13:39
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$collection
= array('appels', 'peren', 'bananen', 'koekjes', 'sap');
if(isset($_POST['submit']))
{
   $fruit = $_POST['fruit'];
   $values = array($collection);
    foreach($collection as $selection )
    {
     if(array($selection, $fruit))
            {
$values[ $selection ] = 1;  }
        else
            { $values[ $selection ] = 0;  }
   }

?>


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.
Gewijzigd op 17/01/2016 18:09:02 door - Ariën -
 
PHP hulp

PHP hulp

21/11/2024 23:25:44
 
Ben van Velzen

Ben van Velzen

17/01/2016 11:31:52
Quote Anchor link
Ik weet niet wat je denkt te bereiken door overal array() omheen te plakken, maar probeer het zo eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$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;  }
   }

?>


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
 
Marcel Groot

Marcel Groot

17/01/2016 12:58:32
Quote Anchor link
Nu zijn alle antwoorden in de database 0 ookal vink ik ze aan.
 
- Ariën  -
Beheerder

- Ariën -

17/01/2016 13:18:22
Quote Anchor link
Zou je een passendere titel willen invullen bij je eerste bericht? Er word hier namelijk een titel verwacht die je probleem of vraag omschrijft.

Alvast bedankt!
 
Ben van Velzen

Ben van Velzen

17/01/2016 13:48:03
Quote Anchor link
Laat ook je formulier eens zien en een output van var_dump($values) na de submit.
 
Obelix Idefix

Obelix Idefix

17/01/2016 14:02:04
Quote Anchor link
Ik zie nergens een query.
 
Marcel Groot

Marcel Groot

17/01/2016 17:54:07
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
Gewijzigd op 17/01/2016 17:55:07 door Marcel Groot
 
DavY -

DavY -

17/01/2016 18:01:27
Quote Anchor link
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.
Gewijzigd op 17/01/2016 18:03:14 door DavY -
 
Marcel Groot

Marcel Groot

17/01/2016 18:46:01
Quote Anchor link
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.


Dat values klopt dat was kopieer foutje.. :/

en ik ben hier eigenlijk gekomen om te vragen voor hulp.. :d
 
- Ariën  -
Beheerder

- Ariën -

17/01/2016 18:46:55
Quote Anchor link
Mijn tip: Zorg als je blieft voor goede uitlijning.
Als ik dit zie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
}
}
}
}
}

Dan vraag ik me af of je zelf nog goed kan zien welke accolade nou bij welke statement hoort.
 
Ben van Velzen

Ben van Velzen

17/01/2016 19:17:37
Quote Anchor link
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.
 
Marcel Groot

Marcel Groot

17/01/2016 19:20:25
Quote Anchor link
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..
 
Thomas van den Heuvel

Thomas van den Heuvel

17/01/2016 19:24:37
Quote Anchor link
$_POST['fruit'] is een array (of een niet-bestaand formulier-element als geen enkele checkbox 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.
 
Marcel Groot

Marcel Groot

17/01/2016 19:43:36
Quote Anchor link
Het is toch gewoon simpel?

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.)
 
- Ariën  -
Beheerder

- Ariën -

17/01/2016 19:47:03
Quote Anchor link
Met isset() eerst kijken of $_POST['fruit'] bestaat
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.
 
Marcel Groot

Marcel Groot

17/01/2016 20:20:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(isset($_POST['submit']))
{
is_array(($_POST['fruit']);
  in_array($collection);
   $values = array(fruit);
    foreach($collection as $selection )
    {
     if($selection === $fruit)
            {
$values[ $selection ] = 1;  }
        else
            { $values[ $selection ] = 0;  }
}

?>



Dus dan krijg je zoiets?
Gewijzigd op 17/01/2016 20:21:11 door Marcel Groot
 
Ben van Velzen

Ben van Velzen

17/01/2016 20:24:31
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

17/01/2016 20:32:08
Quote Anchor link
Misschien is het handig op eens op de linkjes van de PHP-functies in je codeblok te klikken.
Want ik durf te wedden dat je er nog vrijwel niks van gelezen hebt.
 
Marcel Groot

Marcel Groot

18/01/2016 10:56:11
Quote Anchor link
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%
 
- Ariën  -
Beheerder

- Ariën -

18/01/2016 11:03:03
Quote Anchor link
Controleer met een if-else op is_array en in_array.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.