Id van <select> opslaan in variable
Ik ben bezig met een stuk code waarin je een gebruiker kan selecteren en waarin je vervolgens zijn gegeven kan aanpassen.
Hiervoor heb ik een <select>, waarin je de gebruiker kan selecteren.
In deze <select> heb ik meerdere kolommen van mijn tabel staan, waaronder id, gebruikersnaam, achternaam etc.
Nu wil ik dat als de gebruiker iemand selecteert, het ID van de geselecteerde persoon wordt opgeslagen in een PHP variable.
Hieronder staat mijn <select>:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<form method="post">
Gebruiker:<select name="gebruiker">
<?php
$resultaat = mysqli_query($mysql,"SELECT * FROM gebruikers ORDER BY gebruikersnaam") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat)){
echo "<option value=\"{$rij['id']}\">{$rij['id']} {$rij['gebruikersnaam']} {$rij['voorletters']} {$rij['achternaam']} {$rij['rol']} {$rij['actief']} {$rij['vak']}</option>";
}
?>
</select><br>
<input type="submit" value="Aanpassen" name="verzend" />
<?php
}
?>
Gebruiker:<select name="gebruiker">
<?php
$resultaat = mysqli_query($mysql,"SELECT * FROM gebruikers ORDER BY gebruikersnaam") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat)){
echo "<option value=\"{$rij['id']}\">{$rij['id']} {$rij['gebruikersnaam']} {$rij['voorletters']} {$rij['achternaam']} {$rij['rol']} {$rij['actief']} {$rij['vak']}</option>";
}
?>
</select><br>
<input type="submit" value="Aanpassen" name="verzend" />
<?php
}
?>
In de tabel 'gebruikers' heb ik de kolommen id, gebruikersnaam, wachtwoord, voorletters, achternaam, rol, actief en vak.
Vervolgens kan de gebruiker de nieuwe gegevens invullen en worden die opgeslagen in variabelen. Dit werkt wel goed.
Maar hierna heb ik een UPDATE-query, waarbij ik de nieuwe gegevens wil invoeren in de database:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
mysqli_query($mysql,"UPDATE gebruikers SET gebruikersnaam = '$gebruikersnaam', wachtwoord ='$wachtwoord',voorletters ='$voorletters', achternaam ='$achternaam', rol='$rol',actief='$actief',vak='$vak' WHERE id = '$id'")
or die("De updatequery op de database is mislukt!");
}
?>
mysqli_query($mysql,"UPDATE gebruikers SET gebruikersnaam = '$gebruikersnaam', wachtwoord ='$wachtwoord',voorletters ='$voorletters', achternaam ='$achternaam', rol='$rol',actief='$actief',vak='$vak' WHERE id = '$id'")
or die("De updatequery op de database is mislukt!");
}
?>
Ik heb in deze query bij WHERE id='$id' staan. Maar het lukt mij niet om de id van de geselecteerde gebruiker op te slaan in $id, waardoor hij uiteindelijk niets aanpast.
Ik heb het al geprobeerd met:
en
Weet iemand hoe ik het ID van de <select> kan opslaan in een variable, zonder de waardes van de andere kolommen erbij?
Alvast bedankt,
Max
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 03/12/2018 18:01:47 door - Ariën -
Kijk anders eens naar de inhoud van je POST, na het verzenden:
Gewijzigd op 03/12/2018 18:06:34 door - Ariën -
Ik krijg nu het volgende:
Array
(
[gebruikersnaam] => Max
[wachtwoord] => asdfghj
[voorletters] => M
[achternaam] => Boer
[rol] => Docent
[vak] => wisB
[actief] => 1
[id] =>
Notice: Undefined variable: id in C:\Users\Max de Boer\Documents\JEL\Informatica\USBWebserver\root\gebruikerswijzigen.php on line 95
[versturen] => Veranderen
)
Hij herkent nog steeds niet het ID. Als het goed zou hij dit id moeten halen uit mijn <select>.
Hoe ziet die er in je browser uit?
In $_POST['gebruiker'] zou dan de ID moeten staan.
Gewijzigd op 03/12/2018 18:34:15 door - Ariën -
Hij zegt: <select name="gebruiker">
'Daaronder alle gegevens van de gebruikers met <option>'
</select>
Moet ik anders al mijn code sturen?
Toevoeging op 03/12/2018 18:41:08:
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
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
<?php
session_start();
include "connect.php";
if(isset($_SESSION['user'])){
if($_SESSION['user']['rol']!="Examensecretariaat"){
exit();
}
}else{
exit();
}
?>
<html>
<title>Gebruikers wijzigen</title>
<h1>Kies een gebruiker</h1>
</html>
<?php
if(isset($_POST["versturen"])){
$id = mysqli_real_escape_string($mysql,$_POST['id']);
$gebruikersnaam = mysqli_real_escape_string($mysql,$_POST['gebruikersnaam']);
$wachtwoord = mysqli_real_escape_string($mysql,$_POST['wachtwoord']);
$voorletters = mysqli_real_escape_string($mysql,$_POST['voorletters']);
$achternaam = mysqli_real_escape_string($mysql,$_POST['achternaam']);
$rol = mysqli_real_escape_string($mysql,$_POST['rol']);
$vak = mysqli_real_escape_string($mysql,$_POST['vak']);
$actief = mysqli_real_escape_string($mysql,$_POST['actief']);
mysqli_query($mysql,"UPDATE gebruikers SET gebruikersnaam = '$gebruikersnaam', wachtwoord ='$wachtwoord',voorletters ='$voorletters', achternaam ='$achternaam', rol='$rol',actief='$actief',vak='$vak' WHERE id = '$id'")
or die("De updatequery op de database is mislukt!");
}
echo "<pre>".print_r($_POST,true)."</pre>";
?>
<html>
<?php
if(!isset($_POST["verzend"])){
echo"Vul hieronder de nieuwe gegevens in";
?>
<form method="post">
Gebruiker:<select name="gebruiker">
<?php
$resultaat = mysqli_query($mysql,"SELECT * FROM gebruikers ORDER BY gebruikersnaam") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat)){
echo "<option value=\"{$rij['id']}\">{$rij['id']} {$rij['gebruikersnaam']} {$rij['voorletters']} {$rij['achternaam']} {$rij['rol']} {$rij['actief']} {$rij['vak']}</option>";
}
?>
</select><br>
<input type="submit" value="Aanpassen" name="verzend" />
<?php
}
?>
<?php
if(isset($_POST["verzend"])){
$result = mysqli_query($mysql,"SELECT * FROM gebruikers WHERE id=$id");
$gebruiker = mysqli_fetch_assoc($result);
?>
<form method="post">
Gebruikersnaam:<br>
<input type="text" name="gebruikersnaam" value="<?php echo $gebruiker['gebruikersnaam'];?>"><br>
Wachtwoord:<br>
<input type="text" name="wachtwoord" value="<?php echo $gebruiker['wachtwoord'];?>"><br>
Voorletters:<br>
<input type="text" name="voorletters" value="<?php echo $gebruiker['voorletters'];?>"><br>
Achternaam:<br>
<input type="text" name="achternaam" value="<?php echo $gebruiker['achternaam'];?>"><br><br>
Rol:<select name="rol">
<?php
$resultaat = mysqli_query($mysql,"SELECT * FROM rol") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat)){
echo "<option value=\"{$rij['Rol']}\">{$rij['Rol']}</option>";
}
?>
</select><br>
Vak:<select name="vak">
<?php
$resultaat1 = mysqli_query($mysql,"SELECT * FROM vakken") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat1)){
echo "<option value=\"{$rij['afkorting']}\">{$rij['naam']}</option>";
}
?>
</select><br>
Actief:<select name="actief">
<option value="1">Ja</option>
<option value="0">Nee</option>
</select>
<input type="hidden" name="id" value="<?php echo $id;?>">
<input type="submit" value="Veranderen" name="versturen" />
</form>
<?php
}
?>
session_start();
include "connect.php";
if(isset($_SESSION['user'])){
if($_SESSION['user']['rol']!="Examensecretariaat"){
exit();
}
}else{
exit();
}
?>
<html>
<title>Gebruikers wijzigen</title>
<h1>Kies een gebruiker</h1>
</html>
<?php
if(isset($_POST["versturen"])){
$id = mysqli_real_escape_string($mysql,$_POST['id']);
$gebruikersnaam = mysqli_real_escape_string($mysql,$_POST['gebruikersnaam']);
$wachtwoord = mysqli_real_escape_string($mysql,$_POST['wachtwoord']);
$voorletters = mysqli_real_escape_string($mysql,$_POST['voorletters']);
$achternaam = mysqli_real_escape_string($mysql,$_POST['achternaam']);
$rol = mysqli_real_escape_string($mysql,$_POST['rol']);
$vak = mysqli_real_escape_string($mysql,$_POST['vak']);
$actief = mysqli_real_escape_string($mysql,$_POST['actief']);
mysqli_query($mysql,"UPDATE gebruikers SET gebruikersnaam = '$gebruikersnaam', wachtwoord ='$wachtwoord',voorletters ='$voorletters', achternaam ='$achternaam', rol='$rol',actief='$actief',vak='$vak' WHERE id = '$id'")
or die("De updatequery op de database is mislukt!");
}
echo "<pre>".print_r($_POST,true)."</pre>";
?>
<html>
<?php
if(!isset($_POST["verzend"])){
echo"Vul hieronder de nieuwe gegevens in";
?>
<form method="post">
Gebruiker:<select name="gebruiker">
<?php
$resultaat = mysqli_query($mysql,"SELECT * FROM gebruikers ORDER BY gebruikersnaam") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat)){
echo "<option value=\"{$rij['id']}\">{$rij['id']} {$rij['gebruikersnaam']} {$rij['voorletters']} {$rij['achternaam']} {$rij['rol']} {$rij['actief']} {$rij['vak']}</option>";
}
?>
</select><br>
<input type="submit" value="Aanpassen" name="verzend" />
<?php
}
?>
<?php
if(isset($_POST["verzend"])){
$result = mysqli_query($mysql,"SELECT * FROM gebruikers WHERE id=$id");
$gebruiker = mysqli_fetch_assoc($result);
?>
<form method="post">
Gebruikersnaam:<br>
<input type="text" name="gebruikersnaam" value="<?php echo $gebruiker['gebruikersnaam'];?>"><br>
Wachtwoord:<br>
<input type="text" name="wachtwoord" value="<?php echo $gebruiker['wachtwoord'];?>"><br>
Voorletters:<br>
<input type="text" name="voorletters" value="<?php echo $gebruiker['voorletters'];?>"><br>
Achternaam:<br>
<input type="text" name="achternaam" value="<?php echo $gebruiker['achternaam'];?>"><br><br>
Rol:<select name="rol">
<?php
$resultaat = mysqli_query($mysql,"SELECT * FROM rol") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat)){
echo "<option value=\"{$rij['Rol']}\">{$rij['Rol']}</option>";
}
?>
</select><br>
Vak:<select name="vak">
<?php
$resultaat1 = mysqli_query($mysql,"SELECT * FROM vakken") or die("De query op de database is mislukt!");
while ($rij = mysqli_fetch_assoc($resultaat1)){
echo "<option value=\"{$rij['afkorting']}\">{$rij['naam']}</option>";
}
?>
</select><br>
Actief:<select name="actief">
<option value="1">Ja</option>
<option value="0">Nee</option>
</select>
<input type="hidden" name="id" value="<?php echo $id;?>">
<input type="submit" value="Veranderen" name="versturen" />
</form>
<?php
}
?>
Bovenin zit een exit, die moet er wel dan uit.
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 03/12/2018 18:48:56 door - Ariën -
PS: Graag code-tags gebruiken om scripts heen. Zie ook de mod-break.
Gewijzigd op 03/12/2018 18:52:25 door - Ariën -
s'] of $_POST['id'] of wat dan ook.
Als je een user id over meerdere pagina's moet onthouden en je dat formulier met die dropdown enkel gebruikt om een gebruiker te selecteren: overweeg dan het gebruik van GET in plaats van POST, dan kun je het user id doorgeven via de url en vraag je die in de volgende stap op met $_GET[gebruiker'] of iets dergelijks.
Dat ding heet in het formulier gebruiker, dus als je een formulier POST, kun je deze opvissen met behulp van $_POST['gebruiker'], niet met $_POST['gebruikerAls je een user id over meerdere pagina's moet onthouden en je dat formulier met die dropdown enkel gebruikt om een gebruiker te selecteren: overweeg dan het gebruik van GET in plaats van POST, dan kun je het user id doorgeven via de url en vraag je die in de volgende stap op met $_GET[gebruiker'] of iets dergelijks.
Gewijzigd op 03/12/2018 19:05:58 door Thomas van den Heuvel
Ik heb dat nu geprobeerd Thomas, maar hij geeft nog steeds deze error:
Notice: Undefined index: gebruiker in C:\Users\Max de Boer\Documents\JEL\Informatica\USBWebserver\root\gebruikerswijzigen.php on line 20
Array
(
[gebruikersnaam] => Max
[wachtwoord] => asdfghj
[voorletters] => M
[achternaam] => Boer
[rol] => Docent
[vak] => wisB
[actief] => 1
[id] =>
Notice: Undefined variable: id in C:\Users\Max de Boer\Documents\JEL\Informatica\USBWebserver\root\gebruikerswijzigen.php on line 95
[versturen] => Veranderen
)
Om de een of andere reden pakt hij nog steeds niets bij $id.
Wat zijn code-tags en mod-breaks Ariën?
Er staat dat je ze erin hebt gezet, maar ik zie ze niet.
Gewijzigd op 03/12/2018 20:46:59 door Max Boer
Gewijzigd op 03/12/2018 21:07:45 door - Ariën -
Err, ik denk dat je er verstandiger aan doet om de verschillende acties wat beter te splitsen. En even op elk moment te controleren welke informatie je in $_GET/$_POST hebt.
$id = mysqli_real_escape_string($mysql,$_POST['id']);
$id = mysqli_real_escape_string($mysql,$_POST['gebruiker']);
$result = mysqli_query($mysql,"SELECT * FROM gebruikers WHERE id=$id");
$gebruiker = mysqli_fetch_assoc($result);
Bedankt voor alle moeite!
Maar daar wordt enkel $id overschreven van een niet-bestaande POST variabele ($_POST['id']) naar een wel bestaande POST variabele ($_POST['gebruiker']), waar je al een aantal keren op gewezen was?
- Ariën - op 04/12/2018 19:10:04:
Mja, en misschien eerst ook nog even valideren (en wellicht ook kijken of de POST variabele bestaat) of het ook echt een auto-increment id betreft, anders heeft het in eerste instantie geen enkele zin om die query uberhaupt uit te voeren.Ik zou wel even $id tussen quotes plaatsen.