Wijzigen van een record

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Toine van der Ven

Toine van der Ven

22/12/2011 09:32:45
Quote Anchor link
Het wijzigen van een bestaand record hoe doe je dat?

Ik heb een tabel
Tbl_Evenementen met de velden
EvenementID int(11),
Evenement text COMMENT 'Naam van het evenement',
Begin timestamp COMMENT 'Begindatum en tijd',
Eind timestamp COMMENT 'Einddatum en tijd',
Locatie text COMMENT 'Locatie van het evenement',
Max smallint(6) COMMENT 'Maximaal aantal deelnemers',
PRIMARY KEY (`EvenementID`),

Deze tabel is gevuld.
Nu wil ik de gegevens van een record wijzigen.
Mijn gedachten gang is als volgt;
1. Zoek het record wat je wilt wijzigen
2. Presenteer de huidige gegevens d.m.v. een form
3. Geef de gebruiker de gelegenheid om deze gegevens te wijzigen
4. Schrijf deze gegevens in hetzelfde record weg

Het script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    // Configuratiebestand beschikbaar maken zodat we toegang hebben tot onze database
    require_once('sources/includes/config.inc.php')
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    open_html();
    open_head();
        load_metatags('','','');
        load_frameworks();
        load_plugins();
        load_stylesheets(array(''));
    close_head();
    open_body();
?>


<div id="container">
<div id="header">
<h1>MTTV&prime;72 - Mierlose tafeltennis vereniging &prime;72</h1>
</div>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
        include_once('sources/includes/nav.php')
?>

<div id="content">
<div id="leftCol">
<table width="100%" border="1" >
<tr>
<td><h1>Mijn MTTV</h1></td>
<td><h1>Wijzig evenement</h1></td>
</tr>
</table>

<!-- Zoek het evenement -->
<form action="?pid=WijzigenEvenement" method="post">
Wat is het EvenementID van het evenement dat je wilt wijzigen? <input type="text" name="EvenementID" size="10" /> <input name="zoek" type="submit" value="zoek">
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
            if ($_POST['zoek']) {
                $sql = "SELECT * FROM Tbl_Evenementen WHERE EvenementID='".$_POST['EvenementID']."'";
                $qry = mysql_query($sql)or die(mysql_error());
                $row = mysql_fetch_array($qry);
?>

<form action="?pid=WijzigenEvenement" method="post">
<table class="fancy">
<thead>
<th>&nbsp;</th>
<th>in database</th>
<th>veranderingen</th>
</thead>
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
<?php                    
                        echo '<tr>';
                            echo '<td nowrap>Naam evenement:</td>';
                            echo "<td>".$row['Evenement']."</td>";
                            echo '<td><input type="text" name="Evenement" size="40" /></td>';
                        echo '</tr>';
                        echo '<tr>';
                            echo '<td nowrap>Begin:</td>';
                            echo "<td>".$row['Begin']."</td>";
                            echo '<td><input type="text" name="Begin" size="40" /></td>';
                        echo '</tr>';
                        echo '<tr>';
                            echo '<td nowrap>Eind:</td>';
                            echo "<td>".$row['Eind']."</td>";
                            echo '<td><input type="text" name="Eind" size="40" /></td>';
                        echo '</tr>';
                        echo '<tr>';
                            echo '<td nowrap>Locatie:</td>';
                            echo "<td>".$row['Locatie']."</td>";
                            echo '<td><input name="Locatie" type="text" size="40" /></td>';
                        echo '</tr>';
                        echo '<tr>';
                            echo '<td nowrap>Maximaal aantal deelnemers:</td>';
                            echo "<td>".$row['Max']."</td>";
                            echo '<td><input type="text" name="Max" size="20" /></td>';
                        echo '</tr>';
                        echo '<tr>';
                            echo '<td nowrap>Opmerkingen:</td>';
                            echo "<td>".$row['Opmerkingen']."</td>";
                            echo '<td><textarea name="Opmerkingen" cols="40" rows="3"></textarea></td>';
                        echo '</tr>';
                        echo '<tr>';
                            echo '<td nowrap>Krant:</td>';
                            echo "<td>".$row['Krant']."</td>";
                            echo '<td><textarea name="Krant" cols="40" rows="3"></textarea></td>';
                        echo '</tr>';
                        echo '<tr>';
                            echo '<td valign="top" nowrap><p></p><input name="wijzigen" type="submit" value="wijzigen"></td>';
                            echo '<td></td>';
                            echo '<td></td>';
                        echo '</tr>';
?>

</table>
</form>

<p>Schrijf de gegevens weg na accoord</p>
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
<?php            
            if ($_POST['wijzigen']) {
                $sql="UPDATE Tbl_Evenementen SET ";
                $sql=$sql."Evenement = ".addslashes(htmlspecialchars($_POST['Evenement'])).",";
                $sql=$sql."Begin = ".addslashes(htmlspecialchars($_POST['Begin'])).",";
                $sql=$sql."Eind = ".addslashes(htmlspecialchars($_POST['Eind'])).",";
                $sql=$sql."Locatie = ".addslashes(htmlspecialchars($_POST['Locatie'])).",";
                $sql=$sql."Max = ".addslashes(htmlspecialchars($_POST['Max'])).",";
                $sql=$sql."Opmerkingen = ".addslashes(htmlspecialchars($_POST['Opmerkingen'])).",";
                $sql=$sql."Krant = ".addslashes(htmlspecialchars($_POST['Krant'])).",";
                
                $sql=substr ( $sql , 0, -1 ).'WHERE Tbl_Evenementen.EvenementID = '.$_POST['EvenementID'].' LIMIT 1';
                
                // Alle ingevulde data wegschrijven naar de database
                $result = mysql_query($sql);
    
                if (!$result) {
                    die('Invalid query: ' . mysql_error());
                }
else {
                    // ... als alles goed verlopen is
                    echo '<p>EvenementID: '.$_POST['EvenementID'].' gewijzigd.</p>';
                }
    // if result
            }    // if wijzigen
        }    // if zoek
