не могу сделать update данных

Статус
В этой теме нельзя размещать новые ответы.

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Бьюсь уже 2 дня. Раньше все получалось, а сейчас никак не могу понять в чем проблема. CMS danneo.
Это выводит форму для редактирования:
PHP:
if($_REQUEST['dn']=='index'){
global $db,$basepref,$conf,$lang,$sess,$wysiwyg;
GlobalStart();
this_menu();

$inqset = $db->query("SELECT * FROM ".$basepref."_naruzhka_textcat");
$itemset = $db->fetchrow($inqset);

print "<form action=\"naruzhka.php\" method=\"post\">";
print "<table border=\"0\" cellpadding=\"1\" cellspacing=\"1\" class=\"work\" align=\"center\">";
print "<tr><td class=\"work_title\" align=\"center\">Текст для главного раздела:</td></tr>\n";

print "<tr><td class=\"work_lite\" width=\"20%\" align=\"center\">";
print "<b><font class=\"alternative\">*</font> ".$lang['all_name']." :</b>\n";
print "<input type=\"text\" name=\"title\" id=\"title\" size=\"70\" maxlength=\"255\" value=\"".preparse_un($itemset['title'])."\">";
print "</td></tr>\n";

print "<tr>";
print "<td class=\"work_blac\" colspan=\"2\" width=\"50%\" align=\"center\">";
print "<input type=\"hidden\" name=\"dn\" value=\"textsave\">";
print "<input type=\"hidden\" name=\"ops\" value=\"$sess[hash]\">";
print "<input accesskey=\"s\" class=\"button\" value=\" ".$lang['all_save']." \" type=\"submit\">\n";
print "</td>";
print "</tr>\n";
print "</table>\n";
print "</form>\n";

GlobalEnd();
}

Далее, когда нажимаю сохранить, идет обработка в том же файле. Но не получается сохранить.


PHP:
if($_REQUEST['dn']=='textsave'){

global $basepref,$db,$conf,$dn,$lang,$title,$cpu,$descript,$keywords,$textmore,$sess,$s,$hits;
if($title="" || $textmore=="" || $descript==""  || $keywords=="" ){
GlobalStart();
this_menu();
GlobalError($lang['menupage_add_error']);
GlobalEnd();
} 

else {
$hits = ($hits) ? preparse($hits,THIS_INT) : 0;

}
//
echo $title;

$db->query("UPDATE ".$basepref."_naruzhka_textcat  SET 
            title='".$db->escape(preparse_sp($title))."',
			textmore='".$db->escape(preparse_dp($textmore))."',			
			keywords='".$db->escape(preparse_dp($keywords))."',
            descript='".$db->escape(preparse_dp($descript))."'
           ");

// UPDDATE
$counts = new counts('_naruzhka_textcat','naruzhka_textcatid');

// UPDDATE
//$cache->cachesave(3);

//$redir = "naruzhka.php?dn=naruzhkalist&ops=$sess[hash]";
echo "Сохранение сработало";

//redirect($redir);
}
 
Если мучаешься на локальном пк включи логирование запросов в БД
Эти строчки добавь в my.ini или my.cfg
PHP:
general_log         = 1
general_log_file    = "mysql.log"
После выполнения запроса узнаешь дошел ли он к базе - смотри mysql.log

2й вариант добавь обработку ошибок в функцию $db->query

upd чуть больше подробностей
 
Если мучаешься на локальном пк включи логирование запросов в БД
general_log = 1
general_log_file = "mysql.log"
После выполнения запроса узнаешь дошел ли он к базе
2й вариант добавь обработку ошибок в функцию $db->query
Был бы я еще программистом зашибенным :D, чтоб такое сделать
 
Вместо $db->query подставь echo или запись в файл - узнаешь, а есть ли вообще, что апдейтить.
Если запрос похож на корректный выполни его "вручную" например через phpmyadmin.
Проверь результат.
 
или echo mysql_error(); после query
 
Был бы я еще программистом зашибенным :D, чтоб такое сделать
После запроса ($db->query) поставь временно echo "error=".mysql_error(); и посмотрb что выдаст. Если ошибка в запросе - после "error=" будет некоторый текст.
 
PHP:
$db->query("UPDATE ".$basepref."_naruzhka_textcat  SET  
            title='".$db->escape(preparse_sp($title))."', 
            textmore='".$db->escape(preparse_dp($textmore))."',             
            keywords='".$db->escape(preparse_dp($keywords))."', 
            descript='".$db->escape(preparse_dp($descript))."' 
           ");


замени на

PHP:
$sql = "UPDATE ".$basepref."_naruzhka_textcat  SET  
            title='".$db->escape(preparse_sp($title))."', 
            textmore='".$db->escape(preparse_dp($textmore))."',             
            keywords='".$db->escape(preparse_dp($keywords))."', 
            descript='".$db->escape(preparse_dp($descript))."' 
           ";
print "Query: ".$sql;
$db->query($sql);

результат вывода сюда выложи
 
что за модуль такой ?
выложил бы сюда его бы тут откатали )
 
Понять не могу.... решил вроде...
только другое теперь.
убираю $db->query($sql);
не обновляется (проверяю убрав редирект). Выводит новые данные все в полях (сам запрос), но после возврата данные остаются старые.
Добавляю $db->query($sql); и все обновляется.
Вот код:
PHP:
$sql = "UPDATE ".$basepref."_naruzhka_textcat  SET   
               title='".$db->escape(preparse_dp($title))."',  
            textmore='".$db->escape(preparse_dp($textmore))."',              
            keywords='".$db->escape(preparse_dp($keywords))."',  
            descript='".$db->escape(preparse_dp($descript))."'  
           "; 
		   
print " Параметр dn ".$dn."  ";	
print "Заголовок ".$title."  ";	   
print "Query: ".$sql; 
//$db->query($sql);  

// UPDDATE
//$counts = new counts('naruzhka_textcat');

// UPDDATE
$cache->cachesave(3);

$redir = "naruzhka.php?dn=index&ops=$sess[hash]";


redirect($redir);
 
убираю $db->query($sql);
Ну как бы это и есть отсылка запроса к бд, если эту строку закомментировать данные в бд посылаться не будут...
$sql = "UPDATE
...
print "Query: ".$sql;
это формирование запроса и вывод его на экран - типа отладочная информация
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху