• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP: wie maches ich am besten ein kommentar script welches für ca 100 ...............

sk8graz

New member
hi leute!
ich hoffe mir kann jemand hlfen, ich brauche ein script, in dem man ca 100(nur ein beispiel verschiedene topics hat. d.h ich habe z.B 5 verschiedene texte von irgenteiner band, zu jedem text dieser band sollman ein kommentar abgeben können, mit namen, mail.
ich habe das ganze schon probiert, in dem man einfach per

$fp=fopen("blablabla.php","a"); ...............

die kommentare in ein php file speichert, das funzt auch wunderbar,doch wenn ich dann 100 bands mit 5 liedern (nur ein beispiel) habe habe ich 1000 files 500 zum schreiben und 500 zu speichern. DAS IST ZU VIEL!

gibt es da eine leichtere lösung mit mySQL oder so.

es soll
NAME
eMAIL
KOMMENTAR

erfasst werden,kann mir da jemand so einscript geben, eine url wo man sich es laden kann,oder kann mit wer einfach beim pasteln helfen
ich hoffe
 
Hallo!

Kann dir beim basteln helfen.

Falls du eine MySQL-Database zur Verfügung hast, hast du schon gewonnen.

Werde dir morgen den ersten 'Alpha-Release' posten.
 
Erster Anlauf:

PHP:
class comments
{
    $username = "abc";
    $password="abc";
    $dbhost="localhost";
    $connid="";
    function comments()
    {
         
         $this->connid = @mysql_pconnect($this->dbhost,$this->username,$this->password);
          if(!$this->connid)
         {
             echo "<center><h2>Datenbankverbindung fehlgeschlagen</h2>Wenden Sie sich bitte an den <a href=\"mailto:webmaster@webmaster.web\">Webmaster</a></center>"; 
        }
    }
    function get_comments()
    {
         $comments=new Array();
         mysql_select_db('comments',$this->connid);
         $query=mysql_query("SELECT * from comments");
         $r=0;
         while($c_data=mssql_fetch_array($query))
         {
                $comments[$r][0] = $c_data['NAME'];
                $comments[$r][1] = $c_data['eMail'];
                $comments[$r][2] = $c_data['KOMMENTAR'];
                $r++;
         }
         return $comments;
    }
}
Die Datenbank heisst bei mir jetzt comments,die Tabelle darin ebenso. Die Felder sollten NAME,eMAIL und KOMMENTAR heissen.
Darin brauchen wir jetzt aber noch nen Verweis auf das Lied für das ein Kommentar abgegeben wurde, d.h. Ein Feld mit Lied. DIe Frage dabei ist wie wir diesen Verweis machen? Vielleicht hast du ne Idee.
Es sollte dann noch eine AutoIncrement - Primary-Key hinzugefügt werden.

Erläuterung:

Du instanzierst die Klasse comments: $test = new comments;
Dadurch wird die Verbindung hergestellt.
Dann bekommst du mit der Funktion get_comments() den Inhalt der Datenbank als Array zurück:
$comments = new Array();
$comments = $test->get_comments();
Die Funktion muß dann noch erweitert werden damit sie nur die Kommentare zum jeweiligen Lied raussucht.

Also dies ist mal der erste Teil, jetzt brauchst du noch was zum Eintragen der Kommentare.
Coming soon
 
Zweiter Anlauf:

PHP:
class comments
{
    $username = "abc";
    $password="abc";
    $dbhost="localhost";
    $connid="";
    function comments()
    {
         
         $this->connid = @mysql_pconnect($this->dbhost,$this->username,$this->password);
          if(!$this->connid)
         {
             echo "<center><h2>Datenbankverbindung fehlgeschlagen</h2>Wenden Sie sich bitte an den 
                       <a href=\"mailto:webmaster@webmaster.web\">Webmaster</a></center>"; 
        }
    }
    function get_comments($song=-1)
    {
         $comments=new Array();
         mysql_select_db('comments',$this->connid);
         $SQL_Statement="SELECT * FROM comments";
         if($song!=-1){$SQL_Statement.=" WHERE lied='$song'";}
         $query=mysql_query($SQL_Statement);
         $r=0;
         while($c_data=mssql_fetch_array($query))
         {
                $comments[$r][0] = $c_data['NAME'];
                $comments[$r][1] = $c_data['eMail'];
                $comments[$r][2] = $c_data['KOMMENTAR'];
                $r++;
         }
         return $comments;
    }

    function write_comments($name,$email,$kommentar,$song)
    {
          mysql_select_db('comments',$this->connid);
          $SQL_Statement="INSERT INTO comments (NAME,eMail,KOMMENTAR,lied) VALUES ('$name','$email','$kommentar','$lied')";
          if(mysql_query(SQL_Statement))
          {
               echo "<center>Vielen Dank für deinen Eintrag.......</center>";
          }
          else
          {
               echo "<center>Eintrag konnte nicht vorgenommen werden......</center>";
          }
    }
}

Jetzt wie gehabt Klasse instanzieren. Die Kommentare der Lieder bekommt man nur noch mit dem Liednamen(Wenn dieser nicht angegeben wird, werden alle Kommentare zurückgegeben), im unteren Fall ist der Liedname smpmpkns
$comments = new Array();
$comments = $test->get_comments("smpmpkns");


Mit write_comments(name,email,kommentar,lied) werden dann die Daten in die Datenbank geschrieben.

Ich hoffe ich konnte dir helfen und du bist im Stande dieses Skript in deine Seite zu integrieren.
Ansonsten, Posting genügt.
 
Zuletzt bearbeitet:
Gut

Erstmal Danke, dass klingt ja alle schon sehr vielversprechend, nur deine hoffnung, das ich das selbst inmeine seite einbauen kann hat sich leider nicht erfüllt, ich bin unfähig :(


Bitte helfe mir, ich habe mal mit

PHP:
<?php

$host = "mein host meist localhost";
$user = "mein username";
$pass ="mein passwort";
$database ="comments";

$db = @mysql_pconnect($host, $user, $pass)
      or die ("Verbindungsaufnahme mit MySQL-Server fehlgeschlagen!");
          @mysql_select_db($database, $db)
      or die ("Verbindungsaufnahme mit Datenbank fehlgeschlagen!");

$sql_create ="CREATE TABLE comments (

NAME int(15) NOT NULL,
eMAIL int(15) NOT NULL,
KOMMENTAR int(50) NOT NULL

)";

$result = mysql_query($sql_create, $db);

        if($result) {
                echo "Tabelle ist erfolgreich angelegt worden.\n<br>";
        }
        else {
                echo "Bei dem Versuch, die Tabelle anzulegen, ist ein Fehler
            aufgetreten: <br>\nFehler-Nummer:
            <b>".mysql_errno($db)."</b><br>\nFehler-Ausgabe:
            <b>".mysql_error($db)."</b>";
         }
?>
eine tabelle erzeugt!
ich glaub, da hab ich alles richtig gemacht!
dann habe ich

das script deines zweiten anlaufes mal gespeichert.
doch ich(als mySQL anfänger) hab jetzt erstens
wie ich das mit dem
--
$comments = new Array();
$comments = $test->get_comments("smpmpkns");
--
machen muss, und zweitesn wie das forumularfeld aussehen muss

ist so richtig?
Code:
<html>
<head>
<head>
<body>
<table>

<form action="liedindex.php" method="post">

<tr>
 <td align=left><B>Name:</td>
 <td><input name="NAME" size=30 value=""></td>
</tr>


<tr>
 <td align=left><B>eMAIL:</td>
 <td><input name="eMAIL" size=30 value=""></td>
</tr>

<tr>
 <td align=left><B>Nachricht*:</td>
 <td><textarea name="KOMMENTAR" cols=50 rows=10 wrap=soft></textarea></td>
</tr>

<td>
 <BR>
 <input type="submit" value="senden">
 <input type="reset" value="zürucksetzen">
</td><input type=hidden name=ipadress value=127.0.0.1><input type=hidden name=referer value=http://127.0.0.1/commentdb/></form></TABLE></font>
</body>
</html>

und drittens, wie muss ich den link, vom lied weg machen, dass das script weiß welches lied es ist???

Ich hoffe du kannst mir helfen, auch wenn ich einige dumme und unqualifizierte fragen stelle ;)
 
