comment uniek ID aanmaken
via Tutorialized heb ik een commentaar systeem aangemaakt op mijn eigen database.
Dit werkt nu prima.
Alleen probeer ik een unieke ID aan elke pagina te maken, heb alleen geen idee waar ik moet beginnen.
Het script op mijn 'commentaar' pagina.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!-- <?php
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "../comments/connect.php";
include "../comments/comment.class.php";
/*
/ Select all the comments and populate the $comments array with objects
*/
$comments = array();
$result = mysql_query("SELECT * FROM comments ORDER BY id DESC");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new Comment($row);
}
?> -->
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "../comments/connect.php";
include "../comments/comment.class.php";
/*
/ Select all the comments and populate the $comments array with objects
*/
$comments = array();
$result = mysql_query("SELECT * FROM comments ORDER BY id DESC");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new Comment($row);
}
?> -->
En op dezelfde pagina bij de form:
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
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
<!-- <div class="commentBox">
<?php
/*
/ Output the comments one by one:
*/
foreach($comments as $c){
echo $c->markup();
}
?>
<div id="addCommentContainer">
<p>Add a Comment</p>
<form id="addCommentForm" method="post" action="">
<div>
<label for="name">Your Name</label>
<input type="text" name="name" id="name" />
<label for="email">Your Email</label>
<input type="text" name="email" id="email" />
<label for="url">Website (not required)</label>
<input type="text" name="url" id="url" />
<label for="body">Comment Body</label>
<textarea name="body" id="body" cols="20" rows="5"></textarea>
<input type="submit" id="submit" value="Submit" />
</div>
</form>
</div>
<?php
/*
/ Output the comments one by one:
*/
foreach($comments as $c){
echo $c->markup();
}
?>
<div id="addCommentContainer">
<p>Add a Comment</p>
<form id="addCommentForm" method="post" action="">
<div>
<label for="name">Your Name</label>
<input type="text" name="name" id="name" />
<label for="email">Your Email</label>
<input type="text" name="email" id="email" />
<label for="url">Website (not required)</label>
<input type="text" name="url" id="url" />
<label for="body">Comment Body</label>
<textarea name="body" id="body" cols="20" rows="5"></textarea>
<input type="submit" id="submit" value="Submit" />
</div>
</form>
</div>
Heeft iemand enig idee hoe ik mijn commentaren kan opslaan in mijn database, maar wel zo dat ik een unieke ID aan kan maken zodat het niet doorelkaar word gezet?
Gewijzigd op 20/06/2011 14:13:29 door Frank Jansse
Auto_increment?
Gewijzigd op 20/06/2011 14:15:34 door Maikel B
-- Table structure for table `comments`
--
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) collate utf8_unicode_ci NOT NULL default '',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`body` text collate utf8_unicode_ci NOT NULL,
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Deze code heb ik in mijn database uitgevoerd.
Aangezien ik van phpadmin echt weinig begrijp, snap ik dat ik hierin tekort schiet.
Kan je hier iets mee?
dan is je id toch uniek?
Ik dacht in eerste instantie dat dat allemaal in 1 database kon, opgeslagen als een aparte ID.
Waarin ik dan nu vast loop, wat is nu mijn huidige tabel ID?
Veld ID, type int(10)?
Dit is mijn connect.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
/* Database config */
$db_host = 'db.test.com';
$db_user = 'test';
$db_pass = 'test';
$db_database = 'test';
/* End config */
$link = @mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB connection');
mysql_query("SET NAMES 'utf8'");
mysql_select_db($db_database,$link);
?>
/* Database config */
$db_host = 'db.test.com';
$db_user = 'test';
$db_pass = 'test';
$db_database = 'test';
/* End config */
$link = @mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB connection');
mysql_query("SET NAMES 'utf8'");
mysql_select_db($db_database,$link);
?>
Dan neem ik aan dat ik connect.php moet aanpassen voor elke unieke commentaren pagina.
Zoiets als connect-1.php, connect-2.php ect
Maar als ik dan een nieuwe tabel maak voor connect-2.php, wat verander ik dan in de tabel en in connect-2.php?
Gewijzigd op 20/06/2011 15:43:55 door Frank Jansse
Ik snap het even niet meer?
Je wilde dat je ID uniek werd.
Maar je ID is al uniek.
Dus als ik dat allemaal integreer, zoals het nu is dan krijg je overal dezelfde commentaren geladen.
Gewijzigd op 20/06/2011 15:51:51 door Frank Jansse
Je maakt dus voor elk onderwerp een aparte tabel aan als ik het goed begrijp? -> In dat geval moet je alles in 1 tabel stoppen.
Vanaf het begin. Ik heb wat leuks op me pagina. En daar wil ik commentaar onder kunnen krijgen.
leuk-1.html
Dan zet ik bovenin de leuk-1.html:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!-- <?php
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "../comments/connect.php";
include "../comments/comment.class.php";
/*
/ Select all the comments and populate the $comments array with objects
*/
$comments = array();
$result = mysql_query("SELECT * FROM comments ORDER BY id DESC");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new Comment($row);
}
?> -->
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "../comments/connect.php";
include "../comments/comment.class.php";
/*
/ Select all the comments and populate the $comments array with objects
*/
$comments = array();
$result = mysql_query("SELECT * FROM comments ORDER BY id DESC");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new Comment($row);
}
?> -->
Ook er bij, zodat de commentaren verschijnen:
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
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
<!-- <div class="commentBox">
<?php
/*
/ Output the comments one by one:
*/
foreach($comments as $c){
echo $c->markup();
}
?>
<div id="addCommentContainer">
<p>Add a Comment</p>
<form id="addCommentForm" method="post" action="">
<div>
<label for="name">Your Name</label>
<input type="text" name="name" id="name" />
<label for="email">Your Email</label>
<input type="text" name="email" id="email" />
<label for="url">Website (not required)</label>
<input type="text" name="url" id="url" />
<label for="body">Comment Body</label>
<textarea name="body" id="body" cols="20" rows="5"></textarea>
<input type="submit" id="submit" value="Submit" />
</div>
</form>
</div>
<?php
/*
/ Output the comments one by one:
*/
foreach($comments as $c){
echo $c->markup();
}
?>
<div id="addCommentContainer">
<p>Add a Comment</p>
<form id="addCommentForm" method="post" action="">
<div>
<label for="name">Your Name</label>
<input type="text" name="name" id="name" />
<label for="email">Your Email</label>
<input type="text" name="email" id="email" />
<label for="url">Website (not required)</label>
<input type="text" name="url" id="url" />
<label for="body">Comment Body</label>
<textarea name="body" id="body" cols="20" rows="5"></textarea>
<input type="submit" id="submit" value="Submit" />
</div>
</form>
</div>
Alle jquery en andere javascript's even weggelaten, krijg ik nu netjes, nadat ik het sql script heb uitgevoerd zoals in eerdere post laten zien, alle commentaren die worden ingevuld te zien.
Maar nu, als ik deze code kopieer en zet op leuk-2.html pagina krijg ik commentaren van leuk-1.html. Dat wil ik niet.
Daarvoor kwam ik hier, ik dacht een unieke ID nodig te hebben en deze door te geven via PHP, maar dat had ik dus fout.
Nu, weet ik niet precies wat ik nu moet veranderen zodat ik unieke commentaren voor elke html pagina krijg. Moet ik de connect.php gaan dupliceren voor elke pagina? En wat moet ik dan veranderen?
Hoop dat het zo wat duidelijker is..
Gewijzigd op 20/06/2011 16:19:54 door Frank Jansse
En dan op iedere pagina de volgende query:
$result = mysql_query("SELECT * FROM comments WHERE idpage = HIER DE IDPAGE ORDER BY id DESC");
Ik execute dit om een database te maken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
--
-- Table structure for table `comments`
--
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) collate utf8_unicode_ci NOT NULL default '',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`body` text collate utf8_unicode_ci NOT NULL,
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- Table structure for table `comments`
--
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) collate utf8_unicode_ci NOT NULL default '',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`body` text collate utf8_unicode_ci NOT NULL,
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Ik heb mijn idpage "inspiration1" genoemd op mijn pagina.
Code (php)
1
2
2
$comments = array();
$result = mysql_query("SELECT * FROM comments WHERE idpage = inspiration1 ORDER BY id DESC");
$result = mysql_query("SELECT * FROM comments WHERE idpage = inspiration1 ORDER BY id DESC");
Wat moet ik dan aan de *.sql veranderen, van wat jij zegt hierboven, om in de database een idpage aan te maken? Dus dat bij de execute de idpage er al in zit..
maar op jouw manier (met inspiration1) zou je je veld page kunnen noemen.
de sql wordt dan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
--
-- Table structure for table `comments`
--
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) collate utf8_unicode_ci NOT NULL default '',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`page` varchar(50) collate utf8_unicode_ci NOT NULL default '',
`body` text collate utf8_unicode_ci NOT NULL,
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- Table structure for table `comments`
--
CREATE TABLE `comments` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(128) collate utf8_unicode_ci NOT NULL default '',
`url` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`page` varchar(50) collate utf8_unicode_ci NOT NULL default '',
`body` text collate utf8_unicode_ci NOT NULL,
`dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Code (php)
1
2
2
$comments = array();
$result = mysql_query("SELECT * FROM comments WHERE page = inspiration1 ORDER BY id DESC");
$result = mysql_query("SELECT * FROM comments WHERE page = inspiration1 ORDER BY id DESC");
page = inspiration1 [ik heb de id van idpage er af gehaald, dat is goed toch?]
Nu heb ik een nieuwe sql gemaakt die je mij gegeven hebt en als ik de structuur bekijk staat daar netjes 'page' (varchar(50)) bij.
Maar hoe connect ik deze nu met de - inspiration1 - ?
Gewijzigd op 20/06/2011 17:57:04 door Frank Jansse