comment uniek ID aanmaken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank Jansse

Frank Jansse

20/06/2011 14:12:31
Quote Anchor link
Beste allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}


?>
-->


En op dezelfde pagina bij de form:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<!-- <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>


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
 
PHP hulp

PHP hulp

28/03/2024 11:57:24
 
- Ariën  -
Beheerder

- Ariën -

20/06/2011 14:13:42
Quote Anchor link
Auto_increment?
 
Maikel  B

Maikel B

20/06/2011 14:15:22
Quote Anchor link
laat je database opbouw eens zien
Gewijzigd op 20/06/2011 14:15:34 door Maikel B
 
Frank Jansse

Frank Jansse

20/06/2011 14:38:23
Quote Anchor link
--
-- 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?
 
Gerhard l

gerhard l

20/06/2011 14:56:00
Quote Anchor link
dan is je id toch uniek?
 
Frank Jansse

Frank Jansse

20/06/2011 15:43:07
Quote Anchor link
ah, ik moet dus voor elke unieke pagina een nieuwe tabel maken.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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);

?>


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
 
Maikel  B

Maikel B

20/06/2011 15:45:41
Quote Anchor link
Wat ben je nu precies van plan?
Ik snap het even niet meer?

Je wilde dat je ID uniek werd.
Maar je ID is al uniek.
 
Frank Jansse

Frank Jansse

20/06/2011 15:50:38
Quote Anchor link
Ik wil het zo maken dat voor verschillende pagina's verschillende commentaren geladen worden. Nu heb ik dus een systeem dat werkt, maar wel maar voor 1 onderwerp.
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
 
Jordy nvt

Jordy nvt

20/06/2011 16:09:52
Quote Anchor link
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.
 
Frank Jansse

Frank Jansse

20/06/2011 16:18:13
Quote Anchor link
Ok, excuus. Het gaat alle kanten op.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}


?>
-->


Ook er bij, zodat de commentaren verschijnen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<!-- <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>


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
 
Maikel  B

Maikel B

20/06/2011 16:23:45
Quote Anchor link
je zou in je database een idpage aan kunnen maken en dan voor iedere pagina daar een id aan geven. bijv. pagina leuk-1.php is id 1 en leuk-2.php is id 2.

En dan op iedere pagina de volgende query:
$result = mysql_query("SELECT * FROM comments WHERE idpage = HIER DE IDPAGE ORDER BY id DESC");
 
Frank Jansse

Frank Jansse

20/06/2011 16:43:10
Quote Anchor link
Mag ik je dan nog 1 vraag stellen hierover?

Ik execute dit om een database te maken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;


Ik heb mijn idpage "inspiration1" genoemd op mijn pagina.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$comments = array();
$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..
 
Maikel  B

Maikel B

20/06/2011 17:04:51
Quote Anchor link
voor idpage kun je beter alleen een getal gebruiken. Een id is vaak alleen een getal.
maar op jouw manier (met inspiration1) zou je je veld page kunnen noemen.
de sql wordt dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
 
Frank Jansse

Frank Jansse

20/06/2011 17:17:23
Quote Anchor link
Ok, ehm toch nog wat vragen,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$comments = array();
$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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.