Zuletzt bearbeitet:
Hallo!

Kann mir nicht genau vorstellen wie das ganze genau abläuft??
Hat man da nen Songtitel und darunter einen Knopf mit Kommentar hinzufügen und darunter die abgegebenen Kommentare, oder sind es mehrere Songs auf einer Seite??
 
in meinem fall, währe es so, dass man auf eine band klick, dann kommt eine seite mit allen alben der band. Zu diesen alben, kann man dann ein kommentar, abgenen

Ich hab mir das so vorgestellt, das unter jedem album ein link, mit "kommentare zu diesem album lesen" und ein link mit "ein kommentar zu diesem album abgeben" steht!

außerdem sollte noch irgentwie erkennbar sein, wie viele kommentare schon abgegeben wurden!

ich hoffe ich hab mich klar ausgetrückt, und du kannst mir helfen ;)
 
Naja, du brauchst jetzt eigentlich nur mehr ein Feld mehr in der Datenbank z.B. LIED, dann kannst du das ganze folgendermassen managen:

<p>Song1</p>
<a href="comments.php?show=lied12">Kommentare anzeigen</a>
<a href="comments.php?makenew=lied12">Kommentar abgeben</a>

<p>Song2</p>
<a href="comments.php?show=lied13">Kommentare anzeigen</a>
<a href="comments.php?makenew=lied13">Kommentar abgeben</a>

