uitllezen form met textarea
krijg de melding:
Notice: Undefined index: txtarea in C:\wamp\www\willem_online\aanpassen\index.php on line
bij updaten -- $uitleg = $_POST['txtarea'];--
Probeer elke keer wat, maar lukt me niet.
Denk dat ik wat over het hoofd ziet.
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
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
<?php
echo '<h3>Aanpassingen</h3>';
echo '<hr>';
$sql="SELECT sessie_id, soort FROM sessies ORDER BY sessie_id";
$result = mysqli_query($conn,$sql );
echo '<h3>Kies de te veranderen sessie</h3>';
echo'<form action="index.php" method="POST">';
echo '<select name="sessies">';
echo '<option value="">-----------------</option>';
while ( $data = mysqli_fetch_array($result) ) {
if ($_POST['sessies'] == $data['soort']){
$selected = 'selected="selected"';
}else{
$selected='';
}
echo '<option value="'.$data['sessie_id'].'">
'.$data['soort'].'';
echo '</option>'.PHP_EOL;
}
echo '</select>';
echo '<br>';
if (empty($_POST['sessies'])){
echo '<br /><br / >';
echo '<input type="submit" name="verzenden" value="Verzenden" style="border:1px solid;">';
}else{
$sessieid= $_POST['sessies'];
$result=mysqli_query($conn,"SELECT sessie_id,soort, uitleg FROM sessies WHERE sessie_id = '$sessieid'");
while($data = mysqli_fetch_array($result)){
$id = $data['sessie_id'];
echo '<textarea name="txtarea" id="txtarea" rows="12" cols="50">'.$data['uitleg'].'</textarea>';
echo '<br /><br />';
echo"<button><a href ='?p=edit&id=$id'>Opslaan</a></button>  ";
echo"<button><a href ='?p=delete$id=$id'>Verwijderen</a></button>";
}
echo'</center>';
echo '</form>';
}
if ( isset ($_GET['p']) && $_GET['p'] == 'edit' ) {
$sessieid= $_GET['id'];
$uitleg = $_POST['txtarea'];
$sql = "
UPDATE
sessies
SET
";
$sql.= "uitleg = ".$uitleg."";
$sql.= "
WHERE
sessie_id = '".$sessieid."'";
$result = mysqli_query($conn,$sql );
}
?>
echo '<h3>Aanpassingen</h3>';
echo '<hr>';
$sql="SELECT sessie_id, soort FROM sessies ORDER BY sessie_id";
$result = mysqli_query($conn,$sql );
echo '<h3>Kies de te veranderen sessie</h3>';
echo'<form action="index.php" method="POST">';
echo '<select name="sessies">';
echo '<option value="">-----------------</option>';
while ( $data = mysqli_fetch_array($result) ) {
if ($_POST['sessies'] == $data['soort']){
$selected = 'selected="selected"';
}else{
$selected='';
}
echo '<option value="'.$data['sessie_id'].'">
'.$data['soort'].'';
echo '</option>'.PHP_EOL;
}
echo '</select>';
echo '<br>';
if (empty($_POST['sessies'])){
echo '<br /><br / >';
echo '<input type="submit" name="verzenden" value="Verzenden" style="border:1px solid;">';
}else{
$sessieid= $_POST['sessies'];
$result=mysqli_query($conn,"SELECT sessie_id,soort, uitleg FROM sessies WHERE sessie_id = '$sessieid'");
while($data = mysqli_fetch_array($result)){
$id = $data['sessie_id'];
echo '<textarea name="txtarea" id="txtarea" rows="12" cols="50">'.$data['uitleg'].'</textarea>';
echo '<br /><br />';
echo"<button><a href ='?p=edit&id=$id'>Opslaan</a></button>  ";
echo"<button><a href ='?p=delete$id=$id'>Verwijderen</a></button>";
}
echo'</center>';
echo '</form>';
}
if ( isset ($_GET['p']) && $_GET['p'] == 'edit' ) {
$sessieid= $_GET['id'];
$uitleg = $_POST['txtarea'];
$sql = "
UPDATE
sessies
SET
";
$sql.= "uitleg = ".$uitleg."";
$sql.= "
WHERE
sessie_id = '".$sessieid."'";
$result = mysqli_query($conn,$sql );
}
?>
Gewijzigd op 11/11/2017 12:21:53 door Willem L
Die $_GET['p'] is waarschijnlijk bij de initiele GET al gezet (= ophalen van de pagina), en dan is er nog geen POST. Controleer vooraf of $_SERVER['REQUEST_METHOD'] == 'POST'.
$_SERVER['REQUEST_METHOD'] GET aan.
Na klik op verzenden geeft hij POST aan
dan wordt de textarea gevuld.
Klik op Edit dan zie ik dit
--Notice: Undefined index: txtarea in C:\wamp\www\willem_online\aanpassen\index.php on line 77(hier op 43)
UPDATE sessies SET sessie_id = '1'uitleg = '' WHERE sessie_id = '1'--
en
$_SERVER['REQUEST_METHOD'] GET
Klopt, want <button><a href ='?p=edit&... doet een GET (het is een link, geen submit). Je komt dan wel door regel 41, en struikelt (dus) op regel 43.
Daarnaast lijkt het mij handiger om de verschillende acties (weergeven van een formulier, verwerken van een formulier et cetera) beter te scheiden. Redirect na het POSTen altijd direct, dat werkt gewoon veel beter.
Ook is het niet echt nodig om al die HTML te echo'en. Je weet dat je gewoon vrij een PHP-blok kunt onderbreken en voortzetten waar je wilt? Bovenstaande code kan dus bovendien een stuk korter en wordt daardoor ook beter leesbaar.
Waarschijnlijk krijg je dus op eenzelfde wijze ook een melding over $_POST['sessies'], kijk maar eens in de broncode van de pagina.