Gewijzigde gegevens terug sturen naar de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nanno

Nanno

02/07/2007 15:56:00
Quote Anchor link
Beste luitjes,

Ik zit met het probleem dat ik mijn opgevraagde gegevens uit de database niet gewijzigd terug krijg in de database.
Het maakt het allemaal wat lastiger omdat ik met een WYSIWYG editor werk zodat ik qua vormgeving meer controle heb.
Ik moet dus mijn php op diverse plaatsen invoeren om tot een werkend geheel te komen.

Nu heb ik het al voor elkaar om de record id op te vragen in een gemaakt formulier. Nu zie ik dus de NAW gegevens en kan ze aanpassen.
Nu wil ik al de formuliervelden weer terug sturen naar de database als gewijzigd. Dit lukt dus niet.

Hier de codes die ik gebruik om de gegevens op te halen uit de database:

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
$dbhost
= "localhost";  
$dbuser = "user";    
$dbpass = "password";
$dbname = "database";

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

$id = $_GET['id'];
$Wijzig = mysql_query("SELECT * FROM NAW WHERE id = $id ");
$record = mysql_fetch_array($Wijzig);
?>

<form name="Gewijzigd" method="post" action="Gewijzigd.php" id="Form2" onsubmit="return ValidateGewijzigd(this)">
<div id="wb_Text2" style="position:absolute;left:57px;top:29px;width:150px;height:400px;z-index:25" align="right">
<font style="font-size:13px" color="#000000" face="Arial">id:<br>
<br>
Voornaam: <br>
<br>
Tussenvoegsel:<br>
<br>
Achternaam:<br>
<br>
Adres:<br>
<br>
Postcode:<br>
<br>
Woonplaats:<br>
<br>
Telefoon:<br>
<br>
Gsm:<br>
<br>
E-mail:<br>
<br>
Geboorte datum:<br>
<br>
Functie:<br>
<br>
Lid sinds:</font></div>
<input type="text" id="Editbox2" style="position:absolute;left:212px;top:58px;width:144px;font-family:Courier New;font-size:13px;z-index:26" size="18" name="Voornaam" value="<?php echo $record[Voornaam]; ?>" tabindex="1">
<input type="text" id="Editbox1" style="position:absolute;left:212px;top:151px;width:248px;font-family:Courier New;font-size:13px;z-index:27" size="31" name="Adres" value="<?php echo $record[Adres]; ?>" tabindex="4">
<input type="text" id="Editbox4" style="position:absolute;left:213px;top:183px;width:80px;font-family:Courier New;font-size:13px;z-index:28" size="10" name="Postcode" value="<?php echo $record[Postcode]; ?>" tabindex="5">
<input type="submit" id="Button2" name="Button2" value="Wijzig gegevens" style="position:absolute;left:212px;top:452px;width:153px;height:25px;z-index:29" tabindex="13">
<input type="text" id="Editbox3" style="position:absolute;left:212px;top:119px;width:200px;font-family:Courier New;font-size:13px;z-index:30" size="25" name="Achternaam" value="<?php echo $record['Achternaam']; ?>" tabindex="3">
<input type="text" id="Editbox6" style="position:absolute;left:213px;top:214px;width:200px;font-family:Courier New;font-size:13px;z-index:31" size="25" name="Woonplaats" value="<?php echo $record[Woonplaats]; ?>" tabindex="6">
<input type="text" id="Editbox5" style="position:absolute;left:213px;top:246px;width:112px;font-family:Courier New;font-size:13px;z-index:32" size="14" name="Telefoon" value="<?php echo $record[Telefoon]; ?>" maxlength="11" tabindex="7">
<input type="text" id="Editbox8" style="position:absolute;left:213px;top:277px;width:112px;font-family:Courier New;font-size:13px;z-index:33" size="14" name="GSM" value="<?php echo $record[GSM]; ?>" maxlength="11" tabindex="8">
<input type="text" id="Editbox7" style="position:absolute;left:213px;top:310px;width:248px;font-family:Courier New;font-size:13px;z-index:34" size="31" name="Email" value="<?php echo $record[Email]; ?>" tabindex="9">
<input type="text" id="Editbox10" style="position:absolute;left:213px;top:377px;width:248px;font-family:Courier New;font-size:13px;z-index:35" size="31" name="Functie" value="<?php echo $record[Functie]; ?>" tabindex="11">
<input type="text" id="Editbox9" style="position:absolute;left:213px;top:409px;width:56px;font-family:Courier New;font-size:13px;z-index:36" size="7" name="Lid" value="<?php echo $record[Lid]; ?>" maxlength="4" tabindex="12">
<input type="text" id="Editbox12" style="position:absolute;left:212px;top:88px;width:80px;font-family:Courier New;font-size:13px;z-index:37" size="10" name="Voegsel" value="<?php echo $record['Voegsel']; ?>" tabindex="2">
<input type="text" id="Editbox11" style="position:absolute;left:213px;top:344px;width:104px;font-family:Courier New;font-size:13px;z-index:38" size="13" name="GebDatum" value="<?php echo $record[GebDatum]; ?>" maxlength="10" tabindex="10">
<input type="text" id="Editbox13" style="position:absolute;left:212px;top:26px;width:32px;font-family:Courier New;font-size:13px;z-index:39" size="4" name="id" value="<?php echo $record[id]; ?>" input readonly>
</form>


Nu heb ik dus de juiste php code nodig voor de pagina Verzend gewijzigde gegevens om de records uit het formulier op te pakken en gewijzigd terug te sturen naar de database.

Wie kan me helpen met de juiste code?

Groet,

Nanno

Edit:

Code tags toegevoegd, zodat het wat makkerlijker leest.

moderator: Danny Roelofs
Gewijzigd op 01/01/1970 01:00:00 door Nanno
 
PHP hulp

PHP hulp

21/05/2024 02:48:00
 
Joren de Wit

Joren de Wit

02/07/2007 17:27:00
Quote Anchor link
Je krijgt dus een pagina 'Gewijzigd.php' (dat is waar je formulier naartoe verwijst) waarin je het formulier uitleest en de database update...

Ik zou zeggen, kijk eens in de script lib naar een willekeurig nieuwsscript oid. Zeker weten dat je er een tegen komt waarin ook een mogelijkheid zit om een bericht te wijzigen.
 
Jan Koehoorn

Jan Koehoorn

03/07/2007 23:48:00
Quote Anchor link
Als je een update query uit wilt voeren, heb je in ieder geval het id nodig van de record die je wilt wijzigen, zodat je zoiets kunt doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    $sql
= "
        UPDATE tabelnaam
        SET
            veld1 = 'waarde1',
            veld2 = 'waarde2'
        WHERE id = "
. $id . "
        "
;
?>

De meest gebruikte methode is deze: bij het ophalen van de gegevens haal je ook het id op. Deze stop je in een hidden input in je formulier. Geef hem name="id" mee, dan kun je na verzenden via $_POST['id'] kijken om welke record het gaat.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Nanno

Nanno

04/07/2007 00:01:00
Quote Anchor link
Jan,

Ik ga het eens proberen..
Het duizeld nu al bij me. Wat een taal toch dat php.
Mooi, maar soms wat complex als het niet werkt.

Ik neem dus van je aan dat de mysql_query niet nodig is voor het sturen van de gewijzigde formulier velden.

Groet,

Nanno
 
Robert Deiman

Robert Deiman

04/07/2007 00:08:00
Quote Anchor link
@Nanno

Jawel, het is wel nodig om mysql_query($sql) te doen. Anders heb je gewoon een stukje tekst in een variabele. Met mysql_affected_rows() kan je vervolgens controleren of het aantal veranderde velden wel klopt. In zo'n query zal dat altijd 1 zijn.
 
Jan Koehoorn

Jan Koehoorn

04/07/2007 00:19:00
Quote Anchor link
Nanno schreef op 04.07.2007 00:01:
Jan,

Ik ga het eens proberen..
Het duizeld nu al bij me. Wat een taal toch dat php.
Mooi, maar soms wat complex als het niet werkt.

Ach ja, wat zal ik zeggen: welkom in de wereld van PHP ;-)

Die complexiteit is een feit. Hoe langer je programmeert, hoe meer je dat leuk gaat vinden.
 
Nanno

Nanno

04/07/2007 00:24:00
Quote Anchor link
Dit is nu de code die ik dus heb.
De id werd al opgevraagd vanuit de link in de url.
Die staat dus nog en kan ik dus weer gebruiken neem ik aan.
Het id wordt ook al weergeven in het form veld id.
Zou dit zo moeten werken?

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
<?php
$dbhost
= "localhost";  
$dbuser = "User";    
$dbpass = "Password";
$dbname = "Dbase";
    
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

$id = $_GET['id'];

    $sql = "
        UPDATE NAW
        SET
            id = 'id',
            Voornaam = 'Voornaam',
            Voegsel = 'Voegsel',
            Achternaam = 'Achternaam',
            Adres = 'Adres',
            Postcode = 'Postcode',
            Woonplaats = 'Woonplaats',
            Telefoon = 'Telefoon',
            GSM = 'GSM',
            Email = 'Email',
            Functie = 'Functie',
            Lid = 'Lid',
            GebDatum = 'GebDatum'
        WHERE id = "
