MYSQL data - retrieven + update
Pagina: « vorige 1 2 3 volgende »
Gewijzigd op 01/01/1970 01:00:00 door jerry
hmm had misschien beter een nieuwe topic moeten starten voor de tweede vraag
Als je ergens een link wilt weergeven, lees je gewoon het id uit uit de database en maak je met behulp van die variabele een url.
ps. Normaal gesproken sla je helemaal geen html code op in de database. De database gebruik je alleen voor data en daar is de opmaak niet van belang.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
[later in de topic wordt me vraag duidelijker namelijk )
Gewijzigd op 01/01/1970 01:00:00 door jerry
In plaats van $postid gebruik je dus $uitvoer['postid'] aangezien de waarde uit de database komt...
Blanche schreef op 20.10.2007 17:39:
Zorg dat je in de link om een bericht te wijzigen direct al het juiste id meegeeft. Dit juiste id lees je tegelijkertijd met de weer te geven berichten uit uit de database en kun je dus gewoon in de link zetten.
In plaats van $postid gebruik je dus $uitvoer['postid'] aangezien de waarde uit de database komt...
In plaats van $postid gebruik je dus $uitvoer['postid'] aangezien de waarde uit de database komt...
waar moet ik ditprecies doen
want in mijn berichten.php heb ik al
al echo $uitvoer['postid']
zo zie ik welk nummertje elke post heeft
maar hoe zorg ik ervoor dan dat elke link van "verander bericht" naar de juiste id linkt...
zonder dit handmatig elke keer te doen
dit moet volgens mij verbeterd worden :
'<a href=\"bericht.php?$_GET[postid]\">'
Gewijzigd op 01/01/1970 01:00:00 door jerry
Zoiets zal dat worden.
En vervolgens kun je op wijzig.php het id uit de url uitlezen met $_GET['id'] en vervolgens de gegevens van dat bericht uit de database ophalen.
Ok bedankt zal het morgen even gelijk proberen!
bijvoorbeeld
wijzig.php?id=45
dat is dus goed
ik heb nu een wijzig.php aangemaakt
wat lijkt op nieuw_bericht.php
hoe zorg ik ervoor
dat de juiste gegevens worden geladen in de forms
en de nieuwe gegevens in de database worden gepropt
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
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
<?php
include ("db.php");
if($_SESSION['id']) {
?>
<?php
if (!isset($_POST['submit'])) {
?>
<?php
$titel = $_GET['titel'];
$bericht = $_GET['bericht'];
?>
<form id="berichtformulier" action="" method="post">
<fieldset id="date">
<legend>Titel</legend>
<input name="titel" id="titel" type="text"
tabindex="1" value="<?php echo "$titel" ?>">
<br />
</fieldset>
<fieldset id="mssg">
<legend>Bericht</legend>
<textarea name="bericht" cols="40" rows="10" value="<?php echo "$bericht" ?>">
</textarea>
</fieldset>
<input type="submit" name="submit" value="Verzenden!">
<input type="reset" name="reset" value="Reset!">
</form>
<?php
} else {
$titel = htmlentities(strip_tags($_POST['titel']));
$bericht = htmlspecialchars($_POST["bericht"]);
$datum = date("Y-m-d H:i:s");
$url = $_POST['postid'];
$sql = mysql_query("INSERT INTO `posts` (auteur, titel, datum, bericht, url) VALUES ('".$_SESSION['gebruikersnaam']."', '$titel', '$datum', '$bericht', '<a href=\"bericht.php?$_GET[postid]\">')");
}
}
?>
include ("db.php");
if($_SESSION['id']) {
?>
<?php
if (!isset($_POST['submit'])) {
?>
<?php
$titel = $_GET['titel'];
$bericht = $_GET['bericht'];
?>
<form id="berichtformulier" action="" method="post">
<fieldset id="date">
<legend>Titel</legend>
<input name="titel" id="titel" type="text"
tabindex="1" value="<?php echo "$titel" ?>">
<br />
</fieldset>
<fieldset id="mssg">
<legend>Bericht</legend>
<textarea name="bericht" cols="40" rows="10" value="<?php echo "$bericht" ?>">
</textarea>
</fieldset>
<input type="submit" name="submit" value="Verzenden!">
<input type="reset" name="reset" value="Reset!">
</form>
<?php
} else {
$titel = htmlentities(strip_tags($_POST['titel']));
$bericht = htmlspecialchars($_POST["bericht"]);
$datum = date("Y-m-d H:i:s");
$url = $_POST['postid'];
$sql = mysql_query("INSERT INTO `posts` (auteur, titel, datum, bericht, url) VALUES ('".$_SESSION['gebruikersnaam']."', '$titel', '$datum', '$bericht', '<a href=\"bericht.php?$_GET[postid]\">')");
}
}
?>
Volgens mij moet de volgorde worden aangepast
Eerst connectie met de database, dan de juiste tabel selecteren, initialisatie van de variabelen, form (echo de juiste titel en bericht) en dan een sql query om te updaten.
Gewijzigd op 01/01/1970 01:00:00 door jerry
- Controleer of er een formulier naar de pagina gepost is ($_SERVER['REQUEST_METHOD'] == POST) want dan heeft de gebruiker gegevens gewijzigd en moet de database geupdate worden.
- Zo niet, haal het id op uit de URL ($_GET['id']) en voer een SELECT query uit om de huidige gegevens uit de database te halen.
- Maak het formulier waar je bij de value attributen de juiste waarden uit de database invult.
- Als het formulier verzonden is, voer een update query met de nieuwe waarden uit. Zorg dat je id uit de url voor het verzenden in een sessievariabele hebt gezet, zodat je weet over welk record het gaat.
ps. Begin al je scripts met
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Blanche schreef op 22.10.2007 13:58:
Stappenplan:
- Controleer of er een formulier naar de pagina gepost is ($_SERVER['REQUEST_METHOD'] == POST) want dan heeft de gebruiker gegevens gewijzigd en moet de database geupdate worden.
- Zo niet, haal het id op uit de URL ($_GET['id']) en voer een SELECT query uit om de huidige gegevens uit de database te halen.
- Maak het formulier waar je bij de value attributen de juiste waarden uit de database invult.
- Als het formulier verzonden is, voer een update query met de nieuwe waarden uit. Zorg dat je id uit de url voor het verzenden in een sessievariabele hebt gezet, zodat je weet over welk record het gaat.
ps. Begin al je scripts met
- Controleer of er een formulier naar de pagina gepost is ($_SERVER['REQUEST_METHOD'] == POST) want dan heeft de gebruiker gegevens gewijzigd en moet de database geupdate worden.
- Zo niet, haal het id op uit de URL ($_GET['id']) en voer een SELECT query uit om de huidige gegevens uit de database te halen.
- Maak het formulier waar je bij de value attributen de juiste waarden uit de database invult.
- Als het formulier verzonden is, voer een update query met de nieuwe waarden uit. Zorg dat je id uit de url voor het verzenden in een sessievariabele hebt gezet, zodat je weet over welk record het gaat.
ps. Begin al je scripts met
hmm ok wel lastig, maar ga het straks ff proberen
Ik heb 2 probleempjes,
ik krijg de waarden van heel me database terug in formpjes nu, dus al ik 5 berichten heb gepost, en wil gaan editen krijg ik 5 formpjes titel, 5 formpjes bericht. Hij moet de waardes geven van de juiste post id die ik wil bewerken,
Dat ligt aan me query ik moet aan die passen ik heb het al geprobeerd te limiteren of
$sql = "SELECT titel, bericht FROM posts WHERE postid = " . $postid;
te doen
maar dat werkt niet, als ik die gebruik, krijg ik niet eens een query en mijn form is dan ook opeens weg.
ook zodra ik nieuwe gegevens in vul en op verzenden klik worden de gegevens van me database niet overgeschreven wie o wie helpt.
hier de wijzig.php code
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
111
112
113
114
115
116
117
118
119
120
121
122
123
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
<?php
session_start();
if($_SESSION['id'])
{
echo "<p>Pas bericht aan. Je bent ingelogd als: \"" . $_SESSION['gebruikersnaam'] . "\"</p>";
echo "<p>Klik <a href=\"logout.php\">hier</a> om af te melden!</p>";
echo "<p>Klik <a href=\"admin.php\">hier</a> om terug te gaan naar het hoofdmenu</p>";
}
else
{
echo "<p>Klik <a href=\"admin.php\">hier</a> om je aan te melden!</p>";}
?>
<html>
<head>
<title>Wijzig bericht</title>
<link rel="stylesheet" type="text/css" href="css/post.css" />
</head>
<body>
<?php
include ("db.php");
if($_SESSION['id']) {
$postid = $_GET['postid'];
$sql = "SELECT titel, bericht FROM posts ORDER by postid DESC";
// $sql = "SELECT titel, bericht FROM posts WHERE postid = " . $postid;
$query = mysql_query( $sql )
or die( mysql_error() );
// Controleren of er resultaten zijn:
if( mysql_num_rows( $query ) == 0 ){ echo "De tabel is leeg.";
}else
{
// While maken
while ($row = mysql_fetch_assoc($query)) {
$titels[$row['titel']] = $row['bericht'];
}
{
?>
<?php
if (!isset($_POST['submit'])) {
?>
<form id="berichtformulier" action="" method="post">
<fieldset id="date">
<legend>Titel</legend>
<?php
foreach($titels AS $titel => $bericht)
{
echo
'<input name="titel" id="titel" type="text"
tabindex="1" value="' . $titel . '">';
}
?>
<br />
</fieldset>
<fieldset id="mssg">
<legend>Bericht</legend>
<?php
foreach($titels AS $titel => $bericht)
{
echo '<textarea name="bericht" cols="40" rows="10" id="bericht"> '. $bericht .' </textarea>'; }?>
</textarea>
</fieldset>
<input type="submit" name="submit" value="Verzenden!">
<input type="reset" name="reset" value="Reset!">
</form>
<?php
} else {
$titel = mysql_real_escape_string($_POST['titel']);
$bericht = htmlspecialchars($_POST["bericht"]);
$sql = mysql_query("UPDATE posts SET='$titel', '$bericht' WHERE postid='$postid'");
echo "Het bericht heeft nu een update gekregen! Wil je een nieuw bericht schrijven klik dan <a href=\"nieuw_bericht.php\">hier</a> <br/>
of <a href=\"..\"index.php\">bekijk</a> de home page opnieuw!";
}
}
}
}
?>
</body>
</html>
session_start();
if($_SESSION['id'])
{
echo "<p>Pas bericht aan. Je bent ingelogd als: \"" . $_SESSION['gebruikersnaam'] . "\"</p>";
echo "<p>Klik <a href=\"logout.php\">hier</a> om af te melden!</p>";
echo "<p>Klik <a href=\"admin.php\">hier</a> om terug te gaan naar het hoofdmenu</p>";
}
else
{
echo "<p>Klik <a href=\"admin.php\">hier</a> om je aan te melden!</p>";}
?>
<html>
<head>
<title>Wijzig bericht</title>
<link rel="stylesheet" type="text/css" href="css/post.css" />
</head>
<body>
<?php
include ("db.php");
if($_SESSION['id']) {
$postid = $_GET['postid'];
$sql = "SELECT titel, bericht FROM posts ORDER by postid DESC";
// $sql = "SELECT titel, bericht FROM posts WHERE postid = " . $postid;
$query = mysql_query( $sql )
or die( mysql_error() );
// Controleren of er resultaten zijn:
if( mysql_num_rows( $query ) == 0 ){ echo "De tabel is leeg.";
}else
{
// While maken
while ($row = mysql_fetch_assoc($query)) {
$titels[$row['titel']] = $row['bericht'];
}
{
?>
<?php
if (!isset($_POST['submit'])) {
?>
<form id="berichtformulier" action="" method="post">
<fieldset id="date">
<legend>Titel</legend>
<?php
foreach($titels AS $titel => $bericht)
{
echo
'<input name="titel" id="titel" type="text"
tabindex="1" value="' . $titel . '">';
}
?>
<br />
</fieldset>
<fieldset id="mssg">
<legend>Bericht</legend>
<?php
foreach($titels AS $titel => $bericht)
{
echo '<textarea name="bericht" cols="40" rows="10" id="bericht"> '. $bericht .' </textarea>'; }?>
</textarea>
</fieldset>
<input type="submit" name="submit" value="Verzenden!">
<input type="reset" name="reset" value="Reset!">
</form>
<?php
} else {
$titel = mysql_real_escape_string($_POST['titel']);
$bericht = htmlspecialchars($_POST["bericht"]);
$sql = mysql_query("UPDATE posts SET='$titel', '$bericht' WHERE postid='$postid'");
echo "Het bericht heeft nu een update gekregen! Wil je een nieuw bericht schrijven klik dan <a href=\"nieuw_bericht.php\">hier</a> <br/>
of <a href=\"..\"index.php\">bekijk</a> de home page opnieuw!";
}
}
}
}
?>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door jerry
Zet dit verder nou eens bovenaan je script en kijk welke foutmeldingen er gegeven worden:
ps. Volgens mij heb ik ook al eerder gezegd dat je htmlentities() niet gebruikt voordat je data naar de database wegschrijft, dat slaat namelijk nergens op. Gebruik mysql_real_escape_string() vooraf en htmlentities() enkel achteraf als je wilt dat de html niet uitgevoerd maar op het scherm getoond wordt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Notice: Undefined index: postid in wijzig.php on line 43
Op dit moment moet volgens jouw script de url er zo uit zien:
wijzig.php?postid=1
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
$postid = $_GET['postid'];
ps. Bovendien heeft zo'n uitdrukking helemaal geen meerwaarde. Waarom een kopie maken van $_GET['postid'] terwijl je helemaal niets aan de variabele veranderd. Gebruik gewoon $_GET['postid'] ipv $postid. (Zorg natuurlijk wel dat $_GET['postid'] bestaat).
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Blanche schreef op 23.10.2007 14:35:
Ja dat is juist het probleem. $_GET['postid'] bestaat niet, dus blijkbaar zal die variabele niet in de URL aanwezig zijn, of wellicht onder een andere naam.
hoe moet ik dit precies oplossen
ik bedoel hoe zorg ik ervoor dat
$_GET['postid']
bestaat
me berichten kan ik bereiken door berichten.php
en in me database
posts
uit
postid
auteur
titel
bericht
url
Gewijzigd op 01/01/1970 01:00:00 door jerry
In een eerdere post zeg je dat er onder elke post een link komt te staan van het volgende formaat:
wijzig.php?id=45
Op wijzig.php kun je het id dus uitlezen met $_GET['id'] en niet met $_GET['postid']. Deze laatste variabele bestaat immers helemaal niet! En dat is precies waarom jij die foutmelding krijgt en je script niet werkt....
Blanche schreef op 23.10.2007 14:42:
Door de benodigde variabele in de url op te nemen, of juist uit te lezen misschien?!
In een eerdere post zeg je dat er onder elke post een link komt te staan van het volgende formaat:
wijzig.php?id=45
Op wijzig.php kun je het id dus uitlezen met $_GET['id'] en niet met $_GET['postid']. Deze laatste variabele bestaat immers helemaal niet! En dat is precies waarom jij die foutmelding krijgt en je script niet werkt....
In een eerdere post zeg je dat er onder elke post een link komt te staan van het volgende formaat:
wijzig.php?id=45
Op wijzig.php kun je het id dus uitlezen met $_GET['id'] en niet met $_GET['postid']. Deze laatste variabele bestaat immers helemaal niet! En dat is precies waarom jij die foutmelding krijgt en je script niet werkt....
Kan jij mijn script is verbeteren zo dat ik goed kan zien wat ik precies fout doet.
Want ik snap het nog steeds niet.
Ik krijg als error dat postid niet bestaat
Terwijl elke post een postid heeft en wordt opgeslagen.
Ik kan $postid = $_GET['id']; wel doen, als ik die dan echo krijg ik de juiste id van de post weer..:)
Maar wat is precies de juiste query voor mijn probleempje
Gewijzigd op 01/01/1970 01:00:00 door jerry