Vielleicht sollte man hier auch nur POPUP-Fenster öffnen.


In der comments.php siehts dann folgendermassen aus:

PHP:
include("MeineKlasse.php");

$Com=new comments;

if(!empty($show))
{
    $comments = $Com->get_comments($show);
    if(!empty($comments))
    {
          for($x=0;$x<count($comments);$x++)
         {
               echo "<p>Kommentar von: <a href=\"mailto:",$comments[$x][1],"\">",$comments[$x][0],"</a></p>\n";
               echo "<p>",$comments[$x][2],"</p>\n\n";
         }
    }
}

Das include sollte dann die Datei mit unserer Klasse enthalten.
Der Teil fürs eintragen kommt dann das nächste mal
 
Hallo!

Und weiter gehts:

Die Datei comments.php in meiner Endfassung:

PHP:
<?php
include("MeineKlasse.php");

$Com=new comments;

if(!empty($show))
{
    $comments = $Com->get_comments($show);
    if(!empty($comments))
    {
          for($x=0;$x<count($comments);$x++)
         {
               echo "<p>Kommentar von: <a href=\"mailto:",$comments[$x][1],"\">",$comments[$x][0],"</a></p>\n";
               echo "<p>",$comments[$x][2],"</p>\n\n";
         }
    }
}

if(!empty($makenew))
{
     ?>
     <form action="comments.php">
     <input type="hidden" name="song" value="<?echo $makenew;?>">
     Name: <input type="text" name="name">
     EMail: <input type="text" name="email">
     Kommentar:<br><textarea name="kommentar"></textarea>
     <input type="submit" value="Kommentar abgeben"> 
     </form>
     <?php
}

if(!empty($name) && !empty($email) && !empty($kommentar) && !$makenew && !$show)
{
     $Com->write_comments($name,$email,$kommentar,$song);
}
?>

Es sollte eigentlich auf diese Art funktionieren. Das Design hängt dann von dir ab.

Würde dann gerne das Ergebniss begutachten.
 
Zuletzt bearbeitet:
hmmm...noch ein kleines problem:


ich habe 4 files im ordner

install.php MACHT DIE TABELLE:

PHP:
<?php

$host = "localhost";
$user = "tom";
$pass ="";
$database ="comments";

$db = @mysql_pconnect($host, $user, $pass)
      or die ("Verbindungsaufnahme mit MySQL-Server fehlgeschlagen!");
          @mysql_select_db($database, $db)
      or die ("Verbindungsaufnahme mit Datenbank fehlgeschlagen!");

$sql_create ="CREATE TABLE comments (

NAME int(100) NOT NULL,
eMAIL int(100) NOT NULL,
KOMMENTAR int(100) NOT NULL,
lied int(100) NOT NULL

)";

$result = mysql_query($sql_create, $db);

        if($result) {
                echo "Tabelle ist erfolgreich angelegt worden.\n<br>";
        }
        else {
                echo "Bei dem Versuch, die Tabelle anzulegen, ist ein Fehler
            aufgetreten: <br>\nFehler-Nummer:
            <b>".mysql_errno($db)."</b><br>\nFehler-Ausgabe:
            <b>".mysql_error($db)."</b>";
         }
?>
dann noch deine comments.php :
PHP:
<?php
include("klassen.php");

$Com=new comments;

if(!empty($show))
{
    $comments = $Com->get_comments($show);
    if(!empty($comments))
    {
          for($x=0;$x<count($comments);$x++)
         {
               echo "<p>Kommentar von: <a href=\"mailto:",$comments[$x][1],"\">",$comments[$x][0],"</a></p>\n";
               echo "<p>",$comments[$x][2],"</p>\n\n";
         }
    }
}

if(!empty($makenew))
{
     ?>
     <form action="comments.php">
     <input type="hidden" name="song" value="<?echo $makenew;?>">
     Name: <input type="text" name="name">
     EMail: <input type="text" name="email">
     Kommentar:<br><textarea name="kommentar"></textarea>
     <input type="submit" value="Kommentar abgeben">
     </form>
     <?php
}

if(!empty($name) && !empty($email) && !empty($kommentar) && !$makenew && !$show)
{
     $Com->write_comments($name,$email,$kommentar,$song);
}
?>

dann: klassen.php:
PHP:
<?php

class comments
{
    $username = "tom";
    $password="";
    $dbhost="localhost";
    $connid="";
    function comments()
    {

         $this->connid = @mysql_pconnect($this->dbhost,$this->username,$this->password);
          if(!$this->connid)
         {
             echo "<center><h2>Datenbankverbindung fehlgeschlagen</h2>Wenden Sie sich bitte an den
                       <a href=\"mailto:webmaster@webmaster.web\">Webmaster</a></center>";
        }
    }
    function get_comments($song=-1)
    {
         $comments=new Array();
         mysql_select_db('comments',$this->connid);
         $SQL_Statement="SELECT * FROM comments";
         if($song!=-1){$SQL_Statement.=" WHERE lied='$song'";}
         $query=mysql_query($SQL_Statement);
         $r=0;
         while($c_data=mssql_fetch_array($query))
         {
                $comments[$r][0] = $c_data['NAME'];
                $comments[$r][1] = $c_data['eMail'];
                $comments[$r][2] = $c_data['KOMMENTAR'];
                $r++;
         }
         return $comments;
    }

    function write_comments($name,$email,$kommentar,$song)
    {
          mysql_select_db('comments',$this->connid);
          $SQL_Statement="INSERT INTO comments (NAME,eMail,KOMMENTAR,lied) VALUES ('$name','$email','$kommentar','$lied')";
          if(mysql_query(SQL_Statement))
          {
               echo "<center>Vielen Dank für deinen Eintrag.......</center>";
          }
          else
          {
               echo "<center>Eintrag konnte nicht vorgenommen werden......</center>";
          }
    }
}

?>


und index.php:

-------------

<html>
<head>
</head>

<body>
<p>Song1</p>
<a href="comments.php?show=lied12">Kommentare anzeigen</a>
<a href="comments.php?makenew=lied12">Kommentar abgeben</a>
<p>Song2</p>
<a href="comments.php?show=lied13">Kommentare anzeigen</a>
<a href="comments.php?makenew=lied13">Kommentar abgeben</a>
</body>
</html>

------------

DOCH WENN ICH jetzt bei index.php auf irgenteinen link klicke sagt er nur volgendes

Code:
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\programme\apache group\apache\htdocs\commentdb\klassen.php on line 5

Fatal error: Cannot instantiate non-existent class: comments in c:\programme\apache group\apache\htdocs\commentdb\comments.php on line 4

Bitte sag mir was ich falsch gemacht habe!!! :( ich bin verzweifelt, aber so schnell geb ich auch wieder nicht auf ;)
 
Hallo!

Die ersten Zeilen der klassen.php sollte so aussehen:

PHP:
<?php

class comments
{
    $this->username = "tom";
    $this->password="";
    $this->dbhost="localhost";
    $this->connid="";
......
......

Das Erzeugen der Tabelle in der install.php sollte etwas anders aussehen, weil man sonst z.B.: im Feld Kommentar nur Zahlen eingeben kann, also:

PHP:
...
$sql_create ="CREATE TABLE comments (

NAME char(100) NOT NULL,
eMAIL char(100) NOT NULL,
KOMMENTAR char(255) NOT NULL,
lied char(60) NOT NULL

)";
....

Hoffe dir damit geholfen zu Haben.
 
:)

Also soweit ist alles einmal gut!:

nachdem ich bei comments.php

PHP:
$Com = new comments;

in
PHP:
$Com = "new comments";

geäntert habe, zeigt er den
Code:
Fatal error: Cannot instantiate non-existent class: comments in c:\programme\apache group\apache\htdocs\commentdb\comments.php on line 4

error nicht mehr an, und wenn man auf kommentar abgeben klickt, kommt das formularfeld!

jedoch hab ich noch immer in klassen.php

PHP:
<?php

class comments
{
 
    $this->username = "tom";
    $this->password="";
    $this->dbhost="localhost";
    $this->connid="";
  {

         $this->connid = @mysql_pconnect($this->dbhost,$this->username,$this->password);
          if(!$this->connid)
         {
             echo "<center><h2>Datenbankverbindung fehlgeschlagen</h2>Wenden Sie sich bitte an den
                       <a href=\"mailto:webmaster@webmaster.web\">Webmaster</a></center>";
        }
    }
    function get_comments($song=-1)
    {
         $comments=new Array();
         mysql_select_db('comments',$this->connid);
         $SQL_Statement="SELECT * FROM comments";
         if($song!=-1){$SQL_Statement.=" WHERE lied='$song'";}
         $query=mysql_query($SQL_Statement);
         $r=0;
         while($c_data=mssql_fetch_array($query))
         {
                $comments[$r][0] = $c_data['NAME'];
                $comments[$r][1] = $c_data['eMail'];
                $comments[$r][2] = $c_data['KOMMENTAR'];
                $r++;
         }
         return $comments;
    }

    function write_comments($name,$email,$kommentar,$song)
    {
          mysql_select_db('comments',$this->connid);
          $SQL_Statement="INSERT INTO comments (NAME,eMail,KOMMENTAR,lied) VALUES ('$name','$email','$kommentar','$lied')";
          if(mysql_query(SQL_Statement))
          {
               echo "<center>Vielen Dank für deinen Eintrag.......</center>";
          }
          else
          {
               echo "<center>Eintrag konnte nicht vorgenommen werden......</center>";
          }
    }
}

?>

einen ganz boesen

Code:
Parse error: parse error in c:\programme\apache group\apache\htdocs\commentdb\klassen.php on line 4

naja, ich hoffe du kannst mir noch mal helfen ;)
 
Hallo!

Hier jetzt noch einmal der vollständige Code für alle Dateien die benötigt werden:

WICHTIG: Auf Groß-/Kleinschreibung achten!!!

comments.php