. $id . "
        "
;

mysql_query($sql)
?>
 
Nanno

Nanno

04/07/2007 00:29:00
Quote Anchor link
Pfff...

Ik krijg geen error met deze code bij het versturen, maar wijzigen doet hij ook niet.
Snap er niets van....
 
Stefan van Iwaarden

Stefan van Iwaarden

04/07/2007 00:30:00
Quote Anchor link
@Nanno:
Ja, in principe zou het wel werken, maar besef wel dat de waardes die je nu ingevuld hebt geen variabelen zijn uit een tekstveld oid.

EDIT:
als hij niets wijzigt, doe dan eens
echo $id;
dus even kijken of die wel een waarde bevat.

EDIT2: je hebt geen ; achter mysql_query($sql) staan.
daarnaast is het verstandig om er het volgende van te maken
mysql_query($sql) or die (mysql_error());

Zo geeft hij een mooie foutmelding, als je een fout in je query hebt.
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
 
Nanno

Nanno

04/07/2007 00:41:00
Quote Anchor link
Ik krijg geen echo terug...
En ik moet mijn veldnamen dus wijzigen met een $ teken ervoor?
Dan heb ik dus ook gelijk mijn id te pakken lijkt mij...

Ga ik s proberen.
 
Stefan van Iwaarden

Stefan van Iwaarden

04/07/2007 00:58:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "UPDATE NAW SET voornaam = 'voornaam' WHERE id = ".$id;
?>


Dit zet letterlijk het woord voornaam in het veld voornaam, dat wil je niet, je wilt de waarde uit het tekstveld voornaam in je veld hebben, dus dat doe je dan als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$voornaam
= $_POST['voornaam'];
$sql = "UPDATE NAW SET voornaam = '".$voornaam."' WHERE id = ".$id;
?>

En dit dan voor alle velden herhalen uiteraard, want met $_POST[''] haal je de waarde uit je form op (tussen de quotes de waarde die bij name="" staat)

of je doet het direct, dat kan ook, en maakt je code iets korter
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "UPDATE NAW SET voornaam = '".$_POST['voornaam']."' WHERE id = ".$id;
?>


Als laatste wil ik je aanraden het veld id (wat waarschijnlijk op auto_increment staat) niet mee te updaten, je hoeft namelijk niet perse alle velden te updaten, de velden die je niet aangeeft, blijven gewoon hetzelfde, en het id wil je immers niet veranderen.
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
 
Nanno

Nanno

04/07/2007 01:02:00
Quote Anchor link
Dit is een duidelijk antwoord..
Ga het ff proberen.

Thanks
 
Nanno

Nanno

04/07/2007 02:17:00
Quote Anchor link
Stefan, Jan,

Na wat stoeien is het gelukt.
Het werkt!!
Ik had de WHERE id direct na de SET gezet met mijn 1e poging, dat werkt dus niet.
Mijn dank is enorm groot voor jullie hulp.

Groet,

Nanno
 
Eric

Eric

13/02/2008 15:09:00
Quote Anchor link
Ik zet in dit topic even een reactie, omdat ik de tips hieruit ook gebruikt heb.
Toch heb ik nog een probleem. Hij geeft een fout bij het uivoeren van de query. (die ik heb ingesteld bij 'or die')
Ik wil de gegevens uit (Voorlopig) de 'titel' balk geupdate hebben. Het uitlezen van de database met de goede gegevens lukt wel, want ik krijg de titel in de balk. Als ik die echter aangepast heb en op 'wijzigen' klik, krijg ik de fout.
Hier mijn code..

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
<?php
if (isset ($_POST["submit"]))
{

$id = $_POST['id'];
$sql = "UPDATE reunisten_nieuws SET titel = '".$_POST['titel']."' WHERE id = ".$id;
$result = mysql_query($sql)
            or die("Fout bij uitvoeren query");
            
        $check = mysql_affected_rows();

if ($check != 0)
    {

        echo "<h2>Bericht Gewijzigd</h2>";
    
        echo "<p>Het bericht is gewijzigd. Ga nu naar <a href=\"" . $_SERVER['PHP_SELF'] . "\" title=\"Berichten overzicht\">het berichten overzicht</a>.";
    }
}


