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

Тема в разделе "PHP", создана пользователем danneo, 18 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Бьюсь уже 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);
    }
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Если мучаешься на локальном пк включи логирование запросов в БД
    Эти строчки добавь в my.ini или my.cfg
    PHP:
    general_log         1
    general_log_file    
    "mysql.log"
    После выполнения запроса узнаешь дошел ли он к базе - смотри mysql.log

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

    upd чуть больше подробностей
     
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Был бы я еще программистом зашибенным :D, чтоб такое сделать
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Вместо $db->query подставь echo или запись в файл - узнаешь, а есть ли вообще, что апдейтить.
    Если запрос похож на корректный выполни его "вручную" например через phpmyadmin.
    Проверь результат.
     
  5. McLay

    McLay Постоялец

    Регистр.:
    20 май 2008
    Сообщения:
    71
    Симпатии:
    15
    или echo mysql_error(); после query
     
  6. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    200
    Симпатии:
    55
    После запроса ($db->query) поставь временно echo "error=".mysql_error(); и посмотрb что выдаст. Если ошибка в запросе - после "error=" будет некоторый текст.
     
  7. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    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); 
    результат вывода сюда выложи
     
  8. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    что за модуль такой ?
    выложил бы сюда его бы тут откатали )
     
  9. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Понять не могу.... решил вроде...
    только другое теперь.
    убираю $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);
     
  10. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.244
    Ну как бы это и есть отсылка запроса к бд, если эту строку закомментировать данные в бд посылаться не будут...
    это формирование запроса и вывод его на экран - типа отладочная информация
     
Статус темы:
Закрыта.