Добавление статьи на php

Rio173

Новичок
Проблема такова, создал форму добавления статьи, после заполнения формы, переменные отправляются в обработчик, который отправляет данные в базу и выводит статью на странице. Но беда в том, что введенный текст ведет себя не понятно и отображается по разному.
Форма
PHP:
  <form  method="post" name="form1" action="add_article.php">
        Введите название статьи
        <input name="title"  type="text"  size="40" >
        Введите краткое описание
        <input name="meta_d"   type="text"  size="40" >
        Введите ключевые слова
        <input name="meta_k"  type="text"  size="40"  maxlength="30" >
        Введите дату добавления статьи
        <input name="date"  type="text"  size="40" >
       <p> Введите краткое описание статьи</p>
       <p><textarea name="description" cols="40" rows="" title="Краткое описание" ></textarea></p>
       Введите текст:
       <p><textarea name="text"  cols="40" rows=""  title="Введите текст" ></textarea></p>
       Назовитесь:
       <input name="author"   type="text" size="40" maxlength="10" >
       <input name="submit"  type="submit" value="Занести урок в базу">
        </form>

обработчик:
PHP:
if (isset($_POST['title']))
{
	$title = $_POST['title'];
}
if (isset($_POST['meta_d']))
{
	$meta_d = $_POST['meta_d'];
}
if (isset($_POST['meta_k']))
{
	$meta_k = $_POST['meta_k'];
}
if (isset($_POST['date']))
{
	$date = $_POST['date'];
}
if (isset($_POST['description']))
{
	$description = $_POST['description'];
}
if (isset($_POST['text']))
{
	$text = $_POST['text'];
}
if (isset($_POST['author']))
{
	$author = $_POST['author'];
}
?>
<---HTML---->
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description) && isset($text) && isset($author))		
{
	// Здесь пишем что нужно заносить в базу
$result =  mysql_query("INSERT INTO articles (title,meta_d,meta_k,date,description,text,author) VALUES ('$title','$meta_d','$meta_k','$date','$description','$text','$author') ");
if ($result == 'true') { echo "<p>Статья добавлена!</p>";}
else { echo  "<p>Статья не добавлена!</p>";}

}
else
{
	echo "Введены не все данные! Попробуйте снова.";	
}
<---HTML--->
 

Rio173

Новичок
пока перечитывал, что написал в теме нашел ошибку сам =)
проблема была в rows=""
 

Фанат

oncle terrible
Команда форума
Удивительна вот эта страсть писать много-много повторяющихся строк.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Какой сокральный смысл всех этих приравниваний $title = $_POST['title']? Если потом ты все равно пытаешься вставить все те же самые данные, без какой либо работы над ними?
 

Фанат

oncle terrible
Команда форума
Ну, здесь дело не в конкретном "как иначе" а в принципиальном подходе.
ИМХО, у программиста должно зудеть в одном месте (в руках, я имею в виду) когда он видит кучу повторов. Потому что кучу повторов всегда можно записать циклом.
Смотри, у тебя каждое имя поля повторяется ПЯТЬ раз. $_POST и isset повторяются вообще умопомрачительное число раз
А я бы всё писал по одному:

PHP:
$fields = array('title','meta_d','meta_k','date','description','text','author');

$ok = TRUE;
foreach ($fields as $f) {
    if (!isset($_POST[$f])) {
        $ok = FALSE;
        break;
    }
}
if ($ok)        
{
    $result = mysql_query("INSERT INTO articles SET ".dbSet($fields);
    header("Location: /");
    exit;
}
else
{
   $error = "Введены не все данные! Попробуйте снова.";
}
?>
<---HTML---->
Причем этот код с минимальными переделками может быть использован для вставки, с кажем, новостей. Заменить один массив с именами полей куда проще, чем менять во всех 50-ти местах.

PHP:
function dbSet($fields, $source = array()) { 
  $set=''; 
  if (!$source) $source = &$_POST; 
  foreach ($fields as $field) { 
    if (isset($source[$field])) { 
      $set.="`$field`='".mysql_real_escape_string($source[$field])."', "; 
    } 
  } 
  return substr($set, 0, -2);  
}
 
Сверху