uitllezen form met textarea

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Willem L

Willem L

11/11/2017 12:20:43
Quote Anchor link
Bij het updaten gaat het met de textarea fout.
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)
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
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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp";
                    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
 
PHP hulp

PHP hulp

19/04/2024 02:58:44
 
Rob Doemaarwat

Rob Doemaarwat

11/11/2017 12:56:57
Quote Anchor link
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'.
 
Willem L

Willem L

11/11/2017 13:57:19
Quote Anchor link
Bij het opstarten geeft
$_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
 
Rob Doemaarwat

Rob Doemaarwat

11/11/2017 14:40:45
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

11/11/2017 15:29:58
Quote Anchor link
Ook maakt het formulier op zijn beurt gebruik van POST, zou je dat deel (de geselecteerde sessie) niet beter kunnen veranderen in een GET-variabele?

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.
 



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.