2009-07-23 3 views

Antwort

1

Normalisierung ist dein bester Freund im Kommentar/Rang/System. Lern es. Viele Websites ziehen jetzt nach PDO ... das erfahren Sie auch.

Es gibt keine richtigen, richtigen oder falschen (es gibt) Möglichkeiten, dies zu tun, Sie müssen die grundlegenden Konzepte kennen und nehmen Sie sie von dort. WENN Sie nicht Lust haben zu lernen, dann investieren Sie vielleicht in ein Framework wie CakePhp oder Zend Framework, oder ein fertiges System wie Wordpress oder Joomla.

Ich würde auch das Buch wicked cool php scripts empfehlen, da es ein Kommentarsystembeispiel darin hat.

+0

Buch ist gut, aber keine Lösung ........... !!! – pratik

2

Sie können eine "Kommentar" -Tabelle mit einer ID als Primärschlüssel erstellen, dann ein Textfeld hinzufügen, um den vom Benutzer eingefügten Text einzufangen, und Sie benötigen ein anderes Feld, um die Kommentartabelle mit der Artikeltabelle zu verknüpfen Schlüssel). Außerdem benötigen Sie ein Feld zum Speichern des Benutzers, der einen Kommentar eingegeben hat. Dieses Feld kann die E-Mail des Benutzers sein. Dann sind Sie über GET erfassen oder den Benutzer E-Mail und Kommentar posten und Sie alles in der DB einfügen:

"INSERT INTO comment (comment, email, approved) VALUES ('$comment', '$email', '$approved')" 

Dies ist ein erster Hinweis. Natürlich fügt ein Kommentarmerkmal ein wenig hinzu. Dann sollten Sie über ein Formular nachdenken, damit der Administrator die Kommentare genehmigen und die Kommentare am Ende der Artikel veröffentlichen kann.

+13

Lesen Sie auch eine Anleitung zur Vermeidung von SQL-Injektion –

+0

Lieber Jon, dieser Kommentar ist nur unangemessen. – rtacconi

+0

rtacconi - Warum so? –

6

Erstellen Sie eine neue Tabelle mit dem Namen Kommentare

Sie sollten die ID der Post eine Spalte enthält, denen sie zugeordnet sind.

Erstellen Sie ein Formular, das der Tabelle einen neuen Kommentar hinzufügt.

Ein Beispiel (nicht getestet, so lil‘Syntaxfehler enthalten können): Ich nenne eine Seite mit Kommentaren einen Beitrag

post.php

<!-- Post content here --> 

<!-- Then cmments below --> 
<h1>Comments</h1> 
<?php 
$result = mysql_query("SELECT * FROM comments WHERE postid=0"); 
//0 should be the current post's id 
while($row = mysql_fetch_object($result)) 
{ 
?> 
<div class="comment"> 
By: <?php echo $row->author; //Or similar in your table ?> 
<p> 
<?php echo;$row->body; ?> 
</p> 
</div> 
<?php 
} 
?> 
<h1>Leave a comment:</h1> 
<form action="insertcomment.php" method="post"> 
<!-- Here the shit they must fill out --> 
<input type="hidden" name="postid" value="<?php //your posts id ?>" /> 
<input type="submit" /> 
</form> 

insertcomment.php

<?php 
//First check if everything is filled in 
if(/*some statements*/) 
{ 
//Do a mysql_real_escape_string() to all fields 

//Then insert comment 
mysql_query("INSERT INTO comments VALUES ($author,$postid,$body,$etc)"); 
} 
else 
{ 
die("Fill out everything please. Mkay."); 
} 
?> 

Sie müssen den Code ein wenig ändern, damit er funktioniert. Ich mache deine Hausaufgaben nicht. Nur ein Teil davon;)

6

Es ist eine schwierige Frage ohne weitere Informationen zu beantworten. Es gibt eine Reihe von Dingen, die Sie beachten sollten, wenn Sie Kommentare zu einer bestehenden Website implementieren.

Wie werden Sie das Problem von Spam angehen? Es spielt keine Rolle, wie weit Ihre Website entfernt ist, Spammer werden sie finden und sie werden sie in kürzester Zeit füllen. Vielleicht möchten Sie in etwas wie reCAPTCHA (http://recaptcha.net/) suchen.

Die Struktur der Website kann auch beeinflussen, wie Sie Ihre Kommentare implementieren. Sind die Kommentare für die gesamte Website, ein bestimmtes Produkt oder eine bestimmte Seite oder sogar ein anderer Kommentar? Sie müssen die Beziehung zwischen dem Inhalt und dem Kommentar kennen, damit Sie die Beziehung in der Datenbank richtig definieren können.Um es anders auszudrücken, Sie wissen, dass Sie eine E-Mail-Adresse, den Kommentar und ob es genehmigt ist oder nicht, aber jetzt brauchen wir eine Möglichkeit zu identifizieren, was, wenn überhaupt, der Kommentar verknüpft ist.

Wenn Ihre Site bereits eingerichtet und auf einem PHP-Framework (z. B. CakePHP) aufgebaut ist, müssen Sie sich damit befassen, wie Sie Ihren Code ordnungsgemäß mit dem bereits vorhandenen integrieren.

Schließlich gibt es eine Reihe von Ressourcen und Tutorials im Web für PHP. Wenn Sie eine schnelle Google-Suche nach etwas im Sinne von "PHP-Blog-Tutorial" machen, werden Sie sicher Hunderte finden und die Mehrheit wird Ihnen Schritt für Schritt zeigen, wie Sie Kommentare implementieren können.

+0

Sie haben schön erklärt, welchen Problemen OP beim Erstellen eines Kommentars in der Website gegenübersteht, aber Sie haben die Frage nicht beantwortet, und noch wichtiger, ich denke, Sie haben die Frage auch nicht verstanden. OP fragt, wie man mit PHP und MySQL ein grundlegendes Kommentarfeature erstellen kann, nicht weil er eine soziale Seite machen will, sondern weil er wissen will, wie man PHP/MySQL benutzt, um Benutzer auf Webseiten zu bringen. Er kümmert sich also nicht um Spam, reCAPTCHA, Beziehung zwischen dem Inhalt und dem Kommentar und anderen Problemen. – ands

1

Das ist meine Art, wie ich es Kommentare (I seine sichere denken):

<h1>Comment's:</h1> 
<?php 
$i = addslashes($_POST['a']); 
$ip = addslashes($_POST['b']); 
$a = addslashes($_POST['c']); 
$b = addslashes($_POST['d']); 
if(isset($i) & isset($ip) & isset($a) & isset($b)) 
{ 
    $r = mysql_query("SELECT COUNT(*) FROM $db.ban WHERE ip=$ip"); //Check if banned 
    $r = mysql_fetch_array($r); 
    if(!$r[0]) //Phew, not banned 
    { 
     if(mysql_query("INSERT INTO $db.com VALUES ($a, $b, $ip, $i)")) 
     { 
      ?> 
      <script type="text/javascript"> 
       window.location="/index.php?id=".<?php echo $i; ?>; 
      </script> 
      <?php 
     } 
     else echo "Error, in mysql query"; 
    } 
    else echo "Error, You are banned."; 
} 
$x = mysql_query("SELECT * FROM $db.com WHERE i=$i"); 
while($r = mysql_fetch_object($x) echo '<div class="c">'.$r->a.'<p>'.$row->b.'</p> </div>'; 

?> 
<h1>Leave a comment, pl0x:</h1> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="hidden" name="a" value="<?php $echo $_GET['id']; ?>" /> 
    <input type="hidden" name="b" value="<?php $echo $_SERVER['REMOTE_ADDR']; ?>" /> 
    <input type="text" name="c" value="Name"/></br> 
    <textarea name="d"> 
    </textarea> 
    <input type="submit" /> 
</form> 

Dies macht alles auf einer Seite (Dies ist nur der Bemerkungsfeld an, einige Konfiguration erforderlich)

+0

Ich wette der op hat schon seine kommentare;) –

0

I Ich arbeite gerade jetzt daran. Sie sollten auch eine Datumsangabe des Kommentars hinzufügen. Sie werden dies später benötigen, wenn Sie nach den neuesten sortieren möchten.

Hier sind einige der db-Felder, die ich benutze.

id (auto incremented) 
name 
email 
text 
datetime 
approved