Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Uutisjärjestelmä + kommentti systeemi ( mysql ) - Ilman suojausta ( loginiä )

v0q [08.10.2004 14:24:56]

#

Eli uutisjärjeslmä käyttää mysql :ää mukana kommentti systeemi :) Melkeen ensimmäinen tällänen vähän isompi koodi mitä oon tehnyt :) Myöhemmin voi mukaan tulla kommenttien muokkaus ja uutisten muokkaus... Tällä hetkellä vain uutisten poisto ja lisäys... Ja siis tässähän ei ole vielä mitään floodin yms. estoa mutta se ehkä kanssa myöhemmin :)
Antakaahan toki kehittävää kritiikkiä...

Ja huomatkaahan toki että kun en ole enne tälläsiä vinkkejä tehnyt niin sisennykset, kommentit yms eivät pakolla ole mitään loistavia :)

Ja joo voi olla tyhmästi tehty yms ( siis sisennykset yms ja kun joissain tableissa on nyt värejä ) :) kun otin ton alunperin sellasesta minkä tein yhtee mun "projektiin" joten jouduin tässä muokkailee... testasin kyllä ja kyl pitäis toimii... Että siitä vaan kokeileen ^^ toivottavasti pidätte

Eli ensin mysql:ssä luodaan tarvittavat taulut:

CREATE TABLE news (
  title TEXT,
  dtime TEXT,
  sender TEXT,
  news TEXT,
  id INT(4) AUTO_INCREMENT,
  PRIMARY KEY(id)
);
CREATE TABLE comments (
  comment_news_id INT(4),
  comment_content TEXT,
  comment_sender TEXT,
  comment_sender_email TEXT,
  comment_sender_www TEXT,
  comment_sender_ip TEXT,
  comment_date DATETIME
);

mysql_connect.php

<?php

//MySQL asetukset
  $mysql_user = "user";
  $mysql_pw = "pw";
  $mysql_server = "localhost";
  $mysql_db = "database";

//Yhdistys ja sulku
  $connect = mysql_connect($mysql_server, $mysql_user, $mysql_pw) or die ("Could not connect to MySQL");
  mysql_select_db($mysql_db, $connect) or die ("Could not connec to the database");

?>

write_remove.php

<?php

@$page = $_GET['page'];

//Katsotaan onko $page tyhjä
if (!$page) {
  echo "<a href=\"write_remove.php?page=wnews\">Write News</a><br><br>";
  echo "<a href=\"write_remove.php?page=rnews\">Remove News</a>";
}

//Katsotaan halutaanko kirjottaa uutinen
if ($page == "wnews") {
@$write = $_GET['write'];

//Tarkistetaan lisätäänkö tiedot mysql vai echotaanko formi
 if ($write == "1") {

//Haetaan tiedot formista
@$title = $_POST['title'];
@$writer = $_POST['writer'];
@$news = $_POST['news'];
@$time = date("j.m @ H:i");
@$email = $_POST['email'];

//Muokataan lähettäjä oikeeseen muotoon
  if ($writer) {
     $writer = "anonymous";
  }

  if (!$email) {
     $sender = $writer;
  } else {
     $sender = "<a href=\"mailto:{$email}\">$writer</a>";
  }

//Tarkistetaan että kaikki tarvittavat alueet on täytetty
  if ($title == "") {
     echo "Please enter the title";
     exit;
  }

  if ($news == "") {
     echo "Please write your news :)";
     exit;
  }

//Includataan mysql :n yhdistäminen
  include("mysql_connect.php");

//Lisätään tiedot mysql :n
  $add = "INSERT INTO news (title, sender, news, dtime) VALUES ('$title', '$sender', '$news', '$time')";
  mysql_query($add, $connect);

//Suljetaan yhteys ja echotaan tehtävän onnistuminut suoritus
  mysql_close($connect);
  echo "News written successfully !";

//Jos formia ei ole vielä lähetetty echotaan formi
 } else {

//Echotaan sivun sisältö
  echo "Write news<br><br><br>
    <form action=\"write_remove.php?page=wnews&write=1\" method=\"post\">
       title<br>
       <input type=\"text\" name=\"title\"><br><br>
       writer<br><input type=\"text\" name=\"writer\"><br><br>
       email<br><input type=\"text\" name=\"email\"><br><br>
       news<br>
       <textarea name=\"news\" cols=\"50\" rows=\"10\" class=\"textarea\"></textarea><br>
       <input type=\"submit\" value=\"write\" class=\"submit\">
    </form>";
}
}

