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

Форум PHP

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

 

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

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

тема: Обновление базы данных
 
 автор: qwert   (29.03.2012 в 18:30)   письмо автору
 
 

Не могу найти ошибку.
Выходит запись: Вы ввели не всю информацию, поэтому рубрика не может быть добавлена в базу

<?php 
if  (isset($_POST['title']))         {$title $_POST['title']; if ($title == '') {unset ($title);}  }
if  (isset(
$_POST['clear_description']))         {$clear_description $_POST['clear_description']; 
if (
$clear_description == '') {unset ($clear_description);}  }
if  (isset(
$_POST['zagolovok']))         {$zagolovok $_POST['zagolovok']; if ($zagolovok == ''
{unset (
$zagolovok);}  }
if  (isset(
$_POST['meta_d']))        {$meta_d $_POST['meta_d']; if ($meta_d == '') {unset ($meta_d);}}
if  (isset(
$_POST['meta_k']))        {$meta_k $_POST['meta_k']; if ($meta_k == '') {unset ($meta_k);}}
if  (isset(
$_POST['date']))          {$date $_POST['date']; if ($date == '') {unset ($date);}}
if  (isset(
$_POST['description']))          {$description $_POST['description']; 
if (
$description == '') {unset ($description);}}
if  (isset(
$_POST['descript']))          {$descript $_POST['descript']; if ($descript == ''
{unset (
$descript);}}
if  (isset(
$_POST['text']))          {$text $_POST['text']; if ($text == '') {unset ($text);}}
if  (isset(
$_POST['author']))          {$author $_POST['author']; if ($author == ''
{unset (
$author);}}
if  (isset(
$_POST['id']))          {$id $_POST['id'];}

if  (isset(
$_POST['cat']))          {$cat $_POST['cat']; if ($cat == '') {unset ($cat);}}
if  (isset(
$_POST['mini_img']))          {$mini_img $_POST['mini_img']; if ($mini_img == '')
 {unset (
$mini_img);}}

?>


        <?php 
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($date) && isset($description
&&isset(
$descript) && isset($text) && isset($author) && isset($cat) && isset($mini_img
&& isset(
$zagolovok) && isset($clear_description))
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result mysql_query ("UPDATE data SET title='$title', zagolovok='$zagolovok', meta_d='$meta_d', 
meta_k='
$meta_k', date='$date', description='$description', descript='$descript', 
clear_description='
$clear_description', text='$text', author='$author', cat='$cat', 
mini_img='
$mini_img' WHERE id='$id'");
if (
$result == 'true') {echo "<p>Ваша рубрика обновлена!</p>";}
else {echo 
"<p>Ваша рубрика не обновлена!</p>";}
}          
    
else 
{
echo 
"<p>Вы ввели не всю информацию, поэтому рубрика не может быть добавлена в базу</p>";
}
            
        
?>

  Ответить  
 
 автор: task   (29.03.2012 в 18:33)   письмо автору
 
   для: qwert   (29.03.2012 в 18:30)
 

Каша. ) Все эти поля обязательны для заполнения?

  Ответить  
 
 автор: qwert   (29.03.2012 в 18:35)   письмо автору
 
   для: task   (29.03.2012 в 18:33)
 

да все поля

  Ответить  
 
 автор: task   (29.03.2012 в 18:39)   письмо автору
 
   для: qwert   (29.03.2012 в 18:35)
 

Тогда не дейлайте так. Не буду описывать ваши (замечу только, что логика у вас скажем так, хромает в обработке полей), а покажу на простом примере. Если полей много, то выгоднее поступать так:
<?
//это описание полей формы обязательных для заполнения
$full = array('a'=>'Имя','b'=>'Фамилие','c'=>'Отчество','d'=>'Пол');
//это пусть будет массив POST полученный от формы
$post = array('a'=>'Иван','b'=>' ','c'=>'Петрович','d'=>'','e'=>'','f'=>'');
//получаем только поля обязательные для заполнения,
//и проверяем все ли они заполнены
if($empty array_intersect(array_map('trim',array_intersect_key($post$full)), array(null))) {
   
//есть пустые поля обязательные для заполнения
   
$empty array_intersect_key($full$empty);
   
//вывод ошибок
   
foreach($empty as $v) echo 'Поле "'.$v.'" не может быть пустым<br>';
}
Вот в таком ключе

  Ответить  
 
 автор: qwert   (29.03.2012 в 18:41)   письмо автору
 
   для: task   (29.03.2012 в 18:39)
 

спасибо. но это для сложно.
лучше уж оставить прежний вариант.
буду признателен, если укажите на ошибку

  Ответить  
 
 автор: task   (29.03.2012 в 18:46)   письмо автору
 
   для: qwert   (29.03.2012 в 18:41)
 

И что в этом сложного? Это намного проще чем писать длинную и запутанную портянку, собственно в которой вы сами и запутались. )
А ошибку сможете увидеть, просмотрев дампы своих переменных.

  Ответить  
 
 автор: qwert   (29.03.2012 в 18:56)   письмо автору
 
   для: task   (29.03.2012 в 18:46)
 

а как можно посмотреть такие дампы?

  Ответить  
 
 автор: task   (29.03.2012 в 18:59)   письмо автору
 
   для: qwert   (29.03.2012 в 18:56)
 

var_dump(var)
Коли вам нравится длинное и некчемное, ну пишите хотя бы так (более логичнее и читабельнее):
<?
$title 
= isset($_POST['title']) ? trim($_POST['title']) : null;
//и т.д.
unset у вас совсем ни к чему. И проверяйте в итоге не установку переменной (она установлена может быть), а пуста они или нет, то есть просто:
<?
if($a && $b && ...) {}

  Ответить  
 
 автор: qwert   (29.03.2012 в 19:02)   письмо автору
 
   для: task   (29.03.2012 в 18:59)
 

var_dump(var)

это и выводится var_dump(var)

а как сам дам вывести?

  Ответить  
 
 автор: task   (29.03.2012 в 19:04)   письмо автору
 
   для: qwert   (29.03.2012 в 19:02)
 

<?
$a 
'text';
$b false;
$c '';
var_dump($a$b$c);

  Ответить  
 
 автор: qwert   (29.03.2012 в 19:17)   письмо автору
 
   для: task   (29.03.2012 в 19:04)
 

вот что у меня получилось

<?php 
var_dump
($title,$meta_d,$meta_k,$date,$description,$descript,$text,$author,$cat,$mini_img,
$zagolovok,$clear_description,$ling);
?>


и ответ
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL

в чем проблема?

  Ответить  
 
 автор: cheops   (29.03.2012 в 19:21)   письмо автору
 
   для: qwert   (29.03.2012 в 19:17)
 

Дамп выводите уже после создания этих переменных, если не сложно выведите дамп массива $_POST - он у вас заполнен?

  Ответить  
 
 автор: qwert   (29.03.2012 в 19:27)   письмо автору
 
   для: cheops   (29.03.2012 в 19:21)
 

праильно ли я написал?

<?php 
var_dump
($_POST);
?>

ответ:
array(0) { }

  Ответить  
 
 автор: task   (29.03.2012 в 19:29)   письмо автору
 
   для: qwert   (29.03.2012 в 19:27)
 

Да, но 0 означает, что массива $_POST не получено.

  Ответить  
 
 автор: task   (29.03.2012 в 19:28)   письмо автору
 
   для: qwert   (29.03.2012 в 19:17)
 

Во-первых - так как вы обрабатываете поля, мало того, что это не логично, но к тому же еще, не отвечает вашим условиям. Что вы делаете (это я беру момент проверки вашей):
<?
if ($title == '')...
//но ведь пользователь может нажать клавишу пробела,
//и ваша проверка пропустит пустое поле
//а далее у вас
{unset ($title);
//если ранее эта переменная не объявлялась, то к чему это?

Такие значения (все равны NULL) вы получите, например, при первой загрузке страницы, если у вас она и выдает форму, и обрабатывает ее. Иначе поля не заполнены или не отправлены. Если все эти поля это текстовые поля формы, то не отправлены они могут быть только в том случае, если их насильно удалили из формы, иначе они будут всегда установлены (почему и не стоит проверять на isset).

  Ответить  
 
 автор: qwert   (29.03.2012 в 19:44)   письмо автору
 
   для: task   (29.03.2012 в 19:28)
 

поменял

<?php 
$title 
= isset($_POST['title']) ? trim($_POST['title']) : null;
$clear_description = isset($_POST['clear_description']) ? trim($_POST['clear_description']) : null;
$zagolovok = isset($_POST['zagolovok']) ? trim($_POST['zagolovok']) : null;
$meta_d = isset($_POST['meta_d']) ? trim($_POST['meta_d']) : null;
$meta_k = isset($_POST['meta_k']) ? trim($_POST['meta_k']) : null;
$date = isset($_POST['date']) ? trim($_POST['date']) : null;      
$description = isset($_POST['description']) ? trim($_POST['description']) : null;  
$descript = isset($_POST['descript']) ? trim($_POST['descript']) : null;  
$text = isset($_POST['text']) ? trim($_POST['text']) : null
$author = isset($_POST['author']) ? trim($_POST['author']) : null
$cat = isset($_POST['cat']) ? trim($_POST['cat']) : null
$mini_img = isset($_POST['mini_img']) ? trim($_POST['mini_img']) : null
$ling = isset($_POST['ling']) ? trim($_POST['ling']) : null

if  (isset(
$_POST['id'])) {$id $_POST['id'];}
?>


теперь вижу дамп
string(57) "Отечественная война с...
..." string(4367) "Документ без названия
...
" ["id"]=> string(3) "242" ["submit"]=> string(19) "Сохранить изменения" }

Что дальше делать?

и что это за цифры:
" NULL string(1) "3" string(36) "img/rubrics/school_life/242_mini.jpg" string(57) "Отечественная война с Наполеоном: вопрос длиной в 200 лет" string(14) "Школьная жизнь" string(601) "

  Ответить  
 
 автор: task   (29.03.2012 в 19:51)   письмо автору
 
   для: qwert   (29.03.2012 в 19:44)
 

Не знаю, если все ОК, в базу. Но только не if(isset($title) && isset($clear_description)...), а if($title && $clear_description ...). А чего вам надо? Стоит только сказать, что после этой проверки, если поля не все заполнены, то просто выводить сообщение, что поля не заполнены и не будет добавлено, это не правильно. Ошибки надо исправлять, а значит возвращать форму пользователю, и не просто возвращать, а с данными, которые он уже заполнил, то есть определенные ранее переменные $title, $clear_description и т.д., должны быть вставлены в атрибуты value соответствующих полей формы, пропустив их через htmlspecialchars(). При первичной выдаче страницы они будут пусты, а при возврате формы пользователю иметь значения.

  Ответить  
 
 автор: task   (29.03.2012 в 19:52)   письмо автору
 
   для: qwert   (29.03.2012 в 19:44)
 

Цифры - это длина переменной.

  Ответить  
 
 автор: qwert   (29.03.2012 в 19:57)   письмо автору
 
   для: task   (29.03.2012 в 19:52)
 

исправил
<?php 
if ($title && $meta_d && $meta_k && $date && $description 
&& $descript && $text && $author && $cat && $mini_img 
&& $zagolovok && $clear_description && $ling)
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result mysql_query ("UPDATE data SET title='$title',.............


и все равно
Вы ввели не всю информацию, поэтому рубрика не может быть добавлена в

  Ответить  
 
 автор: task   (29.03.2012 в 19:55)   письмо автору
 
   для: qwert   (29.03.2012 в 19:44)
 

А $mini_img это что такое? Какой тип поля?

  Ответить  
 
 автор: qwert   (29.03.2012 в 19:57)   письмо автору
 
   для: task   (29.03.2012 в 19:55)
 

mini_img varchar(255)

  Ответить  
 
 автор: task   (29.03.2012 в 19:58)   письмо автору
 
   для: qwert   (29.03.2012 в 19:57)
 

Не в такблице базы, а тип поля формы?

  Ответить  
 
 автор: qwert   (29.03.2012 в 20:03)   письмо автору
 
   для: task   (29.03.2012 в 19:58)
 

вот это?
echo "<form name='form1' method='post' action='update_rubric.php'>

<label>Путь к миниатюре<br>
<input value="$myrow[mini_img]" type="text" name="mini_img" size="115" id="mini_img">
</label>

  Ответить  
 
 автор: task   (29.03.2012 в 20:05)   письмо автору
 
   для: qwert   (29.03.2012 в 20:03)
 

Погодите. Если это путь (а речь у вас идет о добалении сообщения), то откуда он может взяться, если сообщение не добавлено еще?

  Ответить  
 
 автор: qwert   (29.03.2012 в 20:10)   письмо автору
 
   для: task   (29.03.2012 в 20:05)
 

ok. есть два файла
edit_rubric.php?id=242
в этом выводятся данные для корректировки

нажимаю "Сохранить изменения"

Новый файл
update_rubric.php

в котором и выводится сообщение "Вы ввели не всю информацию, поэтому рубрика не может быть добавлена в базу"

  Ответить  
 
 автор: task   (29.03.2012 в 20:17)   письмо автору
 
   для: qwert   (29.03.2012 в 20:10)
 

Ясно. Просто я подумал, что речь идет о загрузке файла, а значит в массиве POST его не будет.
Ну коли у вас выдает что не все заполнено, значит какие-то поля не заполнены.
Еще одно очень важно замечание:
<?
//это из вашего запроса к базе
"  ' WHERE id='$id'"
//первое - числовые значения обрамлять кавычками нет нужды,
//но это не ошибка, а вот как вы это значение получаете,
//это уже опасность взлома
if  (isset($_POST['id'])) {$id $_POST['id'];}
//то есть, вы не обработав это значение, подставляете его в запрос - 100% для взлома
//а нужно так:
$id = isset($_POST['id']) ? (int)$_POST['id'] : null;
//и если равно null, то и запрос делать нет смысла
//иначе безопасно подставлять в запрос

  Ответить  
 
 автор: qwert   (29.03.2012 в 20:29)   письмо автору
 
   для: task   (29.03.2012 в 20:17)
 

Ну коли у вас выдает что не все заполнено, значит какие-то поля не заполнены.

а как узнать какие поля пустые? визуально все в порядке

  Ответить  
 
 автор: task   (29.03.2012 в 21:26)   письмо автору
 
   для: qwert   (29.03.2012 в 20:29)
 

Я не буду писать так как у вас, это слишком утомительно, напишу проще, а вы обратите внимание не на то как именно я проверяю (коли вам это кажется сложным), а на структуру страницы - объявления, проверка, вывод... То есть на логику. Если у вас при отправке формы поля заполнены гарантировано, а вы попадаете не туда куда следует, значит у вас страдает логика всей структуры страницы от и до.
Узнаете вы все ли поля заполнены в условии - if(ваши поля) {запись в базу}
Если вы редатируете существующее, значит изначально все поля заполнены. Вот пример:

<html>
<head>
<style>
.err {
    border-color: red;
}
</style>
</head>
<body>
<?
//пусть это массив имитирующий поля таблицы базы,
//по которым вы строите форму
$frm = array('title'=>'title''clear_description'=>'clear_description',
             
'zagolovok'=>'zagolovok''meta_d'=>'meta_d''meta_k'=>'meta_k',
             
'date'=>'date''description'=>'description''descript'=>'descript',
             
'text'=>'text''author'=>'author''cat'=>'cat''mini_img'=>'mini_img',
             
'ling'=>'ling''id'=>10              
);

//проверяем поля формы, если она пришла
$err array_keys(array_intersect(array_map('trim',array_intersect_key($_POST$frm)), array(null)));

if(
$_POST && !$err) { //если все поля заполнены
   
echo 'Сохранение в базе';
   exit; 
}

if(!
$_POST || $err) { //первичный вывод формы и вывод при ошибках  
  
$f = ($err 'Ошибка - не все поля заполнены' null).'<form method="post">';
  foreach(
$frm as $k=>$v$f .= '<input name="'.$k.'" '.($err && in_array($k$err) ? 'class=err' null).
                           
' type="'.($k=='id' 'hidden' 'text').'" value="'.
                           
htmlspecialchars($err && in_array($k$err) ? null $v).'" /><br />'
  echo 
$f.'<input type="submit" value="Сохранить изменения" /></form>';
}
?>
</body>
</html>
Попробуйте любое из полей (или несколько, или все) сделать пустым, а потом отправьте все поля заполненными. Работает?
У вас должно быть тоже самое, только объявления у вас посредством условной записи, и иное условие проверки.

  Ответить  
 
 автор: qwert   (29.03.2012 в 22:05)   письмо автору
 
   для: task   (29.03.2012 в 21:26)
 

это не на мой уровень

сейчас при нажати "Сохранить изменеия" ничего не грузится.

Пустой файл. Белый экран

  Ответить  
 
 автор: task   (29.03.2012 в 22:08)   письмо автору
 
   для: qwert   (29.03.2012 в 22:05)
 

Так вы свой код (на своем уровне) проверьте, структуру, те есть последовательность, логику. Так как, если ваша форма заполнена, а записи не происходит, значит не верна структура.
А уж как написать, на моем уровне, или на вашем, это роли не играет.

  Ответить  
 
 автор: qwert   (29.03.2012 в 22:20)   письмо автору
 
   для: task   (29.03.2012 в 22:08)
 

как решить вопрос пустого экрана?

вот раньше выходило сообщение об ошибке.

  Ответить  
 
 автор: task   (29.03.2012 в 22:25)   письмо автору
 
   для: qwert   (29.03.2012 в 22:20)
 

Еще раз повторяю - у вас логика (структура страницы) неверна, иначе причины не вижу (в том, что вы ранее показали и изменили так, как я советовал, ошибок нет). А что именно является причиной, сказать не могу, я ведь не знаю всего кода страницы вашей (только упаси бог высталять его сюда, если он большой, мало кому интересно будет с ним разбираться).

  Ответить  
 
 автор: qwert   (29.03.2012 в 22:40)   письмо автору
 
   для: task   (29.03.2012 в 22:25)
 

код совсем небольшой
<?php 
$title 
= isset($_POST['title']) ? trim($_POST['title']) : null;
$clear_description = isset($_POST['clear_description']) ? trim($_POST['clear_description']) : null;
$zagolovok = isset($_POST['zagolovok']) ? trim($_POST['zagolovok']) : null;
$meta_d = isset($_POST['meta_d']) ? trim($_POST['meta_d']) : null;
$meta_k = isset($_POST['meta_k']) ? trim($_POST['meta_k']) : null;
$date = isset($_POST['date']) ? trim($_POST['date']) : null;      
$description = isset($_POST['description']) ? trim($_POST['description']) : null;  
$descript = isset($_POST['descript']) ? trim($_POST['descript']) : null;  
$text = isset($_POST['text']) ? trim($_POST['text']) : null
$author = isset($_POST['author']) ? trim($_POST['author']) : null
$cat = isset($_POST['cat']) ? trim($_POST['cat']) : null
$mini_img = isset($_POST['mini_img']) ? trim($_POST['mini_img']) : null
$ling = isset($_POST['ling']) ? trim($_POST['ling']) : null
$id = isset($_POST['id']) ? (int)$_POST['id'] : null;
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Обработчик</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="maind">
<table border="0" cellspacing="0" cellpadding="0" class="tableafterheader">
  
  <tr>
  <td colspan="3" valign="top"><div id="supermain">
  <?php include ("blocks/nav.php"); ?>  </td>
  </tr>
  
  <tr>
  <td width="160" valign="top" class="leftt">
  <div id="menu2">
    <?php include ("blocks/lefttd.php"); ?>
  </div>  </td>      
<td valign="top" class="mtd">
<?php 
if ($title && $meta_d && $meta_k && $date && $description 
&& $descript && $text && $author && $cat && $mini_img 
&& $zagolovok && $clear_description && $ling)
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result mysql_query ("UPDATE data SET title='$title', zagolovok='$zagolovok', meta_d='$meta_d', 
meta_k='
$meta_k', date='$date', description='$description', descript='$descript', 
clear_description='
$clear_description', text='$text', author='$author', cat='$cat', 
mini_img='
$mini_img' , ling='$ling' WHERE id='$id'");
if (
$result == 'true') {echo "<p>Ваша рубрика обновлена!</p>";}
else {echo 
"<p>Ваша рубрика не обновлена!</p>";}
}          
    
else 
{
echo 
"<p>Вы ввели не всю информацию, поэтому рубрика не может быть добавлена в базу</p>";
}
?>
</td>
</tr>
</table>
</body>
</html>

  Ответить  
 
 автор: task   (29.03.2012 в 22:43)   письмо автору
 
   для: qwert   (29.03.2012 в 22:40)
 

Это обработчик формы, к которому она обращается, а форма выводится другим кодом?

  Ответить  
 
 автор: qwert   (29.03.2012 в 22:49)   письмо автору
 
   для: task   (29.03.2012 в 22:43)
 

да. вот обработчик
<?php 
if (!isset($id))

$result mysql_query ("SELECT title,id, date FROM data ORDER by id DESC");
$myrow mysql_fetch_array($result);
  
do
{
printf ("<p><strong>%s </strong><a href='edit_rubric.php?id=%s'>%s</a></p>",$myrow["id"], $myrow["id"], $myrow["title"]);
}
        
while (
$myrow mysql_fetch_array ($result));
}
else

{

$result mysql_query ("SELECT * FROM data where id=$id");
$myrow mysql_fetch_array($result);



$result2 mysql_query ("SELECT * FROM art_news");
$myrow2 mysql_fetch_array($result2);


echo 
"<form name='form1' method='post' action='update_rubric.php'>

<p><select name='cat'>"
;

do
{

if (
$myrow['cat'] == $myrow2['id'])
{
printf ("<option value='%s' selected>%s</option>",$myrow2["id"],$myrow2["meta_k"]);
}

else
{

printf ("<option value='%s'>%s</option>",$myrow2["id"],$myrow2["meta_k"]);
}
}
    
while (
$myrow2 mysql_fetch_array ($result2));

echo 
"</select></p>";

print <<<HERE


<font color="#FF0000">
   <br><p>
     <label>Title<br>
       <input value="
$myrow[title]" type="text" name="title" size="115" id="title">
       </label>
   </p><br>
   <br><p>
     <label>Заголовок<br>
       <input value="
$myrow[zagolovok]" type="text" name="zagolovok" size="115" id="zagolovok">
       </label>
   </p><br>
   <br>
   <p>
     <label>clear_description (впечатай название рубрики)<br>
     <input value="
$myrow[clear_description]" type="text" name="clear_description" size="115" id="clear_description">
     </label>
   </p><br>
   <p>
     <label>Краткое описание статьи<br>
     <input value="
$myrow[meta_d]" type="text" name="meta_d" size="115" id="meta_d">
     </label>
   </p><br>
   <p>
     <label>Ключевые слова статьи (через запятую)<br>
     <textarea name="meta_k" id="meta_k" cols="120" rows="5">
$myrow[meta_k]</textarea>
     </label>
   </p><br>
   <p>
     <label>Дата<br>
     <input value="
$myrow[date]" name="date" type="text" id="date" value="2010-01-27">
     </label>
   </p><br>
        <p><label>ЛИД<br>
     <textarea name="description" id="description" cols="120" rows="5">
$myrow[description]</textarea>
     </label></p>
   <br>
        <label>Блог фотографий<br>
     <textarea name="descript" id="descript" cols="120" rows="40">
$myrow[descript]</textarea>
     </label>
  <br>
   <p>
     <label>Полный текст статьи<br>
     <textarea name="text" id="text" cols="120" rows="50">
$myrow[text]</textarea>
     </label>
   </p><br>
   <p>
     <label>Автор статьи<br>
     <input value="
$myrow[author]" type="text" name="author" size="115" id="author">
     </label>
    </p><br>
    <p>
     <label>Путь к миниатюре<br>
     <input value="
$myrow[mini_img]" type="text" name="mini_img" size="115" id="mini_img">
     </label>
   </p>
     <br>
   <p>
     <label>Блог ссылок<br>
     <textarea name="ling" id="ling" cols="120" rows="15">
$myrow[ling]</textarea>
     </label>
   </p>
</font>
   
   <input name="id" type="hidden" value="
$myrow[id]">
   
   <p>
     <label>
     <input type="submit" name="submit" id="submit" value="Сохранить изменения">
     </label>
   </p>
 </form>
        
HERE;
}
?>

  Ответить  
 
 автор: task   (29.03.2012 в 23:12)   письмо автору
 
   для: qwert   (29.03.2012 в 22:49)
 

Это как раз форма, а не обработчик.
Вопрос 1 - как вы думаете, скажет ли вам спасибо клиент за то, что вы не возвращаете ему форму при ошибках, что означет, что его труды по редактированию пропадают?
Вопрос 2 - от куда у вас может взяться переменная $meta_k, если это не имя поля формы, а значение опшена списка, который имеет имя cat?
print <<<HERE... выбросить, а просто вывести html-код.
do...while - выбросить и использовать while.
Вместо mysql_fetch_array использовать mysql_fetch_assoc - никчему зря получать то, что вам вообще не нужно.
Где опять фильтрация $id, откуда эта переменная здесь появляется?

PS. А нет, вижу в форме meta_k поле, а зачем тогда оно в списке еще?

  Ответить  
 
 автор: qwert   (29.03.2012 в 23:55)   письмо автору
 
   для: task   (29.03.2012 в 23:12)
 

вот про это не понял

Вопрос 2 - от куда у вас может взяться переменная $meta_k, если это не имя поля формы, а значение опшена списка, который имеет имя cat?

поясните пожалуйста

  Ответить  
 
 автор: task   (29.03.2012 в 23:58)   письмо автору
 
   для: qwert   (29.03.2012 в 23:55)
 

Да я сразу увидел, что вы в опшены списка подставляете $meta_k, а в самой форме у вас еще и поле таковое имеется (это только потом заметил).
Прикрепите (не вставляйте) результрующий html-код страницы формы, тогда можно будет воспроизвести ситуацию в режиме реальности. Я ведь не буду создавать ради этого таблицу реальную вашей, для проверки.

  Ответить  
 
 автор: qwert   (30.03.2012 в 00:02)   письмо автору
9.1 Кб
 
   для: task   (29.03.2012 в 23:58)
 

прикрепляю

  Ответить  
 
 автор: task   (30.03.2012 в 00:08)   письмо автору
 
   для: qwert   (30.03.2012 в 00:02)
 

Ваша результирующая страница имеет массу ошибок:
1 - array(14) {
["cat"]=>
string(1) "3"
["title"]=>...
Если это в коде где-то для теста вывод массива, то удалите.

2 - <table class=\"alignleft\" cellspacing=\"0\" cellpadding=\"0\">
src=\"img/rubrics/school_life/242_4.jpg\"
<a href=\'http://11klassniki.ru/view_post_new.php?id=242\'>
в общем везде слеши перд кавычками

и в конце опять

["id"]=>
string(3) "242"
["submit"]=>
string(19) "Сохранить изменения"
}

Разберитесь сначала с этим.

  Ответить  
 
 автор: qwert   (30.03.2012 в 00:12)   письмо автору
 
   для: task   (30.03.2012 в 00:08)
 

да там просто
<?php 
var_dump
($_POST);
?>

поэтому так.

  Ответить  
 
 автор: qwert   (30.03.2012 в 00:14)   письмо автору
1.4 Кб
 
   для: qwert   (30.03.2012 в 00:12)
 

прикрепляю новый код

  Ответить  
 
 автор: task   (30.03.2012 в 00:16)   письмо автору
 
   для: qwert   (30.03.2012 в 00:14)
 

Это не эта страница.

  Ответить  
 
 автор: qwert   (30.03.2012 в 00:33)   письмо автору
 
   для: task   (30.03.2012 в 00:16)
 

такая же стhаница html

  Ответить  
 
 автор: task   (30.03.2012 в 00:34)   письмо автору
 
   для: qwert   (30.03.2012 в 00:33)
 

Я прошу страницу не обработчика формы, а ту на которой сама форма.

  Ответить  
 
 автор: qwert   (30.03.2012 в 01:44)   письмо автору
11.7 Кб
 
   для: task   (30.03.2012 в 00:34)
 

понял . выслаю

  Ответить  
 
 автор: qwert   (30.03.2012 в 01:45)   письмо автору
11.7 Кб
 
   для: task   (30.03.2012 в 00:34)
 

понял . выслаю

  Ответить  
 
 автор: Курсор   (30.03.2012 в 11:01)   письмо автору
 
   для: qwert   (29.03.2012 в 18:30)
 

Мой товарищ уехал, и не известно будет ли он еще тут вообще, а я исключительно по его просьбе.
Что я могу сказать, наверно главное то, что зря он вам все это писал, так как вы все его замечания и рекомендации просто проигнорировали, или не стараетесь понять, вникнуть, почему вам это советуют и рекомендуют.
Весь ваш код ужасен и полон дыр, скопирован с какого-то ветхого поганого учебника или пособия. Но даже этот код вы не стараетесь понять.
Программирование не игра, в нем нет уровней, программирование, это серьезная работа базирующая на знаниях и опыте. А знания и опыт придут только в том случае, если вы будете изучать код, анализировать его, что дает понимание его работы.
А для того, чтобы изучать, анализировать и в итоге понимать код, нужно как минимум изучать конструкции и функции языка на котором вы программируете. А вы даже в описание функций вряд ли заглянули.

У вас может никогда и не выполнится ваше условие проверки, так как вы делаете грубочайшую ошибку - выдаете на страницу необработанный html-код, там где он должен быть текстом. А вам об этом говорили дважды:

Вот первый - Ошибки надо исправлять, а значит возвращать форму пользователю, и не просто возвращать, а с данными, которые он уже заполнил, то есть определенные ранее переменные $title, $clear_description и т.д., должны быть вставлены в атрибуты value соответствующих полей формы, пропустив их через htmlspecialchars().
А вот второй (в примере) - value="'. htmlspecialchars($err && in_array($k, $err) ? null : $v).'"

А вы как поступаете? Посмотртите внимательно на свою страницу, которая выдает форму. Разве визуально не видно, что форма уже разбита html вставками в ее полях? Так писать код, не думая, это значит разрешать xss-атаки на своих страницах.

Список cat у вас не имеет выбранного по умолчанию опшена, а значит переменная $cat всегда будет равна null, если пользователь не сделает выбора в списке. Следовательно и не происходит обновление.

Можно было бы пояснить еще, почему не стоит так выдавать и обрабатывать форму, где каждый блок живет своей жизнью, никак не связанной между собой, но думаю не стоит, вам и об этом говорили, но вы даже не стали вникать в это, а зря. Значит я и не буду говорить. Вы говорили о своем уровне - так вы и зависните на первом уровне банальной стрелялки, и никогда не научитесь играть в стратегию, если не будете изучать предмета.

  Ответить  
 
 автор: Valick   (30.03.2012 в 13:29)   письмо автору
 
   для: Курсор   (30.03.2012 в 11:01)
 

а я исключительно по его просьбе
присмотритесь к форуму, вдруг у вас появится желание помогать людям от себя лично
на мой взгляд это действительно самый лучший форум по данной тематике
хотя согласен может быть отношение предвзятое, но желания искать что-то лучше уж точно не возникает
да и форум возник не на пустом месте, а как поддержка книг авторов форума, соответственно и авторов этих книг
и на мой взгляд уже давно вырос в нечто большее, чем обычная "тех поддержка"

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

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