Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: скрипт блог
 
 автор: lightning.say   (01.07.2011 в 16:27)   письмо автору
 
 

Доброго всем времени суток!
Не подскажете скрипт блога с использоанием MySQL?
Спасибо!

  Ответить  
 
 автор: cheops   (02.07.2011 в 00:19)   письмо автору
 
   для: lightning.say   (01.07.2011 в 16:27)
 

А сами его создать не хотите? Вроде не очень сложное приложение? Если что-то вызывает затруднение мы бы могли помочь.

  Ответить  
 
 автор: Emm   (02.07.2011 в 02:03)   письмо автору
 
   для: cheops   (02.07.2011 в 00:19)
 

=)

  Ответить  
 
 автор: lightning.say   (02.07.2011 в 06:31)   письмо автору
 
   для: cheops   (02.07.2011 в 00:19)
 

Ок! Переделываю гостевую книгу в блог.

index.php

<?

  $title
="Блог";
  include 
"../admin/config.php";  
  include 
"../util/top1.php";    
?>  
<h1 class=artnamepage>Блог</h1>

<?
  
// Осуществляем соединение с базой данных
  // Извлекаем из строки запроса параметр start
  
if(isset($_GET['start'])) $start = $_GET['start'];
  else 
$start = "";
  
// Стартовая точка
  
if (empty($start)) $start = 0;
  
// Стартовая точка не может быть меньше нуля
  
if ($start < 0) $start = 0;
  
// Запрашиваем общее число отображаемых сообщений
  
$query = "SELECT count(*) FROM blog
            WHERE hide = 'show'"
;
  
$tot = mysql_query($query);
  
// Запрашиваем сами сообщения
  
$query = "SELECT * FROM blog
            WHERE hide = 'show' 
            ORDER BY puttime DESC
            LIMIT 
$start, $pnumber";
  
$thm = mysql_query($query);
  if(!
$tot || !$thm) puterror("Ошибка при выборке сообщений...");
  
// Общее число отображаемых сообщений
  
$count= mysql_result($tot,0);
  
// Выводим ссылки на предыдущие и следующие сообщения
  
if ($start > 0)  print "<a href=index.php?start=".($start-$pnumber).">Предыдущие</A>";
  if (
$count > $start + $pnumber)  print " <a href=index.php?start=".($start + $pnumber).">Следующие</A>";
  while(
$themes = mysql_fetch_array($thm))
  {
    
// Извлекаем переменные из базы данных
    
$theme = trim($themes['theme']);
    
$msg = trim($themes['msg']);
?>
<table border="0" cellpadding="0" cellspacing="0" width=80%>
    <tr bgcolor="#DEDEDE">
      <td height="20"><p>&nbsp;&nbsp;<b><? echo $theme?></b>&nbsp;
      <td align="right"><p class=help>от: <? print $themes['puttime']; ?></td>
    </tr>
    <tr>
        <td><p><? echo $msg; ?><br>
        </td>
    </tr>
</table><br>       
<?
  
}
  
// Выводим ссылки на предыдущие и следующие сообщения
  
if ($start > 0)  print "<a href=index.php?start=".($start-$pnumber).">Предыдущие</a>";
  if (
$count > $start + $pnumber)  print " <a  href=index.php?start=".($start + $pnumber).">Следующие</a>";

include 
"../util/bottom1.php";    
?>


addrec.php

<?