//Katsotaan jos uutisia halutaan poistaa
if ($page == "rnews") {
  @$remove_id = $_GET['remove_id'];

//Tarkistetaan poistetaanko uutinen vai listataanko uutiset jotka voidaan poistaa
if (!$remove_id) {

//Includataan mysql :n yhdistäminen
  include("mysql_connect.php");

//Echotaan lista uutisista
  echo "Remove news<br><br><br>";

//Haetaan tiedot mysql :stä
    $sql = "SELECT * FROM news";
    $query = mysql_query($sql, $connect);

//Haetaan kaikki rivit mitä löydetään haulla
     for ($i = 0; $i < mysql_num_rows($query); $i++) {
     $title = mysql_result($query, $i, "title");
     $id = mysql_result($query, $i, "id");
     $dtime = mysql_result($query, $i, "dtime");

//Echotaan rivit ulos niin että joka toinen rivi erivärinen
   if ($i%2) {
      echo "<table width=\"90%\" height=\"14\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#8D9BA9\">
      <tr>
      <td align=\"left\">
      <b>$title</b> - <i>$dtime</i>
      </td>
      <td align=\"right\">
      <a href=\"write_remove.php?page=rnews&remove_id={$id}\">remove</a>
      </tr>
      </table>";
 } else {
      echo "<table width=\"90%\" height=\"14\" cellpadding=\"0\" cellspacing=\"0\">
      <tr>
      <td align=\"left\">
      <b>$title</b> - <i>$dtime</i>
      </td>
      <td align=\"right\">
      <a href=\"write_remove.php?page=rnews&remove_id={$id}\">remove</a>
      </tr>
      </table>";
}
}
}

//Jos on jo valittu mikä uutinen poistetaan
else {

//Includataan mysql :n yhdistäminen
  include("mysql_connect.php");

//Poistetaan haluttu uutinen mysql :stä
    $sql = "DELETE FROM news WHERE id = '$remove_id'";
    mysql_query($sql, $connect);

//Suljetaan mysql yhteys
  mysql_close($connect);

//Siirrytään takaisin listaan josta voi poistaa uutiset
header("location:write_remove.php?page=rnews");
}
}
?>

index.php

<?php

//Includataan mysql :n yhdistäminen
include("mysql_connect.php");

@$news_id = $_GET['news_id'];
@$writecom = $_GET['write_comment'];

//Jos ollaan kirjoittamassa kommenttia
 if ($writecom == "1") {
    $nick = $_POST['nick'];
    $email = $_POST['email'];
    $www = $_POST['www'];
    $comment = $_POST['comment'];
    $comment_newsid = $_POST['newsid'];
    $sender_ip = $_POST['ip'];
    $comment_date = date("Y\-m\-d H:i:s");

//Tarkistetaan mitkä kaikki on formista asetettu ja muutellaan arvot tarpeen mukaan
 if (!$nick) {
    $nick = "no nick";
 }
 if (!$comment) {
    echo "Please enter your comment";
    exit;
 }

//Lisätään kommentti mysql :n
  $commentsql = "INSERT INTO comments (comment_news_id, comment_content, comment_sender, comment_sender_email, comment_sender_www, comment_sender_ip, comment_sender_pass, comment_date) VALUES ('$comment_newsid', '$comment', '$nick', '$email', '$www', '$sender_ip', '$password', '$comment_date')";
  mysql_query($commentsql, $connect);

//Suljetaan yhteys ja siirretään kävijä takasin sivulle jossa kommentit yms
  mysql_close($connect);
  header("location:index.php?news_id={$comment_newsid}&comments=1");
 }

//Tarkistetaan näytetäänkö jokin uutinen ja sen kommentit
 if (isset($news_id)) {
   $sql = "SELECT * FROM news WHERE id = $news_id";
   $query = mysql_query($sql, $connect);

    for ($i = 0; $i < mysql_num_rows($query); $i++) {
    $title = mysql_result($query, $i, "title");
    $dtime = mysql_result($query, $i, "dtime");
    $sender = mysql_result($query, $i, "sender");
    $news = mysql_result($query, $i, "news");

//Echotaan uutinen
   echo "<table width=\"90%\" height=\"14\" cellpadding=\"0\" cellspacing=\"0\">
   <tr >
   <td bgcolor=\"#8D9BA9\">
   <b>$title</b>
   </td>
   </tr>
   </table>
   <table width=\"90%\" cellpadding=\"5\" cellspacing=\"0\">
   <tr >
   <td>
   $news
   <br>
   <br>
   $dtime by $sender
   </td>
   </tr>
   </table>";

//Echotaan kommenttien alku
  echo "<br><br><br>Comments<br><hr width=\"90%\" align=\"left\"><br><br><br>";

//Includataan mysql :n yhdistäminen
  include("mysql_connect.php");

//Suoritetaan mysql haku
  $csql = "SELECT * FROM comments WHERE comment_news_id = '$news_id' ORDER BY comment_date";
  $cquery = mysql_query($csql, $connect);

//Tarkistetaan onko kommenttaja yhtään kyseiselle uutiselle
 @$check = mysql_num_rows($cquery);
  if ($check < 1) {

//Jos ei echotaan:
    echo "<i>No comments yet</i>";
  } else {

//Suoritetaan mysql haku echottavaan muotoon
    for ($i = 0; $i < mysql_num_rows($cquery); $i++) {
    $comment_id = mysql_result($cquery, $i, "comment_id");
    $content = mysql_result($cquery, $i, "comment_content");
    $sender = mysql_result($cquery, $i, "comment_sender");
    $sender_email = mysql_result($cquery, $i, "comment_sender_email");
    $sender_www = mysql_result($cquery, $i, "comment_sender_www");
    $sender_ip = mysql_result($cquery, $i, "comment_sender_ip");
    $comment_date = mysql_result($cquery, $i, "comment_date");

//Tarkistetaan haun tulokset
  if (!$sender_email) {
    $s_email = "@";
  } else {
    $s_email = "<a href=\"mailto:$sender_email\">@</a>";
  } if (!$sender_www) {
    $s_www = "www";
  } else {
    $s_www = "<a href=\"http://{$sender_www}\" target=\"_new\">www</a>";
  } if (!$sender) {
    $s = "no nick";
  } else {
    $s = "$sender";
  } if (!$sender_ip) {
    $ip_loggedornot = "not logged";
  } else {
    $ip_loggedornot = "logged";
  }

//Lasketaan monesko kommentti on kyseessä
  $number = 1 + $i;

//Echotaan kommentit
   echo "
    <table width=\"70%\" height=\"*\" cellpadding=\"0\" cellspacing=\"0\">
    <tr height=\"14\" bgcolor=\"#8D9BA9\">
    <td>
     <font color=\"#FF0000\">#$number</font> <b>$s</b> $s_email - $s_www
    </td>
    <td align=\"right\">
    ip: $ip_loggedornot 
    </td>
    </tr>
    <tr>
    <td>
        <table width=\"100%\" height=\"*\" cellpadding=\"10\" cellspacing=\"0\" align=\"center\">
        <tr>
        <td>
        $content
        <br><br>$comment_date
        </td>
        </tr>
        </table>
    </td>
    </tr>
    </table><br><br>";
}
}

//Haetaan käyttäjän ip
  $ip = $_SERVER['REMOTE_ADDR'];

//Echotaan formi
    echo "
      <br><br><br><br>
      <form action=\"index.php?news_id={$news_id}&comments=1&write_comment=1\" method=\"post\">
      nick<br>
       <input type=\"text\" name=\"nick\"><br><br>
      email<br>
       <input type=\"text\" name=\"email\"><br><br>
      www<br>
       <input type=\"text\" name=\"www\"><br><br>
      comment<br>
       <textarea name=\"comment\" cols=\"40\" rows=\"5\"></textarea>
      <input type=\"hidden\" name=\"ip\" value=\"$ip\">
      <input type=\"hidden\" name=\"newsid\" value=\"$news_id\"><br><br>
      <input type=\"submit\" value=\"comment\"></form>";

//Suljetaan mysql yhteys
  mysql_close($connect);
}
}
else {

//Haetaan kaikki uutiset
  $sql = "SELECT * FROM news ORDER BY id DESC";
  $query = mysql_query($sql, $connect);

//Haun tuloksia
   for ($i = 0; $i < mysql_num_rows($query); $i++) {
   $title = mysql_result($query, $i, "title");
   $dtime = mysql_result($query, $i, "dtime");
   $sender = mysql_result($query, $i, "sender");
   $news = mysql_result($query, $i, "news");
   $id = mysql_result($query, $i, "id");

//Katsotaan monta kommenttia kyseiselle uutiselle on
   $commentssql = "SELECT * FROM comments WHERE comment_news_id = '$id'";
   $commentsquery = mysql_query($commentssql, $connect);

//Echotaan uutiset
    echo "<table width=\"90%\" height=\"14\" cellpadding=\"0\" cellspacing=\"0\">
    <tr >
    <td bgcolor=\"#8D9BA9\">
    <b>$title</b> - <a href=\"index.php?news_id=$id&comments=1\">comments</a> (" . mysql_num_rows($commentsquery) . ")
    </td>
    </tr>
    </table>
    <table width=\"90%\" cellpadding=\"5\" cellspacing=\"0\">
    <tr >
    <td>
    $news
    <br>
    <br>
    $dtime by $sender
    </td>
    </tr>
    </table><br><br><br>";

}
}

//Suljetaan yhteys
  mysql_close($connect);
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta