Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Проблема с SQL запросами?

#1 cap4369

cap4369
  • Пользователь
  • 62 сообщений
  • Репутация: 1
0

Отправлено 29 Август 2013 - 20:29

Здравствуйте!
Занимаюсь PHP программированием не так давно. Возникла проблема: при создании админ панели создал скрипт добавления страниц на сайт. Но почему- то не всегда полностью заполняются все необходимые поля таблицы базы данных. Несколько раз проверял код, ошибок вроде бы нет. После перезагрузки и очистки кэш все стало работать. Подскажите, может ли это влиять на правильность работы приложения? Или что- то в коде у меня не правильно? И будет ли это сказываться в дальнейшем, когда сайт будет на хостинге? Если да, то как можно с этим бороться? Привожу код:

<?
require_once './config.php';
require_once './auth.php';

if($_POST['submit']) {
	 $title = mysql_real_escape_string($_POST['title']);
	 $keywords = mysql_real_escape_string($_POST['keywords']);
	 $description = mysql_real_escape_string($_POST['description']);
	 $short_text = mysql_real_escape_string($_POST['short_text']);
	 $content = mysql_real_escape_string($_POST['content']);
	 $category = (int)$_POST['category'];
	 $date = date("Y-m-d");
	
  if($_POST['visible'] == 'on') $visible = 1;
  else $visible = 0;

$res = mysql_query("INSERT INTO `articles` SET
			`title`='{$title}',
			`keywords`='{$keywords}',
			`description`='{$description}',
			`date`='{$date}',
			`short_text`='{$short_text}',
			`content`='{$content}',
			`category`='{$category}',
			`visible`='{$visible}'
			") or die(mysql_error());
		  
if(mysql_affected_rows() > 0){
  $_SESSION['res'] = '<strong>Статья успешно добавлена!</strong><hr />';
  header("Location: add_article.php");
  exit;
}
else{
  $_SESSION['res'] = '<strong>Ошибка!</strong><hr />';
  header("Location: add_article.php");
exit;
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Добавление статьи</title>
<link rel="stylesheet" href="admin.css" type="text/css" media="screen, projection" />
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="AjexFileManager/ajex.js"></script>
<script type="text/javascript" src="js/jquery-1.7.min.js"></script>
<script type="text/javascript" src="js/equalHeight.js" ></script>
</head>
<body>
<div id="wrapper">
<?php
require_once '/header_admin.php';
require_once '/menu.php';
?>
<!-- Контент -->
<div id="middle">
<div id="container">
<div id="maincontent">
<div id="title">
<h1>Для добавления статьи заполните поля в приведенной ниже форме:<h1>
</div>
<?=$_SESSION['res'];?>
<?unset($_SESSION['res']);?>
<div id="form">
<form method="post">

<table>
<tr>
  <td>Название статьи: </td>
  <td><input type="text" name="title" maxlength="255" size="70"></td>
</tr>
<tr>
  <td>Ключевые слова: </td>
  <td style="margin-bottom: 29px;"><input type="text" name="keywords" maxlength="" size="70"></td>
</tr>
<tr>
  <td>Описание: </td>
  <td><input type="text" name="description" maxlength="250" size="70"></td>
</tr>
<tr>
  <td>Краткий текст статьи: </td>
  <td><textarea id="editor1" type="text" name="short_text" cols="52" rows="5" /></textarea>
   <script type="text/javascript">
	var ckeditor1 = CKEDITOR.replace('editor1');
	AjexFileManager.init({returnTo:'ckeditor',editor:ckeditor1});
   </script>
  
  </td>
</tr>
<tr>
  <td>Полный текст статьи: </td>
  <td><textarea id="editor2" type="text" name="content" cols="52" rows="10" /></textarea>
   <script type="text/javascript">
	var ckeditor2 = CKEDITOR.replace('editor2');
	AjexFileManager.init({returnTo:'ckeditor',editor:ckeditor2});
   </script>
  </td>
</tr>
<tr>
  <td>Автор: </td>
  <td><input type="text" name="author" maxlength="100" size="70"></td>
</tr>
<tr>
  <td>Категория: </td>
  <td>
   <select name="category">
	<?php
	 $res = mysql_query("SELECT * FROM `category`");
	 while($row = mysql_fetch_assoc($res)) {
	  echo "<option value='{$row['category_id']}'> {$row['name']} </option>";
	 }
	?>
   </select>
  </td>
</tr>
<tr>
  <td>Видимость: </td>
  <td><input type="checkbox" name="visible" checked></td>
</tr>
<tr>
  <td colspan="2"><input type="submit" name="submit" value="Добавить"></td>
</tr>
</table>
</form>
</div><!--#form-->

</div><!-- #maincontent-->
</div><!-- #container-->
<?
require_once '/left_admin.php';
require_once '/footer.php';
?>

 

 

  • 0

#2 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 29 Август 2013 - 20:51

Уроков Попова начитался?
Все вроде правильно навскидку. Но еще можно дополнительно использовать trim() и проверять заполнены ли поля заголовка и контента, а то пустой заголовок будет, а запись все равно получится.
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#3 alex159

alex159
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 29 Август 2013 - 21:21

fedornabilkin, как по мне, это не с уроков Попова, хотя кто знает.
  • 0

#4 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 29 Август 2013 - 22:12

Уроков Попова начитался?

Вообще-то в древних курсах Попова код и близко не настолько безопасен, как в приведенном коде... например, функции mysql_real_escape_string() там днем с огнем там не сыщешь.
Даже и не знаю, чем этот код Вам напомнил Попова :) как по мне, то очень даже приемлемый код для того, кто только начал изучать программирование... хотя понятно, что на этом останавливаться не нужно.
  • 0


#5 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 30 Август 2013 - 00:50

Спасибо за поддержку. Я только учусь, надеюсь со временем и сам кому- нибудь буду помогать и с улыбкой вспоминать о своих проблемах. :)
Это мой первый сайт, до этого я сделал учебный сайт на Codeigniter и решил, что он мне не подходит. Я хочу создавать сайты со своими CMS и никак иначе. Пока пробую сделать простой сайт, потом буду изучать ООП.
  • 0


Оформление форума – IPBSkins.ru