// Устанавливаем соединение с базой данных
include "../admin/config.php";
$error = "";
$action = "";
// Возвращаем значение переменной action, переданной в урле
$action = $_POST["action"];
// Если оно не пусто - добавляем сообщение в базу данных
if (!empty($action)) 
{
  
// Проверяем сообщение на слишком длинные слова
  
$lenmsg = strlen($msg);
  
$templen = 0;
  
$temp = strtok($msg, " ");
  if (
strlen($msg)>60)
  {
    while (
$templen < $lenmsg)
    { 
      if (
strlen($temp)>60)
      {
        
$action = ""; 
        
$error = $error."<LI>Текст сообщения содержит слишком много символов без пробелов\n";
        break;
      }
      else
      {
        
$templen = $templen + strlen($temp) + 1;
      }
      
$temp = strtok(" ");            
    }       
  }
  
  
// Проверяем правильность ввода информации в поля формы
  
$_POST["msg"] = trim($_POST["msg"]);
  if (empty(
$_POST["msg"])) 
  {
    
$action = ""; 
    
$error = $error."<LI>Вы не ввели сообщение\n";
  }

  
$_POST["theme"] = trim($_POST["theme"]);
  if (empty(
$_POST["theme"])) 
  {
    
$action = ""; 
    
$error = $error."<LI>Вы не ввели Тему\n";
  } 


  
// Обрабатываем HTML-тэги и скрипты в сообщении и информации
  // ограничиваем объём сообщения
  
$theme = substr($_POST["theme"],0,32);
  
$theme = htmlspecialchars(stripslashes($theme));
  
$msg = substr($_POST["msg"],0,1024);
  
$msg = htmlspecialchars(stripslashes($msg));
  

      
  if (empty(
$error)) 
  {
    
$msg = nl2br($msg);
    
// Обрабатываем встроенные тэги
    
$msg = str_replace("[u]", "<u>", $msg);
    
$msg = str_replace("[U]", "<u>", $msg);
    
$msg = str_replace("", "<i>", $msg);
    
$msg = str_replace("[I]", "<i>", $msg);
    
$msg = str_replace("", "<B>", $msg);
    
$msg = str_replace("[B]", "<B>", $msg);
    
$msg = str_replace("", "<SUB>", $msg);
    
$msg = str_replace("[SUB]", "<SUB>", $msg);
    
$msg = str_replace("", "<SUP>", $msg);
    
$msg = str_replace("[SUP]", "<SUP>", $msg);
    
$msg = str_replace("[/u]", "</u>", $msg);
    
$msg = str_replace("[/U]", "</u>", $msg);
    
$msg = str_replace("
"
, "</i>", $msg);
    
$msg = str_replace("[/I]", "</i>", $msg);
    
$msg = str_replace("
", "</B>", $msg);
    
$msg = str_replace("[/B]", "</B>", $msg);
    
$msg = str_replace("", "</SUB>", $msg);
    
$msg = str_replace("[/sub]", "</SUB>", $msg);
    
$msg = str_replace("", "</SUP>", $msg);
    
$msg = str_replace("[/sup]", "</SUP>", $msg);
    
$msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3", $msg);
    
$msg = str_replace("\n", " ", $msg);
    
$msg = str_replace("\r", " ", $msg);
    
// Запрос к базе данных на добавление сообщения
    
$query = "INSERT INTO blog VALUES (0,
                    '
$theme',
                                       '
$msg',                                       
                                        NOW(),
                                        'show');"
;
    if(
mysql_query($query))
    {
      
// Если в конфигурационном файле 
      // $sendmail = true отправляем уведомление
      
if($sendmail)
      {
        
$thm = "blog - a new post";
        
$msg = "post: $theme: $msg";
        
mail($valmail, $thm, $msg);
      }
      
// Возвращаемся на главную страницу, если всё прошло удачно
      
print "<HTML><HEAD>\n";
      print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n";
      print 
"</HEAD></HTML>\n";
      exit();
    }
    else
    {
      
// Выводим сообщение об ошибке в случае неудачи
      
echo "<a href='index.php'>Вернуться</a>";
      echo(
"<P> Ошибка при добавлении сообщения</P>");
      echo(
"<P> $query</P>");
      exit();
    }
  }
}

if (empty(
$action)) 
{
  
$title="Добавить сообщение в блог";   
  include 
"../util/top1.php";   
?>
<h1 class=artnamepage>Блог</h1>
<p><a href="index.php" title="Вернуться в блог">Блог</a></p>
<form action=addrec.php method=post>
<input type=hidden name=action value=post>
<table>
  <tr>
    <td><p><b>Тема</b> *:</td>
    <td><input class=input type=text name=theme value='<? echo $theme; ?>'></td>
  </tr>  
  <tr>
    <td><p><b>Сообщение</b> *:</td>
    <td><textarea class=input cols=42 rows=5 name=msg><? echo $msg; ?></textarea></td>
  </tr>
  <tr>
    <td></td>
    <td><input class=button type="submit" value="Добавить"></td>
  </tr>
  </table>      
</form>
<?php
  
// Выводим сообщение об ошибке
  
if (!empty($error)) 
  {
    print 
"<p class=msg><b>Во время добавления записи произошли следующие ошибки:</b></p>";
    print 
"<UL><p>\n";
    print 
$error;
    print 
"</UL>\n";
  }
}
include 
"../util/bottom1.php"; 
?>

  Ответить  
 
 автор: cheops   (02.07.2011 в 15:26)   письмо автору
 
   для: lightning.say   (02.07.2011 в 06:31)
 

Давайте код, addrec.php сделаем более современным, а содержимое базы данных, не зависящим от оформления
<?php
  
// Устанавливаем соединение с базой данных 
  
include "../admin/config.php"; 
  
$error[] = array(); 
  
// Если оно не пусто - добавляем сообщение в базу данных 
  
if (!empty($_POST["action"]))  
  { 
    if (!
get_magic_quotes_gpc())
    {
      
$_POST["msg"]   = mysql_escape_string($_POST["msg"]);
      
$_POST["theme"] = mysql_escape_string($_POST["theme"]);
    }

    
// Проверяем правильность ввода информации в поля формы 
    
$_POST["msg"] = trim($_POST["msg"]); 
    if (empty(
$_POST["msg"])) $error[] = "Вы не ввели сообщение\n"; 
    
$_POST["theme"] = trim($_POST["theme"]); 
    if (empty(
$_POST["theme"])) $error[] = "Вы не ввели Тему\n"; 

         
    if (empty(
$error))  
    { 
      
// Запрос к базе данных на добавление сообщения 
      
$query = "INSERT INTO blog
                VALUES (NULL, 
                        '
$_POST[theme]', 
                        '
$_POST[msg]',                                        
                        NOW(), 
                        'show');"
; 
      if(!
mysql_query($query))
      { 
        
// Выводим сообщение об ошибке в случае неудачи 
        
echo "<a href='index.php'>Вернуться</a>"; 
        echo(
"<P> Ошибка при добавлении сообщения</P>"); 
        echo(
"<P> $query</P>"); 
        exit(); 
      } 
      
// Если в конфигурационном файле  
      // $sendmail = true отправляем уведомление 
      
if($sendmail) 
      { 
        
$thm = "blog - a new post"; 
        
$msg = "post: $theme: $msg"; 
        
mail($valmail, $thm, $msg); 
      } 
      @
header("Location: index.php");
      exit();
    } 
  } 

  
$title="Добавить сообщение в блог";    
  include 
"../util/top1.php";    
?> 
<h1 class="artnamepage">Блог</h1> 
<p><a href="index.php" title="Вернуться в блог">Блог</a></p> 
<form action="addrec.php" method="post"> 
<input type="hidden" name="action" value="post"> 
<table> 
  <tr> 
    <td><p><b>Тема</b> *:</td> 
    <td><input class="input" type="text" name="theme"
               value='<?php echo htmlspecialchars($theme, ENT_QUOTES); ?>'></td> 
  </tr>   
  <tr> 
    <td><p><b>Сообщение</b> *:</td> 
    <td><textarea class="input" cols="42" rows="5" 
        name="msg"><?php echo htmlspecialchars($msg, ENT_QUOTES); ?></textarea></td> 
  </tr> 
  <tr> 
    <td></td> 
    <td><input class="button" type="submit" value="Добавить"></td> 
  </tr> 
  </table>       
</form> 
<?php 
  
// Выводим сообщение об ошибке 
  
if (!empty($error))
  { 
    echo 
"<div class='error'>"implode("<br>", $error)"</div>";
  } 
  include 
"../util/bottom1.php";  
?>
А при выводе сообщений, содержимое <? echo $msg; ?> будем обрабатывать при помощи htmlspecialchars() и осуществлять все преобразования встроенных тэгов, которые лучше оформить в виде отдельной функции.

  Ответить  
 
 автор: lightning.say   (02.07.2011 в 16:32)   письмо автору
 
   для: cheops   (02.07.2011 в 15:26)
 

проверка if (empty($error)) блокирует запись в бд, исправил на if (!empty($error)) запись осуществилась,
и вот здесь echo "<div class='error'>"implode("<br>", $error)"</div>"; почему-то пишет:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\Data\II\Site\blog\addrec.php on line 79

  Ответить  
 
 автор: cheops   (02.07.2011 в 21:50)   письмо автору
 
   для: lightning.say   (02.07.2011 в 16:32)
 

>проверка if (empty($error)) блокирует запись в бд,
Она и должна блокировать, если есть какие-то ошибки
>echo "<div class='error'>"implode("<br>", $error)"</div>";
Исправьте эту строку следующим образом
echo "<div class='error'>".implode("<br>", $error)."</div>";

  Ответить  
 
 автор: lightning.say   (03.07.2011 в 01:30)   письмо автору
 
   для: cheops   (02.07.2011 в 21:50)
 

похоже вот эта строчка $error[] = array(); мешает осуществится проверке if (empty($error)) в пользу записи и в конце выходит Array вместо ошибки, похоже квадратные скобки после $error мешали, без них все норм.

  Ответить  
 
 автор: cheops   (03.07.2011 в 13:38)   письмо автору
 
   для: lightning.say   (03.07.2011 в 01:30)
 

Да, конечно, $error[] = array(); следует заменить на $error = array();

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования