Veld verdwijnt bij edit functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arjan van Rossen

Arjan van Rossen

22/09/2013 14:22:51
Quote Anchor link
Na mijn pogingen (zoals sommige nu wel weten) die minder succesvol waren in mysql heb ik nu een add-edit-del script in mysqli zoals mij aangeraden werd. Ik heb nu 2 velden gemaakt zodat ik de rest daarna kan toevoegen als dit goed werkt maar alles werkt behalve 1 ding. Na het toevoegen van data kan ik op edit klikken en dan kan ik het bewerkten. Echter als ik daarna op versturen druk (zonder of met bewerken) is het veld bedrijfsnaam plotseling leeg. Ik kan niet vinden waarom dit is..

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
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<?php
        /*
                Staat de gebruiker toe om nieuwe records toe te voegen te bewerken
        */

        // connect to the database

        include("connect-db.php");

        // Maakt nieuw/edit record formulier
        function renderForm($klantnummer = '', $bedrijfsnaam ='', $error = '', $id = '')
        {
?>

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                <html>
                        <head>  
                                <title>
                                        <?php if ($id != '') { echo "Edit Record"; } else { echo "New Record"; } ?>
                                </title>
                                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
                        </head>
                        <body>
                                <h1><?php if ($id != '') { echo "Edit Record"; } else { echo "New Record"; } ?></h1>
                                <?php if ($error != '') {
                                        echo "<div style='padding:4px; border:1px solid red; color:red'>" . $error
                                                . "</div>";
                                }
?>

                                
                                <form action="" method="post">
                                <div>
                                        <?php if ($id != '') { ?>
                                                <input type="hidden" name="id" value="<?php echo $id; ?>" />
                                                <p>ID: <?php echo $id; ?></p>
                                        <?php } ?>
                                        
                                        <strong>Klantnummer: *</strong> <input type="text" name="klantnummer"
                                                value="<?php echo $klantnummer; ?>"/><br/>
                                        <strong>Bedrijfsnaam: *</strong> <input type="text" name="bedrijfsnaam"
                                                value="<?php echo $bedrijfsnaam; ?>"/>
                                        <p>* required</p>
                                        <input type="submit" name="submit" value="Submit" />
                                </div>
                                </form>
                        </body>
                </html>
                
        <?php }



        /*

           BEWERK RECORD

        */
        // Wanneer de 'id' variabel is ingesteld in de URL, weten we dat we een record moeten aanpassen

        if (isset($_GET['id']))
        {

                // Wanneer de submitknop word ingedrukt word het formulier verwerkt
                if (isset($_POST['submit']))
                {

                        // Zorgt ervoor dat de 'id' geldig is
                        if (is_numeric($_POST['id']))
                        {

                                // verkrijg variabelen van URL/formulier
                                $id = $_POST['id'];
                                $klantnummer = htmlentities($_POST['klantnummer'], ENT_QUOTES);
                                $bedrijfsnaam = htmlentities($_POST['bedrijfsnaam'], ENT_QUOTES);
                                
                                {

                                        // update de database
                                        if ($stmt = $mysqli->prepare("UPDATE klanten SET klantnummer = ?, bedrijfsnaam = ?
                                                WHERE id=?"
))
                                        {

                                                $stmt->bind_param("ssi", $klantnummer, $lastname, $id);
                                                $stmt->execute();
                                                $stmt->close();
                                        }

                                        // toont foutmelding indien nodig
                                        else
                                        {
                                                echo "ERROR: could not prepare SQL statement.";
                                        }

                                        
                                        // redirect na submit van formulier
                                        header("Location: view.php");
                                }
                        }

                        // bij ongeldige 'id' komt een foutmelding
                        else
                        {
                                echo "Error!";
                        }
                }

                // Indien het formulier niet verstuurd is word de database en het formulier weergegeven
                else
                {
                        // zorgt dat de 'id' geldig is
                        if (is_numeric($_GET['id']) && $_GET['id'] > 0)
                        {

                                // verkrijg 'id' van URL
                                $id = $_GET['id'];
                                
                                // verkrijg de records uit de database
                                if($stmt = $mysqli->prepare("SELECT * FROM klanten WHERE id=?"))
                                {

                                        $stmt->bind_param("i", $id);
                                        $stmt->execute();
                                        
                                        $stmt->bind_result($id, $klantnummer, $bedrijfsnaam);
                                        $stmt->fetch();
                                        
                                        // toon het formulier
                                        renderForm($klantnummer, $bedrijfsnaam, NULL, $id);
                                        
                                        $stmt->close();
                                }

                                // toon een error wanneer de query een error heeft
                                else
                                {
                                        echo "Error: could not prepare SQL statement";
                                }
                        }

                        // wanneer het 'id' ongeldig is word de gebruiker naar view.php doorgestuurd
                        else
                        {
                                header("Location: view.php");
                        }
                }
        }




        /*

           NIEUW RECORD

        */
        // wanneer geen 'id' is ingesteld volgt een nieuwe invoer

        else
        {
                // proces het formlier na submit
                if (isset($_POST['submit']))
                {

                        // verkrijg formulierdata
                        $klantnummer = htmlentities($_POST['klantnummer'], ENT_QUOTES);
                        $bedrijfsnaam = htmlentities($_POST['bedrijfsnaam'], ENT_QUOTES);
                        
                        {

                                // insert the new record into the database
                                if ($stmt = $mysqli->prepare("INSERT klanten (klantnummer, bedrijfsnaam) VALUES (?, ?)"))
                                {

                                        $stmt->bind_param("ss", $klantnummer, $bedrijfsnaam);
                                        $stmt->execute();
                                        $stmt->close();
                                }

                                // Toon een foutmelding indien nodig
                                else
                                {
                                        echo "ERROR: Could not prepare SQL statement.";
                                }

                                
                                // stuur gebruiker door
                                header("Location: view.php");
                        }
                        
                }

                // wanneer geen formulier is ingediend word de database weergegeven
                else
                {
                        renderForm();
                }
        }

        
        // sluit mysqli verbinding
        $mysqli->close();
