Webmaster общности: Predpriemach.com | SearchEngines.bg

    Различни съобщения (новини) в различни страници

    Автор: 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. Забранявам копирането и публикуването му в друг сайт!

    Оставете коментар