met PHP een record updaten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo php experts

ik ben vrij nieuw in het werken met php en ik ben al blij dta het me tot nog toe gelukt is data weg te schrijven in een database, deze te tonen en per regel te verwijderen.
maar wat ik hier nog graag bij zou willen hebben is het wijzigen van gegevens.
de kolom namen in sql zijn ID, Voornaam, Achternaam, Adres, Postcode, Plaats, Telefoon en Mail

ik heb verschillende dingen geprobeerd maar ik krijg het niet voor elkaar

dit is de code van klanten.php
het geeft in kolommen weer welke klanten er zijn vervolgens is er een kolom wijzigen met link naar wijzigen.php en een kolom verwijderen die verwijst naar verwijderen.php
<?php
include "include/connect.php";

$sql = "SELECT * FROM klanten";
$resultaat = mysql_query($sql) or die ("fout bij uitvoeren");
?>

<table border=1>
<tr><th>ID</th><th>Voornaam</th> <th>Achternaam</th> <th>Adres</th><th>Wijzigen</th><th>Verwijder</th></tr>
<?php
while ($record = mysql_fetch_object($resultaat)){
echo "<tr><td>$record->ID</td>";
echo "<td>$record->Voornaam</td>";
echo "<td>$record->Achternaam</td>";
echo "<td>$record->Adres</td>";
echo "<td><a href='wijzigen.php?id=$record->ID'>wijzigen</a></td>";
echo "<td><a href='include/delete.php?id=$record->ID'>Verwijder</a></td></tr>"; }
?>
</table>

<?php
mysql_close($link);
?>
hier is de code van wijzigen.php
<?
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.

// Connect database.
include "include/connect.php";

// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($Submit){

// Get parameters from form.
$id=$_POST['id'];
$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];
$adres=$_POST['adres'];
$postcode=$_POST['postcode'];
$plaats=$_POST['plaats'];
$telefoon=$_POST['telefoon'];
$mail=$_POST['mail'];

// Do update statement.
mysql_query("update klanten set voornaam='$voornaam', achternaam='$achternaam', adres='$adres', postcode='$postcode', plaats='$plaats', telefoon='$telefoon', mail='$mail', where id='$id'");

// Close database connection.
mysql_close();

// Re-direct this page to select.php.
header("location:klanten.php");
}
// ************* End update part *************

// *** Select data to show on text fields in form. ***
<?
// Get id parameter (GET method) from select.php
$id=$_GET['id'];

// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from klanten where id='$id'");

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);

// Close database connection.
mysql_close();
?>

<!-- END OF PHP CODES AND START HTML TAGS -->

<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>voornaam:
<!-- name of this text field is "name" -->
<input name="voornaam" type="text" id="voornaam" value="<? echo $row['voornaam']; ?>"/>
<br />
Achternaam:
<!-- name of this text field is "email" -->
<input name="Achternaam" type="text" id="Achternaam" value="<? echo $row['Achternaam']; ?>"/>
<br />
Adres:
<!-- name of this text field is "email" -->
<input name="Adres" type="text" id="Adres" value="<? echo $row['Adres']; ?>"/>
<br />
Plaats:
<!-- name of this text field is "email" -->
<input name="Plaats" type="text" id="Plaats" value="<? echo $row['Plaats']; ?>"/>
<br />
Telefoon:
<!-- name of this text field is "tel" -->
<input name="telefoon" type="text" id="telefoon" value="<? echo $row['telefoon']; ?>"/>
<br />
E-mail:
<!-- name of this text field is "tel" -->
<input name="mail" type="text" id="mail" value="<? echo $row['mail']; ?>"/>
</p>
<p>
<input type="submit" name="Submit" value="Submit" />
</p>
</form>
</body>
</html>
ik heb deze code van "http://www.phpsimple.net/mysql_update_record.php" hierin heb ik al wat aanpassingen gemaakt maar ik krijg het niet aan de gang,

Wat ik graag zou willen is een invul formulier waarbij in ieder invulveld de huidige waarde staat.

ik hoop dat iemand mij kan helpen.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 21:56

Cyphax

Moderator LNX
Je krijgt het niet aan de gang, want? Wat voor meldingen krijg je? Het is nogal veel code zo, als we dat helemaal moeten gaan doorspitten... dan neem ik een middagje vrij. ;)
GoT wil eigenlijk ook geen support leveren op scripts die je ergens anders vandaan hebt. :)

Maargoed, zoals Bo-oz hieronder ook zegt: ga debuggen en kijk eerst of je er zelf achter kan komen wat er misgaat en waarom. Lukt dat niet, meld dan wat er misgaat, wat je hebt geprobeerd, etc. Dan kunnen we ook nog eventuele oplossingen uitsluiten (om van die "dat had ik al geprobeerd"-situaties tegen te gaan)

[ Voor 37% gewijzigd door Cyphax op 21-11-2006 13:46 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou eens beginnen met het checken dat je PHP variabelen dezelfde kolomnamen gebruiken als je hebt gedefinieerd in je MySQL tabel,

soms zie ik:

$row['Plaats']

terwijl je doet:

Update blabla VALUES plaats=

daar lijkt me dan echt iets fout te gaan.

Daarnaast, troubleshoot het zelf eens, als je op de overzicht op wijzig drukt, wat zie je dan in het wijzig.php formulier??

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 22:05

pietje63

RTFM

Wat soms ook al helpt zijn php tags ipv code tags, doordat de syntax dan in kleurtjes wordt weergegeven haal je er soms al fouten uit.

Verder kun je om te debuggen je queries echoen.

Een ander makkelijk truukje om dit soort dingen te leren is trouwens door wat je wilt bereiken eerst door phpmyadmin te laten doen, en daarna de gebruikte code te bekijken.

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb inmiddels het een en ander na gekeken bo-oz er stonden een aantal hoofdletters verkeerd.

wat ik tot op heden niet voor elkaar kreeg was de waarden in het invul vak krijgen maar dat lukt nu wel
wat nog niet lukt is daadwerkelijk de data updaten

er wordt geen foutmelding gegeven en ik kom weer terug in klanten.php
met de oude gegevens.

als ik $row [ ] verwijder komt de data niet meer in het vak te staan
header("location:klanten.php");
}
// ************* End update part *************

// *** Select data to show on text fields in form. ***

// Get id parameter (GET method) from select.php
$id=$_GET['id'];

// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from Klanten where id='$id'");

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);

// Close database connection.
mysql_close();
?>

<!-- END OF PHP CODES AND START HTML TAGS -->

<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>Voornaam:
<!-- name of this text field is "name" -->
<input name="Voornaam" type="text" id="Voornaam" value="<? echo $row['Voornaam']; ?>"/>
<br />
Achternaam:
<!-- name of this text field is "email" -->
<input name="Achternaam" type="text" id="Achternaam" value="<? echo $row['Achternaam']; ?>"/>
<br />
Adres:
<!-- name of this text field is "email" -->
<input name="Adres" type="text" id="Adres" value="<? echo $row['Adres']; ?>"/>
<br />
Plaats:
<!-- name of this text field is "email" -->
<input name="Plaats" type="text" id="Plaats" value="<? echo $row['Plaats']; ?>"/>
<br />
Telefoon:
<!-- name of this text field is "tel" -->
<input name="Telefoon" type="text" id="Telefoon" value="<? echo $row['Telefoon']; ?>"/>
<br />
E-mail:
<!-- name of this text field is "tel" -->
<input name="Mail" type="text" id="Mail" value="<? echo $row['Mail']; ?>"/>
</p>
<p>
<input type="submit" name="Submit" value="verzend" />
</p>
</form>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:26

momania

iPhone 30! Bam!

PHP:
1
<a href='wijzigen.php?id=$record->ID'>wijzigen</a>

Uhm, ja... je zal eens moeten beginnen bij de basis van html en het gebruik van een form om waardes te kunnen posten ;)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zoals ik al had gezegd krijg ik inmiddels in de invul velden de juiste waarden te zien maar wordt er geen data geupdate.

volgens mij kan dit niet liggen aan het id gedeelte want de juiste waarden worden wel gevonden

volgens mij moet het in 1 van deze regels zitten:
$row=mysql_fetch_assoc($result); (geen idee wat deze regel doet)
$sql="UPDATE Klanten SET Voornaam='$Voornaam', Achternaam='$Achternaam', Adres='$Adres', Postcode='$Postcode', Plaats='$Plaats', Telefoon='$Telefoon', Mail='$Mail' where ID='$id'";
mysql_query($sql);
hiernogmaals (maar compleet) wijzigen.php
<?
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.

// Connect database.
include "include/connect.php";

// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($Submit){

// Get parameters from form.
$ID=$_POST['ID'];
$Voornaam=$_POST['Voornaam'];
$Achternaam=$_POST['Achternaam'];
$Adres=$_POST['Adres'];
$Postcode=$_POST['Postcode'];
$Plaats=$_POST['Plaats'];
$Telefoon=$_POST['Telefoon'];
$Mail=$_POST['Mail'];

// Do update statement.
$sql="UPDATE Klanten SET Voornaam='$Voornaam', Achternaam='$Achternaam', Adres='$Adres', Postcode='$Postcode', Plaats='$Plaats', Telefoon='$Telefoon', Mail='$Mail' where ID='$id'";
mysql_query($sql);

// Close database connection.
mysql_close();

// Re-direct this page to select.php.
header("location:klanten.php");
}
// ************* End update part *************

// *** Select data to show on text fields in form. ***

// Get id parameter (GET method) from klanten.php
$ID=$_GET['ID'];

// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from klanten where ID='$id'");

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);

// Close database connection.
mysql_close();
?>

<!-- END OF PHP CODES AND START HTML TAGS -->

<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">

<table border="1" width="46%">
<tr>
<td width="127">Voornaam:</td>
<td><input name="Voornaam" type="text" id="Voornaam" value="<? echo $row['Voornaam']; ?>"/></td>
</tr>
<tr>
<td width="127">Achternaam:</td>
<td><input name="Achternaam" type="text" id="Achternaam" value="<? echo $row['Achternaam']; ?>"/></td>
</tr>
<tr>
<td width="127">Adres:</td>
<td><input name="Adres" type="text" id="Adres" value="<? echo $row['Adres']; ?>"/></td>
</tr>
<tr>
<td width="127">Postcode:</td>
<td><input name="Postcode" type="text" id="Postcode" value="<? echo $row['Postcode']; ?>"/></td>
</tr>
<tr>
<td width="127">Plaats:</td>
<td><input name="Plaats" type="text" id="Plaats" value="<? echo $row['Plaats']; ?>"/></td>
</tr>
<tr>
<td width="127">Telefoon:</td>
<td><input name="Telefoon" type="text" id="Telefoon" value="<? echo $row['Telefoon']; ?>"/></td>
</tr>
<tr>
<td width="127">E-mail:</td>
<td><input name="Mail" type="text" id="Mail" value="<? echo $row['Mail']; ?>"/></td>
</tr>
<tr>
<td width="127"> </td>
<td>
<input type="submit" name="Submit" value="Verzenden" /></td>
</tr>
</table>
</form>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • bat266
  • Registratie: Februari 2004
  • Laatst online: 24-08 06:41
Verwijderd schreef op dinsdag 21 november 2006 @ 15:58:
$row=mysql_fetch_assoc($result); (geen idee wat deze regel doet)
deze regel zet de opgehaalde klant zijn waarden in een array

probeer zelf te debuggen in de code een makkelijke manier van debuggen is bijv:
van:
code:
1
$result=mysql_query("select * from klanten where id='$id'");

dit
code:
1
$result=mysql_query("select * from klanten where id='$id'") or die(mysql_error());

maken


Zo krijg je de fout terug die de query genereert mocht het mis gaan. Voor de rest de ubb [code ] tag en php tag is al genoemd om het geheel voor jou en iedereen duidelijker zichtbaar te maken

eventueel kun je ook nog de query echo-en als je wilt zien hoe de query uitziet
code:
1
echo "select * from klanten where id='$id'";


hieronder is beter ik heb de select gepakt, maar voorbeeld lijkt me duidelijk

[ Voor 36% gewijzigd door bat266 op 21-11-2006 16:44 . Reden: echo query toegevoegd ]

Better to remain silent and be thought a fool then to speak out and remove all doubt.


Acties:
  • 0 Henk 'm!

Verwijderd

het ophalen van gegevens gaat goed, het probleem zit dus niet in SELECT of in de $row variabele.... waar het verkeerd gaat is je UPDATE query....

doe eens

PHP:
1
$result = mysql_query($sql) or die(mysql_error());


als het goed is... of juist niet eigenlijk... zie je nu de MySQL error die je script terug krijgt bij het aanroepen van de query. Post die hier, en we kunnen zien wat er aan de hand is, jijzelf ook als t goed is!

edit: ipv van je huidige:

PHP:
1
mysql_query($sql)

[ Voor 7% gewijzigd door Verwijderd op 21-11-2006 16:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

BTW... de oplossing is:

Je hebt geen Hidden form field met je ID waarde:

HTML:
1
<input name="ID" type="hidden" value="<? echo $row['ID']; ?>"/>


edit: hij staat waarschijnlijk ook nog in je GET... alhoewel ik daar niet op zou vertrouwen...

je kan dus ook het volgende aanpassen:

PHP:
1
$ID = $_GET['ID'];

[ Voor 35% gewijzigd door Verwijderd op 21-11-2006 16:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik krijg nu de volgende errors

Warning: mysql_query() [function.mysql-query]: Access denied for user 'apache'@'localhost' (using password: NO) in /home/stdoca/domains/stichtingdoca.nl/public_html/test/admin/wijzigen.php on line 40

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/stdoca/domains/stichtingdoca.nl/public_html/test/admin/wijzigen.php on line 40
Access denied for user 'apache'@'localhost' (using password: NO)

vandaar dat ik nogmaals de include naar connect.php het toegevoegd. ik heb inmiddels ook het bestand 777 rechten gegeven.

hier de code waarmee ik werk
het lijkt fout te gaan tussen de "if($Submit){" en de "header("location:klanten.php");"
<?
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.

// Connect database.
include "include/connect.php";

// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($Submit){

// Get parameters from form.
$ID=$_POST['ID'];
$Voornaam=$_POST['Voornaam'];
$Achternaam=$_POST['Achternaam'];
$Adres=$_POST['Adres'];
$Postcode=$_POST['Postcode'];
$Plaats=$_POST['Plaats'];
$Telefoon=$_POST['Telefoon'];
$Mail=$_POST['Mail'];


// Do update statement.
include "include/connect.php";
$sql="UPDATE klanten SET Voornaam='$Voornaam', Achternaam='$Achternaam', Adres='$Adres', Postcode='$Postcode', Plaats='$Plaats', Telefoon='$Telefoon', Mail='$Mail' WHERE ID='$id'";
mysql_query($sql) or die(mysql_error());

// Close database connection.
mysql_close();

// Re-direct this page to select.php.
// header("location:klanten.php");
}

// ************* End update part *************

// *** Select data to show on text fields in form. ***

// Get id parameter (GET method) from klanten.php

// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from klanten where ID='$id'") or die(mysql_error());

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);

// Close database connection.
mysql_close();
?>

<!-- END OF PHP CODES AND START HTML TAGS -->

<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">

