[SOLVED] intval ID posten in database vraag
Op mijn website moeten bezoekers de mogelijkheid hebben om te reageren om mijn blogs. Ik ondervind problemen met het plaatsen van een reactie omdat ik werk met: ".intval($_GET['ID'])."
Structuur van de website:
Op de index pagina staan maximaal 4 previews van de blogs.
Als je de blog helemaal wilt lezen, dan moet je op een link klikken.
Omdat elke blog een ID heeft en de pagina waarop je de blog kan lezen universeel is, ben ik erachter gekomen, dankzij phphulp.nl dat ik het volgende moest gebruiken.
Met de onderstaande code vraag ik de juiste blog op uit de database:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# Query uitvoeren
$Query =
("
SELECT ID, Titel, Author, Date, Preview, Bericht
FROM blog
WHERE ID = '".intval($_GET['ID'])."'
");
$Query =
("
SELECT ID, Titel, Author, Date, Preview, Bericht
FROM blog
WHERE ID = '".intval($_GET['ID'])."'
");
In de database worden de reacties niet geordend, om toch de juiste reacties bij de juiste blog te plaatsen, zou ik een Blogid moeten gebruiken.
Bij het opvragen van de reacties onderaan de blog worden dan alleen de juiste reacties gefilterd met:
Nu is mijn vraag hoe ik deze intval moet posten in mijn database... want ik gebruik het onderstaande om mijn reacties te plaatsen.
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
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
<?PHP
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Datum']) && $_POST['Datum'] != '')
{
/* Kijken of er een ID is ingevuld. hier moet dus iets onder... maar wat?!*/
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Bericht']) && $_POST['Bericht'] != '')
{
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
reacties
(
Naam,
Date,
Blogid,
Bericht
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Bericht'])."'
)
";
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo 'Er is een fout opgetreden met het aanmaken van jouw bericht, <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Bericht is succesvol aangemaakt. */
echo '<p>Bericht succesvol aangemaakt!</p>';
}
}
else
{
/* bericht is niet geldig. */
echo 'U heeft geen bericht ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen id ingevuld. */
echo 'Er is geen ID ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen Datum ingevuld. */
echo 'U heeft geen datum ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen naam ingevuld. */
echo 'U heeft geen Naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Datum']) && $_POST['Datum'] != '')
{
/* Kijken of er een ID is ingevuld. hier moet dus iets onder... maar wat?!*/
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Bericht']) && $_POST['Bericht'] != '')
{
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
reacties
(
Naam,
Date,
Blogid,
Bericht
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Bericht'])."'
)
";
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo 'Er is een fout opgetreden met het aanmaken van jouw bericht, <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Bericht is succesvol aangemaakt. */
echo '<p>Bericht succesvol aangemaakt!</p>';
}
}
else
{
/* bericht is niet geldig. */
echo 'U heeft geen bericht ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen id ingevuld. */
echo 'Er is geen ID ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen Datum ingevuld. */
echo 'U heeft geen datum ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen naam ingevuld. */
echo 'U heeft geen Naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>
Kan iemand mij helpen?
Gewijzigd op 01/01/1970 01:00:00 door Stef van de Ven
Die intval hoort in je query.
Ik snap je vraag dan ook niet helemaal, wat is nu precies je probleem?
Ik probeer gegevens (de reacties) in de database te plaatsen.
De reacties worden geplaatst in tabel: reacties. (dus ik heb geen aparte tabel voor reacties voor elke blog apart)
Om toch te weten welke reactie bij welke blog hoort, heb ik een rij in de tabel genaamd: Blogid.
Als je een reactie plaats bij, bijvoorbeeld: blog id15, dan moet er bij de reactie in de database in de rij Blogid: '15' staan.
Het posten van de ID van de blog, bij het plaatsen van een reactie, dat lukt me nu juist niet.
De enige manier waarop je de ID van de blog kan achterhalen is door te kijken naar de intval. In mijn URL staat bijvoorbeeld: 'blog.php?ID=15'.
Blog ID nummer 15.
Je kan D.M.V de URL achterhalen welke blog geopend moet worden, nu moet ik alleen nog maar mijn reactie post scriptje laten weten welk ID hij moet posten in de rij blogid van de reactie.
Ik weet niet hoe ik dit moet doen...
Mr.Ark schreef op 17.01.2010 22:06:
Die intval hoort in je query.
Hoe zou ik dit moeten doen dan?
Ik weet niet hoe ik dat op moet schrijven in php...
Gewijzigd op 01/01/1970 01:00:00 door Stef van de Ven
Maar om het id uit de url te halen, kun je in jouw geval eenvoudig $_GET['ID'] gebruiken. Voordat je die variabele in een query gebruikt, controleer je wel of het een integer is met bijvoorbeeld ctype_digit(). Als dat het geval is, kun je hem veilig in je INSERT query gebruiken.
Kan je laten zien hoe ik het dan in mijn code zou kunnen zetten, want ik begrijp niet helemaal wat je bedoeld.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if(isset($_GET['ID']) && ctype_digit($_GET['ID'])) {
// $_GET['ID'] bevat een geldig blog id
// Insert query om reactie in te voegen:
$sql = "INSERT INTO ...";
}
?>
if(isset($_GET['ID']) && ctype_digit($_GET['ID'])) {
// $_GET['ID'] bevat een geldig blog id
// Insert query om reactie in te voegen:
$sql = "INSERT INTO ...";
}
?>
Dit is de controle die je uit zou kunnen voeren om het blog id te achterhalen en verifieren. Dit zul je uiteraard verder moeten verwerken in je eigen script.
als het orderen niet goed gaat moet je ORDER BY DESC of ASC gebruiken...
Jurriensz schreef op 17.01.2010 23:20:
Deze reactie snap ik niet? Nergens in het topic wordt toch gesproken over een probleem met het sorteren van de data?als het orderen niet goed gaat moet je ORDER BY DESC of ASC gebruiken...
Wat ik me afvraag, hoe weet het script wat het ID zou moeten zijn?
Er wordt wel gebruik gemaakt van GET functie, maar waar haalt hij het dan vandaan?
Mijn code ziet er nu als volgt uit:
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
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
<?php
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Datum']) && $_POST['Datum'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Reactie']) && $_POST['Reactie'] != '')
{
if(isset($_GET['ID']) && ctype_digit($_GET['ID'])) {
// $_GET['ID'] bevat een geldig blog id
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
reacties
(
Naam,
Datum,
Reactie,
Blogid
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Reactie'])."',
'".mysql_real_escape_string($_POST['Blogid'])."'
)
";
}
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo 'Er is een fout opgetreden met het aanmaken van jouw bericht, <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Bericht is succesvol aangemaakt. */
echo '<p>Bericht succesvol aangemaakt!</p>';
}
}
else
{
/* bericht is niet geldig. */
echo 'U heeft geen bericht ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen Datum ingevuld. */
echo 'U heeft geen datum ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen naam ingevuld. */
echo 'U heeft geen Naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Datum']) && $_POST['Datum'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Reactie']) && $_POST['Reactie'] != '')
{
if(isset($_GET['ID']) && ctype_digit($_GET['ID'])) {
// $_GET['ID'] bevat een geldig blog id
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
reacties
(
Naam,
Datum,
Reactie,
Blogid
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Reactie'])."',
'".mysql_real_escape_string($_POST['Blogid'])."'
)
";
}
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo 'Er is een fout opgetreden met het aanmaken van jouw bericht, <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Bericht is succesvol aangemaakt. */
echo '<p>Bericht succesvol aangemaakt!</p>';
}
}
else
{
/* bericht is niet geldig. */
echo 'U heeft geen bericht ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen Datum ingevuld. */
echo 'U heeft geen datum ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen naam ingevuld. */
echo 'U heeft geen Naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>
Blanche schreef op 17.01.2010 23:26:
Jurriensz schreef op 17.01.2010 23:20:
Deze reactie snap ik niet? Nergens in het topic wordt toch gesproken over een probleem met het sorteren van de data?als het orderen niet goed gaat moet je ORDER BY DESC of ASC gebruiken...
Sorry mijn fout
In de database worden de reacties niet geordend,
Ik dacht even dat hij bedoelde dat de Reacties niet geordend waren vandaar mijn reactie
Misschien dat het handig is als je dit hoofdstuk over superglobals eens doorleest. Daarin wordt uitgelegd wat die GET variabele nu precies is en kun je onder andere lezen dat deze uit de url komt.
Het script moet eerst achterhalen wat het id van de blog is en die dan in de database plaatsen. Dus eerst $_GET en dan $_POST.
Maar omdat dat niet werkt... zal het wel anders moeten.
Maar hoe moet ik hem anders in de database posten?
Ik zal $_POST wel moeten gebruiken lijkt me?!
(ik ben lastig, ik weet het)
In het kort:
GET variabelen komen uit de url waarmee een pagina aangeroepen is. De url index.php?id=... zorgt ervoor dat er een variabele $_GET['id'] bestaat. POST variabelen komen uit een formulier dat via de POST methode naar de betreffende pagina verstuurd is.
Het onderstaande is dus niet juist:
Wat ik nu in mijn script heb staan is dat ik iets opvraag met GET functie,
alleen moet ik het nu nog in de database posten.
In het artikel wordt dit helaas niet behandeld
en ik weet helaas nog steeds niet hoe ik dat zou moeten doen.
Google is ook niet echt handig, want ik weet gewoon niet naar waar ik moet zoeken. (A)
Als je gecontroleerd hebt of $_GET['ID'] bestaat en een integer is:
Hartelijk dank voor je hulp!
Ik denk dat ik nog veel te leren heb, php is niet zo makkelijk.
Eindelijk kan ik weer rustig slapen!
Mocht je willen kijken naar het resultaat:
http://stefandmindy2.netne.net/
Echt heel erg bedankt!
groetjes,
Stef
Hmm... 1 reactie posten lukt... maar nu probeerde ik het opnieuw en nou werkt het ineens niet meer :O
Ik kan maar 1 reactie voor de blog aanmaken, met een 2de geeft hij een error.
Dan zou het eigenlijk wel te maken moeten hebben met blogid.
In mijn database is het gewoon een INT(11) en NULL staat op NOTNULL.
Ik zie de oorzaak niet helemaal! :S
Stef schreef op 18.01.2010 00:31:
Hmm... 1 reactie posten lukt... maar nu probeerde ik het opnieuw en nou werkt het ineens niet meer :O
PM me eens die hele 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
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
<?php
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Datum']) && $_POST['Datum'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Reactie']) && $_POST['Reactie'] != '')
{
if(isset($_GET['ID']) && ctype_digit($_GET['ID'])) {
// $_GET['ID'] bevat een geldig blog id
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
reacties
(
Naam,
Datum,
Reactie,
Blogid
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Reactie'])."',
".$_GET['ID']."
)
";
}
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo '<p>Er is een fout opgetreden met het aanmaken van jouw bericht,</p> <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Bericht is succesvol aangemaakt. */
echo '<p>Bericht succesvol aangemaakt!</p>';
}
}
else
{
/* bericht is niet geldig. */
echo '<p>U heeft geen reactie ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a></p><br><br>';
exit();
}
}
else
{
/* Geen Datum ingevuld. */
echo 'U heeft geen datum ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen naam ingevuld. */
echo 'U heeft geen Naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>
/* Kijken of er iets gepost wordt. */
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
/* Kijken of er op de knop GO wordt geklikt. */
if(isset($_POST['Go']))
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Naam']) && $_POST['Naam'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Datum']) && $_POST['Datum'] != '')
{
/* Kijken of er een bericht is ingevuld. */
if(isset($_POST['Reactie']) && $_POST['Reactie'] != '')
{
if(isset($_GET['ID']) && ctype_digit($_GET['ID'])) {
// $_GET['ID'] bevat een geldig blog id
/* Query uitvoeren om de gegevens in de database te plaatsen. */
$cQuery =
"
INSERT INTO
reacties
(
Naam,
Datum,
Reactie,
Blogid
)
VALUES
(
'".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Datum'])."',
'".mysql_real_escape_string($_POST['Reactie'])."',
".$_GET['ID']."
)
";
}
/* Resultaat van de query. */
$cResultaat = mysql_query($cQuery);
/* Kijken of de query is gelukt. */
if(!$cResultaat)
{
/* Fout opgetreden met invoeren van gegevens. */
echo '<p>Er is een fout opgetreden met het aanmaken van jouw bericht,</p> <a href="javascript: history.go(-1)"class="link_orange">Terug</a>.';
exit();
}
else
{
/* Bericht is succesvol aangemaakt. */
echo '<p>Bericht succesvol aangemaakt!</p>';
}
}
else
{
/* bericht is niet geldig. */
echo '<p>U heeft geen reactie ingevult, <a href="javascript: history.go(-1)"class="link_orange">Terug</a></p><br><br>';
exit();
}
}
else
{
/* Geen Datum ingevuld. */
echo 'U heeft geen datum ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
else
{
/* Geen naam ingevuld. */
echo 'U heeft geen Naam ingevuld, <a href="javascript: history.go(-1)"class="link_orange">Terug</a><br><br>';
exit();
}
}
}
?>