elseif (isset ($_POST["wijzigen"]))
{

$id = $_POST['id'];
$Wijzig = mysql_query("SELECT * FROM reunisten_nieuws WHERE id = $id ");
$record = mysql_fetch_array($Wijzig);


echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
    echo "<p>";
    echo "<input type=\"hidden\" name=\"show\" value=\"add\" />";
    echo "Titel:<br />";    
    echo "<input type=\"text\" size=\"80\" name=\"titel\" value=\"" . $record['titel'] .  "\"><br />";
    echo "Bericht:<br />";


//  
//@ERIC: hier is dat WYSIWYG-ding ingevoerd.
//


    echo "<textarea id=\"tekst\" name=\"tekst\" style=\"height: 170px; width: 500px;\">" . $record['tekst'] . "</textarea><br />";
    echo "<script language='javascript1.2'> generate_wysiwyg('tekst');</script>";

    echo "<input type=\"submit\" name=\"submit\" value=\" Bericht wijzigen \"></p>";
    echo "</form>";
}


else{    
    
    echo "<h2>Nieuws wijzigen</h2>";
    echo "<table border='2' bordercolor='#000000'><tr><td width='300'><b>Onderwerp</b></td><td width='100'><b>Gepost door</b></td><td width='100'></td></tr>";
    
    $sql = "SELECT id,titel,tekst,gepostDoorId,DATE_FORMAT(datum, '%d.%m.%Y') as show_datum FROM reunisten_nieuws ORDER BY datum DESC";
    
    $res = mysql_query($sql);
    $srv = $_SERVER['PHP_SELF'];
    
    if (mysql_num_rows($res) >= 1)
        {

        while ($row = mysql_fetch_array($res))
           {

            $row['id'] = htmlentities($row['id']);
            $row['titel'] = htmlentities($row['titel']);
            $row['tekst'] = htmlOutput(($row['tekst']));
            $row['gepostDoorId'] = nl2br(htmlentities($row['gepostDoorId']));
            
            $idknop = $row['id'];
    
            echo "<p><tr><td>" .$row['titel']. "</td><td>" .$row['gepostDoorId']. "</td><td>";
            echo '<form action="'.$srv.'" method="post">
                    <center><input type="submit" name="wijzigen" value="Wijzig" /></center>
<input type="hidden" name="id" value="'
.$idknop.'" />
                  </form>'
;
            echo "</td></tr><p />";
           }
    }

    else
    {
        echo "<p>Er zijn nog geen nieuwsberichten toegevoegd.</p>";
    }

echo "</table>";
}

?>


Heeft iemand een oplossing?
 
Mvos

mvos

13/02/2008 15:26:00
Quote Anchor link
welke fout geeft hij dan?
 
Eric

Eric

13/02/2008 15:48:00
Quote Anchor link
Zoals ik zelf heb ingesteld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
$result
= mysql_query($sql)
            or die("Fout bij uitvoeren query");
?>
 
Mvos

mvos

13/02/2008 15:51:00
Quote Anchor link
je bent bij $sql aan het ein 2 keer " vergeten
Gewijzigd op 01/01/1970 01:00:00 door mvos
 
Eric

Eric

13/02/2008 15:59:00
Quote Anchor link
Nu zegt hij wel dat er iets gewijzigd is, maar dat is er niet....

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
<?
if (isset ($_POST["submit"]))
{

$id = $_POST['id'];
$sql = "UPDATE reunisten_nieuws SET titel = '".$_POST['titel']."' WHERE id = '".$id."'";
$result = mysql_query($sql)
            or die("Fout bij uitvoeren query");
            
        $check = mysql_affected_rows();

if ($check != 0)
    {

        echo "<h2>Bericht Gewijzigd</h2>";
    
        echo "<p>Het bericht is gewijzigd. Ga nu naar <a href=\"" . $_SERVER['PHP_SELF'] . "\" title=\"Berichten overzicht\">het berichten overzicht</a>.";
    }
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Eric
 
Frank -

Frank -

13/02/2008 16:09:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (mysql_affected_rows() > 0)
?>

Dat is natuurlijk eenvoudiger... Je zou de waarde van mysql_affected_rows natuurlijk ook even kunnen echoen, dan wordt het pas echt duidelijk.

Ps. Beveiliging verdient ook wat aandacht, mysql_real_escape_string() schittert door afwezigheid. Of is SQL-injection een functionaliteit?
 
Eric

Eric

13/02/2008 17:20:00
Quote Anchor link
Het probleem is dat ik nu helemaal niks meer te zien krijg zodra ik op 'wijzigen' klik. Het scherm wordt wit... echoen kan dus ook niet....

p.s. Ik ben niet bekend met die termen...enige uitleg?
Gewijzigd op 01/01/1970 01:00:00 door Eric
 



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.