<table border="1" width="46%">
<tr>
<td width="127">Voornaam:</td>
<td><input name="Voornaam" type="text" id="Voornaam" value="<? echo $row['Voornaam']; ?>"/></td>
</tr>
<tr>
<td width="127">Achternaam:</td>
<td><input name="Achternaam" type="text" id="Achternaam" value="<? echo $row['Achternaam']; ?>"/></td>
</tr>
<tr>
<td width="127">Adres:</td>
<td><input name="Adres" type="text" id="Adres" value="<? echo $row['Adres']; ?>"/></td>
</tr>
<tr>
<td width="127">Postcode:</td>
<td><input name="Postcode" type="text" id="Postcode" value="<? echo $row['Postcode']; ?>"/></td>
</tr>
<tr>
<td width="127">Plaats:</td>
<td><input name="Plaats" type="text" id="Plaats" value="<? echo $row['Plaats']; ?>"/></td>
</tr>
<tr>
<td width="127">Telefoon:</td>
<td><input name="Telefoon" type="text" id="Telefoon" value="<? echo $row['Telefoon']; ?>"/></td>
</tr>
<tr>
<td width="127">E-mail:</td>
<td><input name="Mail" type="text" id="Mail" value="<? echo $row['Mail']; ?>"/></td>
</tr>
<tr>
<td width="127"> </td>
<td>
<input type="submit" name="Submit" value="Verzenden" /></td>
</tr>
</table>
</form>
</body>
</html>

Acties:
  • 0 Henk 'm!

Verwijderd

Wachtwoord voor je database is incorrect 8)7 Weet je zeker dat die goed is??

En het is ook niet echt nodig om in elke post al je code te posten; als je code wilt posten doe aub dan een klein stukje en gebruik [ php ] tags...

[ Voor 49% gewijzigd door Verwijderd op 21-11-2006 16:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
de inlog gegevens zijn juist, anders kan ik ook nooit de gegevens in het invulveld gevuld krijgen.
omdat ik niet zeker weet waar de fout zit post ik hem helemaal. maar ik zal php tags gebruiken dan kunnen we regelnummers zien

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
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
<?
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.

// Connect database.
include "include/connect.php";

// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($Submit){

// Get parameters from form.
$ID=$_POST['ID'];
$Voornaam=$_POST['Voornaam'];
$Achternaam=$_POST['Achternaam'];
$Adres=$_POST['Adres'];
$Postcode=$_POST['Postcode'];
$Plaats=$_POST['Plaats'];
$Telefoon=$_POST['Telefoon'];
$Mail=$_POST['Mail'];


// Do update statement.
include "include/connect.php";
$sql="UPDATE klanten SET Voornaam='$Voornaam', Achternaam='$Achternaam', Adres='$Adres', Postcode='$Postcode', Plaats='$Plaats', Telefoon='$Telefoon', Mail='$Mail' WHERE ID='$id'";
mysql_query($sql) or die(mysql_error());

// Close database connection.
mysql_close();

// Re-direct this page to select.php.
// header("location:klanten.php");
}

// ************* End update part *************

// *** Select data to show on text fields in form. ***

// Get id parameter (GET method) from klanten.php

// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from klanten where ID='$id'") or die(mysql_error());

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);

// Close database connection.
mysql_close();
?>

<!-- END OF PHP CODES AND START HTML TAGS -->

<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<table border="1" width="46%">
    <tr>
        <td width="127">Voornaam:</td>
        <td><input name="Voornaam" type="text" id="Voornaam" value="<? echo $row['Voornaam']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Achternaam:</td>
        <td><input name="Achternaam" type="text" id="Achternaam" value="<? echo $row['Achternaam']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Adres:</td>
        <td><input name="Adres" type="text" id="Adres" value="<? echo $row['Adres']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Postcode:</td>
        <td><input name="Postcode" type="text" id="Postcode" value="<? echo $row['Postcode']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Plaats:</td>
        <td><input name="Plaats" type="text" id="Plaats" value="<? echo $row['Plaats']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Telefoon:</td>
        <td><input name="Telefoon" type="text" id="Telefoon" value="<? echo $row['Telefoon']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">E-mail:</td>
        <td><input name="Mail" type="text" id="Mail" value="<? echo $row['Mail']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">&nbsp;</td>
        <td>
<input type="submit" name="Submit" value="Verzenden" /></td>
    </tr>
</table>
</form>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
$row=mysql_fetch_assoc($result); (geen idee wat deze regel doet)
Het geweldige van de php site, is dat het adres http://php.net/functie_naam je doorverwijst naar de juiste functie, in dit geval dus mysql_fetch_assoc. Een bezoekje aan http://php.net/mysql_fetch_assoc was dus voldoende geweest.

Ik zie dat je mysql_close() uitvoert, maar volgens mij hoeft niet per sé, want als je mysql_connect gebruikt ipv een persistant connection, wordt de connectie gesloten wanneer je php scriptje klaar is. Daarnaast, als er dus een variabele $submit bestaat, voer je een query uit, om dan de mysql connectie te sluiten. Echter voer je daarna nog een query in en dat kan natuurlijk niet ;)

Misschien is het verstandig om als je nieuw met php bent maar wel iets met mysql wil doen, je dan even http://php.net/mysql leest. Daar staat genoeg informatie over hoe je met een database werkt.
Verder is algemene methode om met php en formulieren te werken de volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
//Check of gebruiker formulier heeft gepost
if($_POST['submit']){
  $post_array = $_POST
  //voer verdere afhandeling (checks, filtering, behandeling etc) van je gegevens hier uit
}

//Haal info uit database
$result=mysql_query("SELECT * FROM klanten WHERE ID='$id'") or die(mysql_error());
$row=mysql_fetch_assoc($result); 
?>
<form name="form" method="post" action="<? echo $PHP_SELF; ?>" enctype="multipart/form-data"><p>
<dl>
<dt>Naam</dt><dd><input type="text" name="naam" value="<? echo $row["naam"]; ?>"</dd>
<dt>Verstuur</dt><dd><input type="submit" name="submit" value="Verstuur"></dd>
</dl>
</p></form>
Verwijderd schreef op dinsdag 21 november 2006 @ 16:48:
ik krijg nu de volgende errors

Warning: mysql_query() [function.mysql-query]: Access denied for user 'apache'@'localhost' (using password: NO) in /home/stdoca/domains/stichtingdoca.nl/public_html/test/admin/wijzigen.php on line 40
Er is dus geen (geldig) password gegeven, en die is wel nodig.
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/stdoca/domains/stichtingdoca.nl/public_html/test/admin/wijzigen.php on line 40
Access denied for user 'apache'@'localhost' (using password: NO)
Zie hierboven, je sluit je connectie, wil daarna nog een query uitvoeren.
vandaar dat ik nogmaals de include naar connect.php het toegevoegd. ik heb inmiddels ook het bestand 777 rechten gegeven.
Dat is een heel slecht idee, een include met dit soort informatie hoort juist 600 rechten te hebben oid. Nóóit 777, want dan kan iedereen hem bekijken én wijzigen!!! (!!!! ja)
hier de code waarmee ik werk
het lijkt fout te gaan tussen de "if($Submit){" en de "header("location:klanten.php");"
Ik zie nergens een punt waar je $Submit toewijst. Ook het punt waar je die header stuurt is me niet duidelijk.


Tot slot: als je uitleg wil, probeer je stukjes code dan duidelijk weer te geven (dus met [code=[url=http://gathering.tweakers.net/forum/faq/ubb#tag_code]taal_die_je_hebt[/url]][/code] of specifieker voor php: [php][/php].
Ook is het onhandig om al je variabelen van je formulier hier neer te zetten, aangezien nummer 2 al boven de eerste geen meerwaarde toevoegt voor ons wat betreft het oplossen van je probleem. Het maakt de code alleen maar onduidelijker en onoverzichtelijker.
Tot slot plemp je zomaar alle informatie uit je POST in je database. Er gaat geen controle overheen of sommige velden leeg zijn, en je gebruikt geen mysql_real_escape_string (zie dus ook http://php.net/mysql_real_escape_string ;)
Op dit moment ben je absoluut niet veilig en is je scriptje makkelijk vatbaar voor SQL injection :)

[ Voor 64% gewijzigd door mithras op 21-11-2006 17:28 ]


Acties:
  • 0 Henk 'm!

  • DutchCommando
  • Registratie: November 2000
  • Laatst online: 22:53
Waar komt die $Submit überhaupt vandaan? Ik gok dat $Submit geen boolean value heeft?

Niet echt een PHP bekende maar dat komt me niet logisch over.

Moet toch nogmaals refreshen terwijl ik bezig ben met code kijken en langzaam een reply typen ;). mithras86 was een stuk sneller :D.

[ Voor 33% gewijzigd door DutchCommando op 21-11-2006 17:27 ]


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
DutchCommando schreef op dinsdag 21 november 2006 @ 17:26:
Moet toch nogmaals refreshen terwijl ik bezig ben met code kijken en langzaam een reply typen ;). mithras86 was een stuk sneller :D.
offtopic:
Om ondertussen 200% van de oorspronkelijke tekst erbij te typen
/post-reservering O-)

Acties:
  • 0 Henk 'm!

Verwijderd

Het leuke is... als $Submit niet bestond... waarom werd dan wel een header() gezet die binnen deze loop valt... het is slecht gecode... maar blijkt wel te werken.

Ik denk dat de TS wel voldoende informatie heeft zo, ik zou hem dan ook willen adviseren zelf even goed zn code door te lezen en proberen het te begrijpen... Dingen die me zowiezo opvallen:

- 2x include van dezelfde file
- 2x close mysql zonder duidelijke open of select_database (of staat die al in het connect.php bestandje??)
- Meestal heb ik in mn mysql_query ook een connection string staan... dus mysql_query($sql, $connection); maar weet niet zeker of dit verplicht is.
- consistent gebruik caps/non-caps... gebruikelijk bij PHP is overigens non_caps_met_underscores, maar hier zijn de meningen over verdeeld.
- Kijk als je toch bezig bent gelijk eens naar SQL injection, URL injection en andere methodes om je site behoorlijk te vergallen, en dan bedoel ik meer het voorkomen ervan uiteraard ;)

-

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

het is me inmiddels gelukt, dank voor alle support,

ik heb het bestand geplitst

dit is nu mijn wijzigen.php deze krijgt het "ID" uit het formulier, na de submit wordt nu het bestand update.php uitgevoerd die de query uitvoerd.

connect.php maakt de verbinding met de database.

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
<?
include "include/connect.php";

$result=mysql_query("select * from klanten where ID='$id'") or die(mysql_error());

$row=mysql_fetch_assoc($result);
mysql_close();

?>

<form id="form1" name="form1" method="post" action="include/update.php">

<table border="1" width="46%">
    <tr>
        <td></td>
        <td><input name="ID" type="hidden" id="ID" value="<? echo $row['ID']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Voornaam:</td>
        <td><input name="Voornaam" type="text" id="Voornaam" value="<? echo $row['Voornaam']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Achternaam:</td>
        <td><input name="Achternaam" type="text" id="Achternaam" value="<? echo $row['Achternaam']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Adres:</td>
        <td><input name="Adres" type="text" id="Adres" value="<? echo $row['Adres']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Postcode:</td>
        <td><input name="Postcode" type="text" id="Postcode" value="<? echo $row['Postcode']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Plaats:</td>
        <td><input name="Plaats" type="text" id="Plaats" value="<? echo $row['Plaats']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">Telefoon:</td>
        <td><input name="Telefoon" type="text" id="Telefoon" value="<? echo $row['Telefoon']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">E-mail:</td>
        <td><input name="Mail" type="text" id="Mail" value="<? echo $row['Mail']; ?>"/></td>
    </tr>
    <tr>
        <td width="127">&nbsp;</td>
        <td>
<input type="submit" name="Submit" value="Verzenden" /></td>
    </tr>
</table>
</form>
</body>
</html>


en dit is het update.php bestand dat de daadwerkelijke update uitvoerd.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?

$ID=$_POST['ID'];
$Voornaam=$_POST['Voornaam'];
$Achternaam=$_POST['Achternaam'];
$Adres=$_POST['Adres'];
$Postcode=$_POST['Postcode'];
$Plaats=$_POST['Plaats'];
$Telefoon=$_POST['Telefoon'];
$Mail=$_POST['Mail'];

include "connect.php";


$sql="UPDATE klanten SET Voornaam='$Voornaam', Achternaam='$Achternaam', Adres='$Adres', Postcode='$Postcode', Plaats='$Plaats', Telefoon='$Telefoon', Mail='$Mail' WHERE ID='$ID'";
mysql_query($sql) or die(mysql_error());

// Close database connection.
mysql_close();

header ("Location: ../klanten.php");
?>

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Zoals je in bovenstaande reply's hebt gelezen, kan je echt nog wel een aantal dingen verbeteren. Die header sturen hoeft helemaal niet, evenals het connecten, disconnecten dan weer connecten en opnieuw disconnecten. Ik weet niet hoeveel dit scheelt in performance, maar het is gewoon ugly ;)

Als je je ook nog had verdiept in de include functie, had je gezien dat er (mits je niet je connectie closed) soortgelijke functies bestaan: http://php.net/include . Ik doel hierop omdat je 2x hetzelfde bestand include. Dit is door je omslachtige manier wel nodig, maar normaal include je 1 bestand. Als het mogelijk is dat op meerdere plaatsen het bestand wordt geinclude, gebruik je include_once.

Tot slot wil ik je erop wijzen als je blieft niet zo'n hele lap php/html neer te zetten, omdat dit niets toevoegt aan je probleem. Alleen de afhandeling van voornaam, welke al id afhankelijk is, is genoeg als testcase om te bepalen of je methode werkt of niet :)

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Daarnaast wil ik je er ook op wijzen dat je aan het einde van het topic redelijk bij de hand genomen moet worden. Meer dan een foutmelmding en je code post je niet en dat is hier in PRG veel te weinig. Daar hoort nog minstens bij welke zaken je nu zelf hebt geprobeerd en wat daar dan blijkbaar niet mee lukte.

Daarnaast: als je niet weet wat een bepaalde functie doet dan is dat prima op te zoeken in de PHP documentatie op php.net. Daarin staat van elke functie precies uitgelegd wat het doet. Ook geven we hier geen support op scripts die je niet zelf hebt geschreven waar het hier toch wel erg sterk op lijkt (gezien de comments en het feit dat je code gebruikt waarvan je zelf niet eens weet wat het doet). Voor support moet je dan ook bij de maker zijn en niet hier.

Als je Welkom in Programming - FAQ en Beleid eens door wilt lezen dan weet je precies wat we van iemand verwachten voordat er een topic wordt geopend.

[ Voor 10% gewijzigd door Creepy op 21-11-2006 20:10 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

En... het gebruiken van meerdere pagina's voor het afhandelen van dit soort "updates" kan natuurlijk... maar het is zeer eenvoudig om een FORM naar dezelfde pagina te laten POSTen/GETen, dat volgens mij een betere en overzichtelijkere manier is om alles "in de hand" te houden. Toen ik vroeger nog op deze manier mn php schreef eindigde ik met 200 bestanden in de root van m'n website... uit ervaring kan ik je vertellen dat je na 2 maanden geen flauw benul meer hebt van waarom je wat hebt gedaan! Het advies is dus, zorg naast een overzichtelijke mapstructuur, voor gedocumenteerde code (// zodat je later nog weet waarom) en probeer zoveel mogelijk dingen die in 1 file afgehandeld kunnen worden, ook daadwerkelijk in die ene file af te handelen!

succes

edit: Wat ik natuurlijk bedoel hiermee, wat misschien niet geheel duidelijk is, is dat bijvoorbeeld een Insert en een Update formulier eigenlijk precies hetzelfde zijn... het is dus wel lekker makkelijk dat dat allemaal geintegreerd zit in 1 pagina. Door middel een GET variabele vanaf je overzicht of in een menu, kun je dan aangeven of het gaat om een insert of een update!

[ Voor 19% gewijzigd door Verwijderd op 22-11-2006 09:58 ]

Pagina: 1