Различни съобщения (новини) в различни страници
Автор: Galli
Написах скрипт, чрез който се записват съобщения в различни таблици (за различните страници на сайта) в база данни. Мисълта ми беше да направя ‘Съобщение от Администратора’, но не ограничих броя на записите и този скрипт може да се ползва и за новини. Целият скрипт, който записва, трие, ъпдейтва записите е в един файл, който ползва case, за да не се трупат много файлове. Извеждането на съобщенията от таблицата е отделно.
Ето таблиците, които трябва да създадете.
CREATE TABLE `message_to_all_home` (
`id` int(100) NOT NULL auto_increment,
`date` datetime NOT NULL,
`name` varchar(100) character set cp1251 NOT NULL,
`message` varchar(100) character set cp1251 NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `message_to_all_index` (
`id` int(100) NOT NULL auto_increment,
`date` datetime NOT NULL,
`name` varchar(100) character set cp1251 NOT NULL,
`message` varchar(100) character set cp1251 NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `message_to_all_profile` (
`id` int(100) NOT NULL auto_increment,
`date` datetime NOT NULL,
`name` varchar(100) character set cp1251 NOT NULL,
`message` varchar(100) character set cp1251 NOT NULL,
PRIMARY KEY (`id`)
);Ето кода, който записва, трие, ъпдейтва записите.
<?php
echo "|<a href=\"".$_SERVER['PHP_SELF']."\"> Beginn </a>|
|<a href=\"?page=view\"> View message(s) </a>|
|<a href=\"?page=addmessage\"> Set message </a>|<br><br>";
switch($_GET[page])
{
case 'addmessage': //В тази секция ще изберем типа (таблицата) на съобщението (в индекса, хоум или профил) и ще го напишем.
echo "
<form action=\"?page=add\" method=\"post\"/>
Select where wannt to show(write) message!<br>
<select name=\"messagetype\">
<option value =\"1\">Index Message</option>
<option value =\"2\">Home Message</option>
<option value =\"3\">Profile Message</option>
</select>
<br>Name of message (Only for You)<br>
<textarea cols=\"50\" rows=\"2\" name=\"name\"></textarea>
<br>Message (For all users)<br>
<textarea cols=\"50\" rows=\"5\" name=\"message\"></textarea>
<br>
<input type=\"submit\" name=\"submit\" value=\"Set Message\"/>
</form>";
exit;
case 'add': //Тази секция записва съобщението в посочената таблица.
include "config.php";
$messagetype = $_POST['messagetype']; //Тук се проверява коя таблица е избрана.
if ($messagetype == "1"){
$table = "message_to_all_index";}
elseif ($messagetype == "2"){
$table = "message_to_all_home";}
elseif ($messagetype == "3"){
$table = "message_to_all_profile";}
$date = date("Y-m-d H:i:s");
$name = $_POST['name'];
$message = $_POST['message'];
if (empty($message) or empty($name)) //Тук се проверява дали някое поле не е празно.
{
die ("Empty message or name!");
}
else
{
$sql = "INSERT INTO $table (date,name,message) VALUES ('$date','$name','$message')"; //Записва се съобщението.
$result = mysql_query($sql);
if ($result) {
echo "Added!";
} else {
echo "Not added!";
}
}
exit;
case 'view': //Тази секция показва съобщенията от избрана от вас таблица.
echo '
<form action="?page=view" method="post"/>
<select name="messagetype">
<option value="1">Index Message</option>
<option value="2">Home Message</option>
<option value="3">Profile Message</option>
</select>
<input type="submit" name="submit" value="View Message"/>
</form>';
include "config.php";
$messagetype = $_POST['messagetype']; //Тук се проверява дали някое поле не е празно.
if ($messagetype == "1"){
$table = "message_to_all_index";}
elseif ($messagetype == "2"){
$table = "message_to_all_home";}
elseif ($messagetype == "3"){
$table = "message_to_all_profile";}
echo "Viewing: <b>$table</b>"; //Показва коя таблица гледате.
$sql = "SELECT DATE_FORMAT(date, '%d %M %Y') AS datetoshow, name, id FROM $table";
$result = mysql_query($sql);
if ($result) {
echo "<table border=1 bordercolor=#ff0000><tr>
<td> Date </td>
<td> Name </td>
<td> Delete </td>
<td> Edit </td></tr>";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr>
<td>".$row['datetoshow']."</td>
<td>".$row['name']."</td>
<td><a href=\"?page=del&id=".$row['id']."&table=$table\"><font color=#ff0000><center> Delete </center></font></a></td>
<td><a href=\"?page=edit&id=".$row['id']."&table=$table\"> Edit </a></td>
</tr>";
}
echo "</table>";
}
exit;
case 'del': //Тази секция изтрива избрано съобщението от избраната от вас таблица в секция view.
if (isset($_GET['id'])){
include "config.php";
$id = $_GET['id']; //Взима id на съобщението.
$table = $_GET['table']; //Взимане на избраната таблицата.
$query = "DELETE FROM $table WHERE id='$id'"; //Изтриване на съобщението.
$result = mysql_query($query);
if ($result) {
echo "Deleted!";
} else {
echo "Not deleted!";
}
}
exit;
case 'edit': //В тази секция можете да промените избрано от вас съобщение от избраната от вас таблица в секция view.
if (isset($_GET['id'])){
include "config.php";
$id = $_GET['id']; //Взима id на съобщението.
$table = $_GET['table']; //Взимане на избраната таблицата.
$query = "SELECT date, id, name, message FROM $table WHERE id='$id'";
$result = mysql_query($query);
if ($result) {
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "
<form action=\"?page=update&id=".$row['id']."&table=$table\" method=\"post\"/>
Name of message (Only for You)<br>
<textarea cols=\"50\" rows=\"2\" name=\"newname\">".$row['name']."</textarea>
<br>Message (For all users)<br>
<textarea cols=\"50\" rows=\"5\" name=\"newmessage\">".$row['message']."</textarea>
<br>
<input type=\"submit\" name=\"submit\" value=\"Update Message\"/>
</form>";
}
}
}
exit;
case 'update': //Тази секция записва промененото съобщение.
if (isset($_GET['id'])){
include "config.php";
$id = $_GET['id']; //Взима id на съобщението.
$table = $_GET['table']; //Взимане на таблицата на.
$newdate = date("Y-m-d H:i:s"); //Взима новата дата.
$newname = $_REQUEST['newname'];
$newmessage = $_REQUEST['newmessage'];
$query = "UPDATE $table SET date = '$newdate', name= '$newname', message = '$newmessage' WHERE id='$id'";//Ъпдейтва.
$result = mysql_query($query);
if ($result) {
echo "Updated!";
} else {
echo "Not updated!";
}
}
exit;
}
?>Сега малко обяснение. Чрез select избирате типа на съобщението (в коя таблица да се запише). Името ще виждате само вие в case ‘view’: и case ‘edit’:.
DATE_FORMAT(date, ‘%d %M %Y’) ще ни показва датата в този вид: 27 March 2007.
Как работят линковете?
?page=del&id=“.$row[‘id’].“&table=$table
del е името на секцията, „.$row[‘id’].“ e id-то на съобщението в MySQL таблицата (взима се с $id = $_GET[‘id’];), $table е името на таблицата, в която е съобщението (взима се с $table = $_GET[‘table’];).
include „config.php“; е връзката с базата данни. Ето го съдържанието на config.php.
<?php
$host="**"; //хост на MySQL
$dbusername="**"; //user на MySQL
$dbpassword="**"; //парола на user на MySQL
$db="**"; //име на базата данни, в която са таблиците message_to_all_index/home/profile
$db_conn = mysql_connect("$host", "$dbusername", "$dbpassword") or die("unable to connect to the database");
mysql_select_db("$db", $db_conn) or die("unable to select the database");
?>Извеждането в различните страници става с код, в който трябва да промените само таблицата (или message_to_all_index или message_to_all_home или message_to_all_profile).
<?php
include "config.php";
$sql = "SELECT DATE_FORMAT(date, '%d %M %Y') AS datetoshow, message FROM message_to_all_index";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<font color=#ff0000>MESSAGE FROM ADMIN ".$row['datetoshow']."<br>".$row['message']."<br></font>";
}
?>Когато няма запис в дадена таблица, няма да виждате нищо в съответната страница.
В примера са само три таблици, но вие може и повече да ги направите, съответно в select ги добавяте.
Този урок е написан специално за web-tourist.net. Забранявам копирането и публикуването му в друг сайт!