?>
Gewijzigd op 22/09/2013 14:23:17 door Arjan van Rossen
 
PHP hulp

PHP hulp

03/05/2024 13:49:58
 
- Ariën  -
Beheerder

- Ariën -

22/09/2013 14:23:37
Quote Anchor link
Kan je jouw code even tussen [code] en [/code]tags plaatsen, en deze beperken tot relevante code.
Alvast bedankt.
Gewijzigd op 22/09/2013 14:24:11 door - Ariën -
 
Erwin H

Erwin H

22/09/2013 14:53:06
Quote Anchor link
Nogal logisch zo te zien. Na het updaten van je database record doe je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header("Location: view.php");
?>

Aangezien daar geen id in zit, kan je script ook geen record ophalen en dus krijg je een leeg form.
 
Arjan van Rossen

Arjan van Rossen

22/09/2013 15:09:11
Quote Anchor link
Erwin H op 22/09/2013 14:53:06:
Nogal logisch zo te zien. Na het updaten van je database record doe je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
header("Location: view.php");
?>

Aangezien daar geen id in zit, kan je script ook geen record ophalen en dus krijg je een leeg form.

Als dat de rede is, waarom blijft het veld klantnummer dan wel staan?

@Aar, ik had hem toch tussen de code tags staan? Ik heb express de hele code geplakt voorals het probleem ergens anders in de code zit.


 
Erwin H

Erwin H

22/09/2013 15:12:15
Quote Anchor link
Geen idee, maar ik zou dat meer als een uitzondering beschouwen dan het feit dat het andere veld leeg is.
 
Arjan van Rossen

Arjan van Rossen

22/09/2013 15:13:05
Quote Anchor link
Ik heb het probleem al gevonden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?PHP
// update de database
                                        if ($stmt = $mysqli->prepare("UPDATE klanten SET klantnummer = ?, bedrijfsnaam = ?
                                                WHERE id=?"
))
                                        {

                                                $stmt->bind_param("ssi", $klantnummer, $lastname, $id);
                                                $stmt->execute();
                                                $stmt->close();
                                        }

?>


Er staat $lastname ipv $bedrijfsnaam, logisch dat hij dan niet update.
Gewijzigd op 22/09/2013 15:14:18 door Arjan van Rossen
 



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.