?>

<a href="index.php?pid=MijnMTTV">Terug</a>; </p>
</div><!-- EIND LEFTCOL DIV -->
</div><!-- EIND CONTENT DIV -->

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
        include_once('sources/includes/footer.php')
?>

</div><!-- EIND CONTAINER DIV -->

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    close_body();
    close_html();
?>


Nu heb ik twee vragen;
1. Is er een slimmere manier om het formulier -waar ik de gegevens toon- te presenteren?
2. Waarom worden mijn wijzigingen niet opgeslagen?

Toine
 
PHP hulp

PHP hulp

18/04/2024 14:14:29
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/12/2011 09:50:07
Quote Anchor link
Je krijgt geen SQL error? Echo anders $sql eens.
 
Toine van der Ven

Toine van der Ven

22/12/2011 10:15:39
Quote Anchor link
Ik heb geprobeerd om de $sql te echo-en, maar die info komt niet op mijn scherm helaas
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/12/2011 10:40:45
Quote Anchor link
Ik mis de single quotes in de query, dus je zou sowieso een sql error moeten krijgen.
Ik zie m al, regel 2 in het laatste codeblok zou moeten zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['wijzigen'])) {
    //rest van de code
}
?>

vergeet de quotes niet!
Op regel 10 voeg je aan het eind een comma toe, die je op regel 12 weer weghaalt, beetje overbodig
$sql = sql . "iets" kan korter $sql .= "iets"

Edit: ik zeg dat de quotes niet moet vergeten en ik vergeet er zelf 1 :(
Gewijzigd op 22/12/2011 10:44:04 door Ger van Steenderen
 
Erwin H

Erwin H

22/12/2011 10:41:46
Quote Anchor link
Volgens mij zit je if structuur je in de weg. Als ik de code goed heb uitgeplozen staat er eigenlijk dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
        if ($_POST['zoek']) {
            if ($_POST['wijzigen']) {
                if (!$result) {
                }
    // if result
            }    // if wijzigen
        }    // if zoek
?>

En daar dan natuurlijk al je code tussen. Maar volgens mij gaat dit dus nooit lukken.
- De eerste keer dat je je scherm toont wordt een leeg vorm getoond. Dat vult de gebruiker in en klikt op 'zoek'
- de tweede keer dat je je scherm toont is 'zoek' dus geklikt en gaat het eerste level van de ifs lopen en toont data aan de gebruiker, die wijzigt het en klikt op 'wijzigen'
- de derde keer dat je je scherm toont is 'wijzigen' dus geklikt, maar 'zoek' niet meer (was al een keertje terug) dus het eerste level van je ifs is false en dus kom je ook nooit in het tweede level.

hint: dus geen geneste ifs gebruiken, maar een if..elseif..
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/12/2011 10:47:19
Quote Anchor link
Inderdaad Erwin, daar heb ik overheen gekeken

Toevoeging op 22/12/2011 10:50:08:

Ik vergeet telkens dat PHP alees wat niet false is als true beschouwd, beetje dirty maar goed (niet in de zin vam oké)
Gewijzigd op 22/12/2011 10:51:16 door Ger van Steenderen
 
- SanThe -

- SanThe -

22/12/2011 11:37:35
Quote Anchor link
$sql="UPDATE ......";
Maar waar voer je de quert ook daadwerkelijk uit?

Denk aan de veiligheid. Hetgeen jij nu gebruikt is niet goed, zelfs af te raden. Zie mysql_real_escape_string().
 



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.