Update via Formulier
Ik heb een vreemd probleem.
Ik heb een script waar ik mijn database mee kan update.
Dit werkt perfect.
Alleen in mijn formulier worden de database waardes niet goed weergeven
Als er 2 woorden in de tabel staan word alleen het eerste woord weergeven.
Weet iemand hoe ik dat kan oplossen?
Want als ik nu bijvoorbeeld maar 1 regel wil aanpassen en een andere regel bevat bv Jan klaassen.
Veranderd dit in 'Jan'
Dit is mijn scipt:
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$sql = "SELECT * FROM `tabel' WHERE ID='1'";
$result = mysql_query( $sql, $db );
while( $row = mysql_fetch_array( $result )) {
echo "<form action=update.php method=post>";
echo "<table width=600 border=1>";
echo "<tr><td width=230 align=right><span class=style2>ID:</span></td>";
echo "<td width=370><input type=text name=ID value=" . $row['ID'] . "></td>";
echo "</tr><tr><td align=right><span class=style2>Regel1:</span></td>";
echo "<td><input type=text name=regel1 id=regel1 value=" . $row['regel1'] . " ></td>";
echo "</tr><tr><td align=right><span class=style2>Regel2</span></td>";
echo "<td><input type=text name=regel2 id=ragel2 value=" . $row['regel2'] . "></td>";
echo "</tr><tr><td align=right><span class=style2>Prijs:</span></td>";
echo "<td><input type=text name=prijs id=prijs value=" . $row['prijs'] . "></td>";
echo "</tr><td>" . "<input type=submit name=update value=update" . " </td>";
echo "<td>" . "<input type=hidden name=ID value=" . $row['ID'] . "</td>";
echo "</form>
</table>";
}
?>
$sql = "SELECT * FROM `tabel' WHERE ID='1'";
$result = mysql_query( $sql, $db );
while( $row = mysql_fetch_array( $result )) {
echo "<form action=update.php method=post>";
echo "<table width=600 border=1>";
echo "<tr><td width=230 align=right><span class=style2>ID:</span></td>";
echo "<td width=370><input type=text name=ID value=" . $row['ID'] . "></td>";
echo "</tr><tr><td align=right><span class=style2>Regel1:</span></td>";
echo "<td><input type=text name=regel1 id=regel1 value=" . $row['regel1'] . " ></td>";
echo "</tr><tr><td align=right><span class=style2>Regel2</span></td>";
echo "<td><input type=text name=regel2 id=ragel2 value=" . $row['regel2'] . "></td>";
echo "</tr><tr><td align=right><span class=style2>Prijs:</span></td>";
echo "<td><input type=text name=prijs id=prijs value=" . $row['prijs'] . "></td>";
echo "</tr><td>" . "<input type=submit name=update value=update" . " </td>";
echo "<td>" . "<input type=hidden name=ID value=" . $row['ID'] . "</td>";
echo "</form>
</table>";
}
?>
Gewijzigd op 15/11/2014 18:26:04 door Jurgen de Brouwer
En wat zegt een print_r() op $row?
Je begint een tabel binnen een form om diezelfde tabel buiten de form te beeindigen,
je gebruikt inline CSS wat behoorlijk achterhaald is, er is nagenoeg geen enkele quote gebruikt bij de id- en naam-waarden, er wordt nergens ingesprongen waardoor het overzicht totaal kwijt is.
Als ik print_r() doe krijg ik netjes alle informatie te zien.
Is de html zo beter?
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$sql = "SELECT * FROM `tabel` WHERE ID='1'";
$result = mysql_query( $sql, $db );
while( $row = mysql_fetch_array( $result )) {
echo "<form action=update.php method=post>";
echo "<table width='300' border='1' cellspacing='5' cellpadding='0'>";
echo "<tr><td>ID:</td>";
echo "<td><input type='text' name='ID' value=" . $row['ID'] . "></td>";
echo "</tr><tr><td>Regel 1:</td>";
echo "<td><input type='text' name='regel1' value=" . $row['regel1'] . ">";
echo "<tr><td>Regel 2:</td>";
echo "<td><input type='text' name='regel2' value=" . $row['regel2'] . "></td>";
echo "</tr><tr><td>Prijs:</td>";
echo "<td><input type='text' name='prijs' value=" . $row['prijs'] . "></td>";
echo "</tr><tr>";
echo "<td><input type='hidden' name='ID' value=" . $row['ID'] . "></td>";
echo "<td><input type='submit' name='update' value='update'> </td>";
echo "</tr></table>";
echo "</form>";
}
?>
$sql = "SELECT * FROM `tabel` WHERE ID='1'";
$result = mysql_query( $sql, $db );
while( $row = mysql_fetch_array( $result )) {
echo "<form action=update.php method=post>";
echo "<table width='300' border='1' cellspacing='5' cellpadding='0'>";
echo "<tr><td>ID:</td>";
echo "<td><input type='text' name='ID' value=" . $row['ID'] . "></td>";
echo "</tr><tr><td>Regel 1:</td>";
echo "<td><input type='text' name='regel1' value=" . $row['regel1'] . ">";
echo "<tr><td>Regel 2:</td>";
echo "<td><input type='text' name='regel2' value=" . $row['regel2'] . "></td>";
echo "</tr><tr><td>Prijs:</td>";
echo "<td><input type='text' name='prijs' value=" . $row['prijs'] . "></td>";
echo "</tr><tr>";
echo "<td><input type='hidden' name='ID' value=" . $row['ID'] . "></td>";
echo "<td><input type='submit' name='update' value='update'> </td>";
echo "</tr></table>";
echo "</form>";
}
?>
Bovendien zag ik op deze manier in één oogopslag dat er een </tr> ontbrakt na naam1.
Binnen HTML code moet je dubbelquotes gebruiken ipv enkelquotes.
Op de regel <form stonden helemaal geen quotes.
Code (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
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
<?php
$sql = "SELECT * FROM tabel WHERE ID=1 ";
$result = mysql_query( $sql, $db );
while( $row = mysql_fetch_array( $result )) {
echo <<<EOT
<form action="update.php" method="post">
<table width="300" border="1" cellspacing="5" cellpadding="0">
<tr>
<td>ID:</td>
<td><input type="text" name="ID" value="$row[ID]"></td>
</tr>
<tr>
<td>Regel 1:</td>
<td><input type="text" name="regel1" value="$row[regel1]">
</tr>
<tr>
<td>Regel 2:</td>
<td><input type="text" name="regel2" value="$row[regel2]"></td>
</tr>
<tr>
<td>Prijs:</td>
<td><input type="text" name="prijs" value="$row[prijs]"></td>
</tr>
<tr>
<td><input type="hidden" name="ID" value="$row[ID]"></td>
<td><input type="submit" name="update" value="update"></td>
</tr>
</table>
</form>
EOT;
}
?>
$sql = "SELECT * FROM tabel WHERE ID=1 ";
$result = mysql_query( $sql, $db );
while( $row = mysql_fetch_array( $result )) {
echo <<<EOT
<form action="update.php" method="post">
<table width="300" border="1" cellspacing="5" cellpadding="0">
<tr>
<td>ID:</td>
<td><input type="text" name="ID" value="$row[ID]"></td>
</tr>
<tr>
<td>Regel 1:</td>
<td><input type="text" name="regel1" value="$row[regel1]">
</tr>
<tr>
<td>Regel 2:</td>
<td><input type="text" name="regel2" value="$row[regel2]"></td>
</tr>
<tr>
<td>Prijs:</td>
<td><input type="text" name="prijs" value="$row[prijs]"></td>
</tr>
<tr>
<td><input type="hidden" name="ID" value="$row[ID]"></td>
<td><input type="submit" name="update" value="update"></td>
</tr>
</table>
</form>
EOT;
}
?>
Gewijzigd op 15/11/2014 20:54:24 door Pipo Clown
Jurgen de Brouwer op 15/11/2014 19:55:59:
Hoe zou ik dat anders kunnen doen als een while-loop?
Als ik print_r() doe krijg ik netjes alle informatie te zien.
Is de html zo beter?
Als ik print_r() doe krijg ik netjes alle informatie te zien.
Is de html zo beter?
Nou ik zag nog het één en ander
Code (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
94
95
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
<?php
// indien dit bestand in de POST methode wordt aangeroepen is het formulier verstuurd.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// GEBRUIK GEEN mysql_ meer maar gebruik mysqli_ of PDO !!!
// update de record in de tabel
$result = mysqli_query($db, "UPDATE tabel SET regel1='".mysqli_real_escape_string($_POST['regel1'])
."', regel2='".mysqli_real_escape_string($_POST['regel2'])
."', prijs='".mysqli_real_escape_string($_POST['prijs'])
."' WHERE id=".intval($_POST['id']));
if($result === FALSE)
throw new Exception('Update naar tabel mislukt.' . mysqli_error($db));
// optioneel voor een update is een redirect.
else
header('Location: index.php');
}
$id = $_GET['id'];
// query is het handigste tussen double quotes
$sql = "SELECT * FROM tabel WHERE ID=" . $id;
$result = mysqli_query($db, $sql);
// gebruik mysql_fetch_assoc()! mysql_fetch_array() gebruikt dubbel zoveel geheugen.
$row = mysqli_fetch_assoc($result);
/*
* als je zeker weet dat je niet meer dan één record
* krijgt vervang je de while gewoon voor een if.
* Bovendien heeft een record update geen zin als die
* niet bestaat dus dan maar een foutmelding geven.
*/
if($row === FALSE)
{
throw new Exception('Geen record gevonden met id '.$id. ' in de tabel.');
exit;
}
/*
* Na alle PHP logica komt de output. Dat kunnen we buiten de PHP tags doen
* De <form> attributen stonden niet tussen double qoutes en dat hoort wel.
* De action hou ik gewoon op de pagina zelf. Waarom weggaan zolang niet alles goed is?
* Singleton elementen zoals input en img sluit je af met /> en niet alleen met een >
*/
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.labels {
float:left;
line-height: 25px;
width: 70px;
background-color: #CCC;
}
.form {
float:left;
line-height: 25px;
width: 70px;
margin-left:3px;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<form action="" method="post"> <!-- waarom naar update.php? -->
<div class="labels">
<label for="id" >ID:</label><br>
<label for="regel1" >Regel 1:</label><br>
<label for="regel2" >Regel 2:</label><br>
<label for="prijs" >Prijs:</label>
</div>
<div class="form">
<input type="text" id="id" name="id" value="<?php echo $row['id']; ?>" /> <!-- singleton, dus /> -->
<input type="text" id="regel1" name="regel1" value="<?php echo $row['regel1']; ?>" />
<input type="text" id="regel2" name="regel2" value="<?php echo $row['regel2']; ?>" />
<input type="text" id="prijs" name="prijs" value="<?php echo $row['prijs']; ?>" />
<input type="hidden" name="id" value="<?php echo $row['id']; ?>" />
<input type="submit" value="update" />
</div>
<div class="clear"></div>
</form>
</body>
</html>
// indien dit bestand in de POST methode wordt aangeroepen is het formulier verstuurd.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// GEBRUIK GEEN mysql_ meer maar gebruik mysqli_ of PDO !!!
// update de record in de tabel
$result = mysqli_query($db, "UPDATE tabel SET regel1='".mysqli_real_escape_string($_POST['regel1'])
."', regel2='".mysqli_real_escape_string($_POST['regel2'])
."', prijs='".mysqli_real_escape_string($_POST['prijs'])
."' WHERE id=".intval($_POST['id']));
if($result === FALSE)
throw new Exception('Update naar tabel mislukt.' . mysqli_error($db));
// optioneel voor een update is een redirect.
else
header('Location: index.php');
}
$id = $_GET['id'];
// query is het handigste tussen double quotes
$sql = "SELECT * FROM tabel WHERE ID=" . $id;
$result = mysqli_query($db, $sql);
// gebruik mysql_fetch_assoc()! mysql_fetch_array() gebruikt dubbel zoveel geheugen.
$row = mysqli_fetch_assoc($result);
/*
* als je zeker weet dat je niet meer dan één record
* krijgt vervang je de while gewoon voor een if.
* Bovendien heeft een record update geen zin als die
* niet bestaat dus dan maar een foutmelding geven.
*/
if($row === FALSE)
{
throw new Exception('Geen record gevonden met id '.$id. ' in de tabel.');
exit;
}
/*
* Na alle PHP logica komt de output. Dat kunnen we buiten de PHP tags doen
* De <form> attributen stonden niet tussen double qoutes en dat hoort wel.
* De action hou ik gewoon op de pagina zelf. Waarom weggaan zolang niet alles goed is?
* Singleton elementen zoals input en img sluit je af met /> en niet alleen met een >
*/
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.labels {
float:left;
line-height: 25px;
width: 70px;
background-color: #CCC;
}
.form {
float:left;
line-height: 25px;
width: 70px;
margin-left:3px;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<form action="" method="post"> <!-- waarom naar update.php? -->
<div class="labels">
<label for="id" >ID:</label><br>
<label for="regel1" >Regel 1:</label><br>
<label for="regel2" >Regel 2:</label><br>
<label for="prijs" >Prijs:</label>
</div>
<div class="form">
<input type="text" id="id" name="id" value="<?php echo $row['id']; ?>" /> <!-- singleton, dus /> -->
<input type="text" id="regel1" name="regel1" value="<?php echo $row['regel1']; ?>" />
<input type="text" id="regel2" name="regel2" value="<?php echo $row['regel2']; ?>" />
<input type="text" id="prijs" name="prijs" value="<?php echo $row['prijs']; ?>" />
<input type="hidden" name="id" value="<?php echo $row['id']; ?>" />
<input type="submit" value="update" />
</div>
<div class="clear"></div>
</form>
</body>
</html>
Gewijzigd op 15/11/2014 22:00:33 door Frank Nietbelangrijk
Code (php)
1
* Singleton elementen zoals input en img sluit je af met /> en niet alleen met een > */
Is niet nodig. Het mag wel, zodat het gelijk is aan X(HT)ML, maar het is in HTML(5) niet nodig. Ook in andere versies (4 bijvoorbeeld) niet nodig.
Voor de rest: veel beter. Al is $id = $_GET['id'] niet echt handig. Wat als die niet bestaat? En het is nu nutteloos kopieren. Gooi er dan tenminste nog een intval() overheen.
p.s. Ik wist niet waar $id vandaan kwam dus gaf er wat dat betreft maar even een slinger aan :-)
Weer veel van geleerd.
Alleen als ik de code gebruik van frank.
Word de datebase niet bijgewerkt.
Krijg ook geen fout meldingen
Hij was niet getest :-) Maar als je hem een beetje compleet plaatst kunnen we nog eens meekijken.
Heb alleen tegen het weekend tijd om te hobbye.
Ik heb zelf een oplossing gevonden.
Dit is het script:
Code (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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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
<?php
error_reporting(E_ALL);
session_start();
require_once("info.php");
$db = mysqli_connect ($host, $user, $password) or die ("Kan geen verbinding maken met de database ");
mysqli_select_db($db, $dbnaam) or die ($fout);
// indien dit bestand in de POST methode wordt aangeroepen is het formulier verstuurd.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// GEBRUIK GEEN mysql_ meer maar gebruik mysqli_ of PDO !!!
// update de record in de tabel
$regel1 = $_POST['regel1'];
$regel2 = $_POST['regel2'];
$prijs = $_POST['prijs'];
$id = $_POST['ID'];
$result = mysqli_query($db, "UPDATE tabel
SET
regel1 = '$regel1',
regel2 = '$regel2',
prijs = '$prijs'
WHERE
ID = '$id'");
if($result === FALSE)
throw new Exception('Update naar tabel mislukt.' . mysqli_error($db));
// optioneel voor een update is een redirect.
else
echo('Reclame Bijgewerkt!');
}
// query is het handigste tussen double quotes
$sql = "SELECT * FROM middelbeers WHERE ID=1";
$result = mysqli_query($db, $sql);
// gebruik mysql_fetch_assoc()! mysql_fetch_array() gebruikt dubbel zoveel geheugen.
$row = mysqli_fetch_assoc($result);
/*
* als je zeker weet dat je niet meer dan één record
* krijgt vervang je de while gewoon voor een if.
* Bovendien heeft een record update geen zin als die
* niet bestaat dus dan maar een foutmelding geven.
*/
if($row === FALSE)
{
throw new Exception('Geen record gevonden in de tabel.');
exit;
}
/*
* Na alle PHP logica komt de output. Dat kunnen we buiten de PHP tags doen
* De <form> attributen stonden niet tussen double qoutes en dat hoort wel.
* De action hou ik gewoon op de pagina zelf. Waarom weggaan zolang niet alles goed is?
* Singleton elementen zoals input en img sluit je af met /> en niet alleen met een >
*/
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.labels {
float:left;
line-height: 25px;
width: 70px;
background-color: #CCC;
}
.form {
float:left;
line-height: 25px;
width: 70px;
margin-left:3px;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<form action="" method="post"> <!-- waarom naar update.php? -->
<div class="labels">
<label for="id" >ID:</label><br>
<label for="regel1" >Regel 1:</label><br>
<label for="regel2" >Regel 2:</label><br>
<label for="prijs" >Prijs:</label>
</div>
<div class="form">
<input type="text" id="ID" name="ID" value="<?php echo $row['ID']; ?>" /> <!-- singleton, dus /> -->
<input type="text" id="regel1" name="regel1" value="<?php echo $row['regel1']; ?>" />
<input type="text" id="regel2" name="regel2" value="<?php echo $row['regel2']; ?>" />
<input type="text" id="prijs" name="prijs" value="<?php echo $row['prijs']; ?>" />
<input type="hidden" name="ID" value="<?php echo $row['ID']; ?>" />
<input type="submit" value="update" />
</div>
<div class="clear"></div>
</form>
</body>
</html>
error_reporting(E_ALL);
session_start();
require_once("info.php");
$db = mysqli_connect ($host, $user, $password) or die ("Kan geen verbinding maken met de database ");
mysqli_select_db($db, $dbnaam) or die ($fout);
// indien dit bestand in de POST methode wordt aangeroepen is het formulier verstuurd.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// GEBRUIK GEEN mysql_ meer maar gebruik mysqli_ of PDO !!!
// update de record in de tabel
$regel1 = $_POST['regel1'];
$regel2 = $_POST['regel2'];
$prijs = $_POST['prijs'];
$id = $_POST['ID'];
$result = mysqli_query($db, "UPDATE tabel
SET
regel1 = '$regel1',
regel2 = '$regel2',
prijs = '$prijs'
WHERE
ID = '$id'");
if($result === FALSE)
throw new Exception('Update naar tabel mislukt.' . mysqli_error($db));
// optioneel voor een update is een redirect.
else
echo('Reclame Bijgewerkt!');
}
// query is het handigste tussen double quotes
$sql = "SELECT * FROM middelbeers WHERE ID=1";
$result = mysqli_query($db, $sql);
// gebruik mysql_fetch_assoc()! mysql_fetch_array() gebruikt dubbel zoveel geheugen.
$row = mysqli_fetch_assoc($result);
/*
* als je zeker weet dat je niet meer dan één record
* krijgt vervang je de while gewoon voor een if.
* Bovendien heeft een record update geen zin als die
* niet bestaat dus dan maar een foutmelding geven.
*/
if($row === FALSE)
{
throw new Exception('Geen record gevonden in de tabel.');
exit;
}
/*
* Na alle PHP logica komt de output. Dat kunnen we buiten de PHP tags doen
* De <form> attributen stonden niet tussen double qoutes en dat hoort wel.
* De action hou ik gewoon op de pagina zelf. Waarom weggaan zolang niet alles goed is?
* Singleton elementen zoals input en img sluit je af met /> en niet alleen met een >
*/
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.labels {
float:left;
line-height: 25px;
width: 70px;
background-color: #CCC;
}
.form {
float:left;
line-height: 25px;
width: 70px;
margin-left:3px;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<form action="" method="post"> <!-- waarom naar update.php? -->
<div class="labels">
<label for="id" >ID:</label><br>
<label for="regel1" >Regel 1:</label><br>
<label for="regel2" >Regel 2:</label><br>
<label for="prijs" >Prijs:</label>
</div>
<div class="form">
<input type="text" id="ID" name="ID" value="<?php echo $row['ID']; ?>" /> <!-- singleton, dus /> -->
<input type="text" id="regel1" name="regel1" value="<?php echo $row['regel1']; ?>" />
<input type="text" id="regel2" name="regel2" value="<?php echo $row['regel2']; ?>" />
<input type="text" id="prijs" name="prijs" value="<?php echo $row['prijs']; ?>" />
<input type="hidden" name="ID" value="<?php echo $row['ID']; ?>" />
<input type="submit" value="update" />
</div>
<div class="clear"></div>
</form>
</body>
</html>
Wat is het voordeel van een mysqli_real_escape_string zoals in jullie voorbeeld gebruikt word?
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 21/11/2014 13:39:20 door - Ariën -
Volgens mij heb jij de foutmeldingen niet aan staan. Zet dit dan altijd bovenaan in je script:
Op regel vijf mag je direct de database selecteren:
Dit is anders ten opzichte van de mysql_ functies.
Regel 7 mag dan ook komen te vervallen.
Verder staat er op regel 21 nog UPDATE tabel in plaats van UPDATE middelbeers.
Als ik dit script:
Code (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
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
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once("info.php");
$db = mysqli_connect ($host, $user, $password, $dbnaam) or die ("Kan geen verbinding maken met de database ");
// indien dit bestand in de POST methode wordt aangeroepen is het formulier verstuurd.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// GEBRUIK GEEN mysql_ meer maar gebruik mysqli_ of PDO !!!
$result = mysqli_query($db, "UPDATE middelbeers SET regel1='".mysqli_real_escape_string($_POST['regel1'])
."', regel2='".mysqli_real_escape_string($_POST['regel2'])
."', prijs='".mysqli_real_escape_string($_POST['prijs'])
."' WHERE id=".intval($_POST['id']));
if($result === FALSE)
throw new Exception('Update naar tabel mislukt.' . mysqli_error($db));
// optioneel voor een update is een redirect.
else
echo('Reclame Bijgewerkt!');
}
$sql = "SELECT * FROM middelbeers WHERE ID=1";
$result = mysqli_query($db, $sql);
// gebruik mysql_fetch_assoc()! mysql_fetch_array() gebruikt dubbel zoveel geheugen.
$row = mysqli_fetch_assoc($result);
if($row === FALSE)
{
throw new Exception('Geen record gevonden in de tabel.');
exit;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.labels {
float:left;
line-height: 25px;
width: 70px;
background-color: #CCC;
}
.form {
float:left;
line-height: 25px;
width: 70px;Zaz
margin-left:3px;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<form action="" method="post"> <!-- waarom naar update.php? -->
<div class="labels">
<label for="id" >ID:</label><br>
<label for="regel1" >Regel 1:</label><br>
<label for="regel2" >Regel 2:</label><br>
<label for="prijs" >Prijs:</label>
</div>
<div class="form">
<input type="text" id="ID" name="ID" value="<?php echo $row['ID']; ?>" /> <!-- singleton, dus /> -->
<input type="text" id="regel1" name="regel1" value="<?php echo $row['regel1']; ?>" />
<input type="text" id="regel2" name="regel2" value="<?php echo $row['regel2']; ?>" />
<input type="text" id="prijs" name="prijs" value="<?php echo $row['prijs']; ?>" />
<textarea type="text" rows="5" cols="50" id-"test" name="test"><?php echo $row['test']; ?></textarea>
<input type="hidden" name="ID" value="<?php echo $row['ID']; ?>" />
<input type="submit" value="update" />
</div>
<div class="clear"></div>
</form>
</body>
</html>
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once("info.php");
$db = mysqli_connect ($host, $user, $password, $dbnaam) or die ("Kan geen verbinding maken met de database ");
// indien dit bestand in de POST methode wordt aangeroepen is het formulier verstuurd.
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// GEBRUIK GEEN mysql_ meer maar gebruik mysqli_ of PDO !!!
$result = mysqli_query($db, "UPDATE middelbeers SET regel1='".mysqli_real_escape_string($_POST['regel1'])
."', regel2='".mysqli_real_escape_string($_POST['regel2'])
."', prijs='".mysqli_real_escape_string($_POST['prijs'])
."' WHERE id=".intval($_POST['id']));
if($result === FALSE)
throw new Exception('Update naar tabel mislukt.' . mysqli_error($db));
// optioneel voor een update is een redirect.
else
echo('Reclame Bijgewerkt!');
}
$sql = "SELECT * FROM middelbeers WHERE ID=1";
$result = mysqli_query($db, $sql);
// gebruik mysql_fetch_assoc()! mysql_fetch_array() gebruikt dubbel zoveel geheugen.
$row = mysqli_fetch_assoc($result);
if($row === FALSE)
{
throw new Exception('Geen record gevonden in de tabel.');
exit;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
.labels {
float:left;
line-height: 25px;
width: 70px;
background-color: #CCC;
}
.form {
float:left;
line-height: 25px;
width: 70px;Zaz
margin-left:3px;
}
.clear {
clear:both;
}
</style>
</head>
<body>
<form action="" method="post"> <!-- waarom naar update.php? -->
<div class="labels">
<label for="id" >ID:</label><br>
<label for="regel1" >Regel 1:</label><br>
<label for="regel2" >Regel 2:</label><br>
<label for="prijs" >Prijs:</label>
</div>
<div class="form">
<input type="text" id="ID" name="ID" value="<?php echo $row['ID']; ?>" /> <!-- singleton, dus /> -->
<input type="text" id="regel1" name="regel1" value="<?php echo $row['regel1']; ?>" />
<input type="text" id="regel2" name="regel2" value="<?php echo $row['regel2']; ?>" />
<input type="text" id="prijs" name="prijs" value="<?php echo $row['prijs']; ?>" />
<textarea type="text" rows="5" cols="50" id-"test" name="test"><?php echo $row['test']; ?></textarea>
<input type="hidden" name="ID" value="<?php echo $row['ID']; ?>" />
<input type="submit" value="update" />
</div>
<div class="clear"></div>
</form>
</body>
</html>
krijg ik de volgende fout meldingen:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in F:\PHP\data\localweb\MYSQL\update1.php on line 14
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in F:\PHP\data\localweb\MYSQL\update1.php on line 15
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in F:\PHP\data\localweb\MYSQL\update1.php on line 16
Notice: Undefined index: id in F:\PHP\data\localweb\MYSQL\update1.php on line 17
Gewijzigd op 21/11/2014 14:43:29 door - Ariën -
- Over de meldingen over mysqli_real_escape_string, je dient twee parameters op te geven. De eerste verwijst naar de variabele van je connectie, en de tweede bevat je input, zoals je nu gebruikt.
- Verder lijkt er geen 'id' mee te zijn gekomen via je $_POST.
Gewijzigd op 21/11/2014 14:46:55 door - Ariën -
Of ook wel:
Volgens mij kan je dit btw ook op google vinden...
Wat denk je dat ik al 3 uur aan het doen ben?
Ik zeg GOOGLe weet alles.
Maar ik kon het effe niet vinden.
Bedankt