Sql result in een array
Zou iemand mij kunnen vertellen of ik een sql result in een array kan zetten, mijn bedoeling is dus om een aantal checkboxen te krijgen waar men gegevens kan aanvinken.
Deze gegevens moeten dan wel uit een tabel gehaald worden.
Ik zat zelf een beejte in deze geest te denken, maar ik zou er ook helemaal naast kunnen zitten
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
$hobbies = array ($result);
Ik krijg nu alleen nog maar resource ID #5 melding.
Ik kan hem gelukkig wel aanvinken :)
Code (php)
1
2
3
4
5
2
3
4
5
<?
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
$hobbies = mysql_fetch_array ($result);
?>
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
$hobbies = mysql_fetch_array ($result);
?>
Gewijzigd op 01/01/1970 01:00:00 door M Ypma
Ik krijg nu wel gegevens uit mijn DB te zien,
Ik krijg alleen het eerste record 2 keer te zien, voor de rest laat hij niks zien.
Wanneer ik het eerste record weggooi, dan laat hij het tweede record twee keer zien. Etc..
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
while ($hobbies = mysql_fetch_array ($result)) {
//spreek hier je results aan: $hobbies['hobby_id'];
}
?>
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or die (mysql_error());
while ($hobbies = mysql_fetch_array ($result)) {
//spreek hier je results aan: $hobbies['hobby_id'];
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
$array_hobbies = array();
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or trigger_error(mysql_error());
while($hobbies = mysql_fetch_array ($result)){
$array_hobbies[] = $hobbies['hobby'];
}
//$array_hobbies is nu een array met daarin elke hobby die voorkomt.
?>
$array_hobbies = array();
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or trigger_error(mysql_error());
while($hobbies = mysql_fetch_array ($result)){
$array_hobbies[] = $hobbies['hobby'];
}
//$array_hobbies is nu een array met daarin elke hobby die voorkomt.
?>
Ik krijg melding
Warning: Invalid argument supplied for foreach() in C:\wamp\www\dating\hobbytoevoegen.php on line 25
Ik heb hier de volgende code staan
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
function make_checkboxes ($name, $values, $selections, $vertical = false) {
foreach ($values as $value) {
if ($vertical) {
t (3, true);
echo '<p>';
}
t (3, true);
echo '<input id="' . $value . '" name="' . $name . '[]" type="checkbox" value="' . $value . '"';
if (in_array ($value, $selections)) {
echo ' checked="checked"';
}
echo '>';
t (3, true);
echo '<label for ="' . $value . '">' . $value . '</label>';
if ($vertical) {
t (3, true);
echo '</p>';
}
}
}
?>
function make_checkboxes ($name, $values, $selections, $vertical = false) {
foreach ($values as $value) {
if ($vertical) {
t (3, true);
echo '<p>';
}
t (3, true);
echo '<input id="' . $value . '" name="' . $name . '[]" type="checkbox" value="' . $value . '"';
if (in_array ($value, $selections)) {
echo ' checked="checked"';
}
echo '>';
t (3, true);
echo '<label for ="' . $value . '">' . $value . '</label>';
if ($vertical) {
t (3, true);
echo '</p>';
}
}
}
?>
En hoe roep je je functie aan? Blijkbaar heeft $values niet de juiste waarde...
Wanneer ik de while loop weglaat dan is er geen enkel probleem, wanneer ik deze erin stop krijg ik een fout.
Mijn al zo geringe kennis houdt hier echt op.
Het teveel aan code haal ik zo weer weg. Alvast bedankt.
Gewijzigd op 01/01/1970 01:00:00 door SanderV
Je geeft aan de functie make_checkboxes als tweede parameter de variabele $hobbies mee. Echter $hobbies is geen array terwijl de functie dat wel vereist. Ik denk dat je in plaats van $hobbies de variabele $array_hobbies bedoelde.
Toch bedankt.
Heb je het al geprobeerd om als 2e parameter $array_hobbies aan je functie mee te geven?
Ben nu nog steeds aan het trachten het geheel werkend te krijgen. Ondertussen ook opnieuw begonnen om te kijken of ik het op een andere manier werkende zou gaan krijgen, maar loop tegen hetzelfde aan.
Maar als je kijkt naar de functie make_checkboxes, dan zie je dat de tweede parameter een array moet zijn. Die wordt namelijk op de eerstvolgende regel van je functie al in een foreach loop gebruikt.
Echter uit je script bleek dat $hobbies helemaal geen array is en dus gaat je functie op dat moment de fout in. Daarom vermoedde ik dat je $array_hobbies bedoelde te gebruiken in plaats van $hobbies...
Ik ben blij, hartstikke bedankt!
Vervolgens ga je naar een pagina waar je hobbies aan deze klant kan toevoegen.
Ik heb dus de variabele van het klant_id, ik heb de checkboxes met hierin alle hobbies uit de tabel hobby.
Ik heb ook een koppeltabel klant_hobby_koppel met de kolommen klant_id en hobby.
Nu wil ik dus voor iedere hobby die is aangevinkt in de checkbox een record aanmaken met het klant_id ($hobbytoe) en het aangevinkte record.
Zou iemand mij een klein stukje in de goede richting kunnen sturen met hoe ik dit probleem kan tackelen?
alvast bedankt!
Alle aangevinkte checkboxen staan dan vermeld in de array $_POST['hobbies']. Met een foreach loop kun je deze dus uitlezen en wegschrijven naar de database.
Echter loop je nu tegen het probleem aan dat je niet de omschrijving van de hobbie in je tabel wilt plaatsen, maar juist het id. En laat het nou net zo zijn dat het id niet meegegeven wordt in de checkbox functie...
Als je dit dus wilt, zul je twee dingen aan moeten passen:
1. De manier waarop jij $array_hobbies aanmaakt. De keys in die array moeten hetzelfde zijn als het id van de bijbehorende hobby.
2. De checkboxfunctie moet je uitbreiden met een optie dat het 'value' attribuut van de checkbox niet de omschrijving van de hobby krijgt, maar juist het id van die hobby.
Wanneer ik de foreach weghaal is het excact andersom. Ik krijg dan wel een juist klant_id, maar bij het veld hobby krijg ik dan 'array'.
Ik heb nu dit als code:
(het teveel haal ik straks weer weg, leek me alleen handig om de hele code te posten, omdat er misschien iets mis is in mijn variabelen)
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
104
105
106
107
108
109
110
111
112
113
114
115
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
104
105
106
107
108
109
110
111
112
113
114
115
<?php
require("session.php");
require("config.php");
$hobbytoe = $_GET['id'];
ini_set('display_errors', 1);
error_reporting (E_ALL);
function t($n_tabs, $newline = false) {
if ($newline) echo "\n";
for ($i = 0; $i < $n_tabs; $i++) {
echo "\t";
}
}
function make_checkboxes ($name, $values, $selections, $vertical = true) {
foreach ($values as $value) {
if ($vertical) {
t (1, true);
echo '<p>';
}
t (3, true);
echo '<input id="' . $value . '" name="' . $name . '[]" type="checkbox" value="' . $value . '"';
if (in_array ($value, $selections)) {
echo ' checked="checked"';
}
echo '>';
t (3, true);
echo '<label for ="' . $value . '">' . $value . '</label>';
if ($vertical) {
t (3, true);
echo '</p>';
}
}
}
// initialisatie-arrays;
// drie series checkboxen als voorbeeld
$array_hobbies = array();
$query="SELECT hobby FROM hobby";
$result = mysql_query($query) or trigger_error(mysql_error());
while($hobbies = mysql_fetch_array ($result)){
$array_hobbies[] = $hobbies['hobby'];
}
/
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$hobbies_selections = (isset ($_POST['hobbies'])) ? ($_POST['hobbies']) : (array ());
}
else {
$hobbies_selections = array ();
}
foreach($_POST['hobbies'] as $hobby)
mysql_query("INSERT INTO klanten_hobby_koppel (klanten_id, hobby)
VALUES ('".$hobbytoe."', '".$hobby."')") or die(mysql_error());
?>
<html>
<head>
<title>Selecteer hobbys</title>
</head>
<body>
<font face='Arial'>
<table width='400' border='0' cellspacing='1' cellpadding='0'align='center'>
<tr>
<td colspan='2'>
<img src='logoone2one.jpg'>
</td>
</tr>
<tr>
<td colspan='2' bgcolor='#9EC1E0' class='R7'>
<b>Selecteer hobby</b>
</td>
</tr>
<td>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p><?php make_checkboxes ('hobbies', $array_hobbies, $hobbies_selections); ?></p>
<p><input type="submit" value="verzenden"></p>
</form>
</body>
</html>
gebruik mysql_fetch_assoc() zelfde functie... maar sneller
Jason de Ridder schreef op 19.01.2007 13:05:
gebruik mysql_fetch_assoc() zelfde functie... maar sneller
ipv?
maar dat beantwoord mijn vraag nog niet.
Volgens mij zit ik er helemaal naast :S
ipv mysql_fetch_array
Volgens mij gaat er iets niet goed omdat je het ene met $_GET en het andere weer met $_POST doet. Als je bovenstaand formulier post dan is er geen $_GET gevuld.