PHP:
<?php
include("class.comments.php");

$Com=new comments;

if(!empty($show))
{
    $comments = $Com->get_comments($show);
    if(!empty($comments))
    {
          for($x=0;$x<count($comments);$x++)
         {
               echo "<p>Kommentar von: <a href=\"mailto:",$comments[$x][1],"\">",$comments[$x][0],"</a></p>\n";
               echo "<p>",$comments[$x][2],"</p>\n\n";
         }
    }
}

if(!empty($makenew))
{
     ?>
     <form action="comments.php">
     <input type="hidden" name="song" value="<?echo $makenew;?>">
     Name: <input type="text" name="name">
     EMail: <input type="text" name="email">
     Kommentar:<br><textarea name="kommentar"></textarea>
     <input type="submit" value="Kommentar abgeben"> 
     </form>
     <?php
}

if(!empty($name) && !empty($email) && !empty($kommentar) && !$makenew && !$show)
{
     $Com->write_comments($name,$email,$kommentar,$song);
}

?>

class.comments.php

PHP:
<?php

class comments
{
    $this->username = "tom";
    $this->password="";
    $this->dbhost="localhost";
    $this->connid="";
    
    function comments()
    {

         $this->connid = @mysql_pconnect($this->dbhost,$this->username,$this->password);
          if(!$this->connid)
         {
             echo "<center><h2>Datenbankverbindung fehlgeschlagen</h2>Wenden Sie sich bitte an den
                       <a href=\"mailto:webmaster@webmaster.web\">Webmaster</a></center>";
        }
    }
    function get_comments($song=-1)
    {
         $comments=new Array();
         mysql_select_db('comments',$this->connid);
         $SQL_Statement="SELECT * FROM comments";
         if($song!=-1){$SQL_Statement.=" WHERE lied='$song'";}
         $query=mysql_query($SQL_Statement);
         $r=0;
         while($c_data=mssql_fetch_array($query))
         {
                $comments[$r][0] = $c_data['NAME'];
                $comments[$r][1] = $c_data['eMail'];
                $comments[$r][2] = $c_data['KOMMENTAR'];
                $r++;
         }
         return $comments;
    }

    function write_comments($name,$email,$kommentar,$song)
    {
          mysql_select_db('comments',$this->connid);
          $SQL_Statement="INSERT INTO comments (NAME,eMail,KOMMENTAR,lied) VALUES ('$name','$email','$kommentar','$lied')";
          if(mysql_query(SQL_Statement))
          {
               echo "<center>Vielen Dank für deinen Eintrag.......</center>";
          }
          else
          {
               echo "<center>Eintrag konnte nicht vorgenommen werden......</center>";
          }
    }
}

?>

index.php

PHP:
<html> 
<head> 
</head> 

<body> 
<p>Song1</p> 
<a href="comments.php?show=lied12">Kommentare anzeigen</a> 
<a href="comments.php?makenew=lied12">Kommentar abgeben</a> 
<p>Song2</p> 
<a href="comments.php?show=lied13">Kommentare anzeigen</a> 
<a href="comments.php?makenew=lied13">Kommentar abgeben</a> 
</body> 
</html>
 
hmmm.

Ich will dich ja nicht zum Wahnsinn treiben ;), aber...

Code:
Parse error:  parse error in c:\programme\apache group\apache\htdocs\commentdb\comments.php on line 10

in dieser ziele steht:

PHP:
 $comments = $Com->get_comments($show);

naja, hoffe du wirst nicht Wahnsinnig mit mir, und du kannst mir helfen ;)
 
es währe auch super, wenn noch keine kommentare zu diesem lied gemacht wurden, das in index.php

statt:
dem "kommentare zu diesem Lied lesen"

"NOCH KEINE KOMMENTARE" steht!

könntest du mir da auch noch helfen ;) ??
 
Hallo!

Hab das ganze noch mal getestet und funktionsreif gebogen:

Die Spaltennamen der Tabelle hat sich ein wenig geändert, hier der Code zum Vornehmen der Änderungen:

PHP:
<?php

$sql_create ="CREATE TABLE comments (

NAME char(100) NOT NULL,
mailadress char(100) NOT NULL,
KOMMENTAR char(255) NOT NULL,
lied char(60) NOT NULL

)";

$connid = @mysql_connect("localhost","tom","");

mysql_select_db("comments",$connid);
mysql_query("DROP TABLE comments");
mysql_query($sql_create);
?>

Dann die Neufassung der Klasse:

PHP:
<?php

class comments
{
    function comments()
    {
         $this->username = "tom";
         $this->password="";
         $this->dbhost="localhost";
         $this->connid = @mysql_pconnect($this->dbhost,$this->username,$this->password);
         if(!$this->connid)
         {
             echo "<center><h2>Datenbankverbindung fehlgeschlagen</h2>Wenden Sie sich bitte an den
                       <a href=\"mailto:webmaster@webmaster.web\">Webmaster</a></center>";
        }
    }
    function get_comments($song=-1)
    {
         mysql_select_db('comments',$this->connid);
         $SQL_Statement="SELECT * FROM comments";
         if($song!=-1){$SQL_Statement.=" WHERE lied='$song'";}
         $query=mysql_query($SQL_Statement);
         $r=0;
         while($c_data=mysql_fetch_array($query))
         {
                $comments[$r][0] = $c_data['NAME'];
                $comments[$r][1] = $c_data['mailadress'];
                $comments[$r][2] = $c_data['KOMMENTAR'];
                $r++;
         }
         return $comments;
    }

    function write_comments($name,$email,$kommentar,$song)
    {
          mysql_select_db('comments',$this->connid);
          $SQL_Statement="INSERT INTO comments (NAME,mailadress,KOMMENTAR,lied) VALUES ('$name','$email','$kommentar','$song')";
          if(mysql_query($SQL_Statement))
          {
               echo "<center>Vielen Dank für deinen Eintrag.......</center>";
          }
          else
          {
               echo "<center>Eintrag konnte nicht vorgenommen werden......</center>";
          }
    }
}

?>

Und noch die comments.php:

PHP:
<?php

$Com=new comments;

if(!empty($show))
{
    $comments = $Com->get_comments($show);
    if(!empty($comments))
    {
         for($x=0;$x<count($comments);$x++)
         {
               echo "<p>Kommentar von: <a href=\"mailto:",$comments[$x][1],"\">",$comments[$x][0],"</a></p>\n";
               echo "<p>",$comments[$x][2],"</p>\n\n";
         }
    }
}

if(!empty($makenew))
{
     ?>
     <form action="test.php">
     <input type="hidden" name="song" value="<?echo $makenew;?>">
     Name: <input type="text" name="name">
     EMail: <input type="text" name="email">
     Kommentar:<br><textarea name="kommentar"></textarea>
     <input type="submit" value="Kommentar abgeben">
     </form>
     <?php
}

if(!empty($name) && !empty($email) && !empty($kommentar) && !$makenew && !$show)
{
     $Com->write_comments($name,$email,$kommentar,$song);
}

Dann noch der Code für die Anzeige, ob schon ein Kommentar drinsteht (index.php):

PHP:
<?php
include("class.comments.php");
$Com = new comments;
?>
<html> 
<head> 
</head> 

<body> 
<p>Song1</p>
<?php
if(count($Com->get_comments('lied12'))>0)
{
    echo"<a href=\"comments.php?show=lied12\">Kommentare anzeigen</a> ";
}
else
{echo"Keine Einträge vorhanden ";}
?> 
<a href="comments.php?makenew=lied12">Kommentar abgeben</a> 
<p>Song2</p> 
<?php
if(count($Com->get_comments('lied13'))>0)
{
    echo"<a href=\"comments.php?show=lied13\">Kommentare anzeigen</a> ";
}
else
{echo"Keine Einträge vorhanden ";}
?> 
<a href="comments.php?makenew=lied13">Kommentar abgeben</a> 
</body> 
</html>

So, jetzt sollte es aber funken.

Das Aussehen muß halt noch angepasst werden :rolleyes:
 
Zuletzt bearbeitet:
danke, aber...

Erstmal danke, das funzt alles 1A aber könntest du mir bitte noch helfen, das datum, und die uhrzeit, wann der eintrag gemacht wurde einzulesen, leider schaff ich, (nichtmal) das.
meiner meinung nach dürften es ja nur wenige zeilen sein oder?

BITTE HELFEN ;)
 
Hallo!

Dafür müssen wir die Datenbank wieder etwas erweitern.

PHP:
<?php

$sql_create ="CREATE TABLE comments (

NAME char(100) NOT NULL,
mailadress char(100) NOT NULL,
KOMMENTAR char(255) NOT NULL,
lied char(60) NOT NULL,
datum DATETIME NOT NULL

)";

$connid = @mysql_connect("localhost","tom","");

mysql_select_db("comments",$connid);
mysql_query("DROP TABLE comments");
mysql_query($sql_create);
?>

Jetzt noch die class.comments.php:

PHP:
<?php

class comments
{
    function comments()
    {
         $this->username = "tom";
         $this->password="";
         $this->dbhost="localhost";
         $this->connid = @mysql_pconnect($this->dbhost,$this->username,$this->password);
         if(!$this->connid)
         {
             echo "<center><h2>Datenbankverbindung fehlgeschlagen</h2>Wenden Sie sich bitte an den
                       <a href=\"mailto:webmaster@webmaster.web\">Webmaster</a></center>";
        }
    }
    function get_comments($song=-1)
    {
         mysql_select_db('comments',$this->connid);
         $SQL_Statement="SELECT * FROM comments";
         if($song!=-1){$SQL_Statement.=" WHERE lied='$song'";}
         $query=mysql_query($SQL_Statement);
         $r=0;
         while($c_data=mysql_fetch_array($query))
         {
                $comments[$r][0] = $c_data['NAME'];
                $comments[$r][1] = $c_data['mailadress'];
                $comments[$r][2] = $c_data['KOMMENTAR'];
                $comments[$r][3] = $c_data['datum'];
                $r++;
         }
         return $comments;
    }

    function write_comments($name,$email,$kommentar,$song)
    {
          mysql_select_db('comments',$this->connid);
          $SQL_Statement="INSERT INTO comments (NAME,mailadress,KOMMENTAR,lied,datum) VALUES ('$name','$email','$kommentar','$song',CURRENT_DATE)";
          if(mysql_query($SQL_Statement))
          {
               echo "<center>Vielen Dank für deinen Eintrag.......</center>";
          }
          else
          {
               echo "<center>Eintrag konnte nicht vorgenommen werden......</center>";
          }
    }
}

?>

Und noch die comments.php:

PHP:
<?php

$Com=new comments;

if(!empty($show))
{
    $comments = $Com->get_comments($show);
    if(!empty($comments))
    {
         for($x=0;$x<count($comments);$x++)
         {
               echo "<p>Kommentar von: <a href=\"mailto:",$comments[$x][1],"\">",$comments[$x][0],"</a> am ",$comments[$x][3],"</p>\n";
               echo "<p>",$comments[$x][2],"</p>\n\n";
         }
    }
}

if(!empty($makenew))
{
     ?>
     <form action="test.php">
     <input type="hidden" name="song" value="<?echo $makenew;?>">
     Name: <input type="text" name="name">
     EMail: <input type="text" name="email">
     Kommentar:<br><textarea name="kommentar"></textarea>
     <input type="submit" value="Kommentar abgeben">
     </form>
     <?php
}

if(!empty($name) && !empty($email) && !empty($kommentar) && !$makenew && !$show)
{
     $Com->write_comments($name,$email,$kommentar,$song);
}

?>

Sollte normalerweise funktionieren, habs aber nicht probiert .
 
Zurück
Oben