Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с редактированием данных в БД 
:(
    Опции темы
Redstuff
Дата 9.12.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Проблемы с редактированием данных в БД, при редактировании данных приходится изменять абсолютно все поля, если изменить лишь одно поле, то начинаются проблемы. 
Вот тут можно посмотреть: _http://kr.wgost.ru/adm/main.php

Код

function complete(){
      // подключаем файл с настройками подключения - это мы уже знаем.
     require '../inc/connect.php';

  // делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд.
//      $result = mysql_query("SELECT * FROM Tb_Main WHERE id_m = '".$_POST['id']."';", $link);
   $result = mysql_query("SELECT * FROM Tb_Main inner join TbType_doc on (Tb_Main.type=TbType_doc.id_t) inner join TbLvl_pr on (Tb_Main.lvl=TbLvl_pr.id_lvl) WHERE id_m = '".$_POST['id']."';", $link);
              // перекидываем данные из MySQL в пхпшный ассоциативный массив
     $row = mysql_fetch_array($result);

      // проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД
      if(empty($row['id_m']))
            $query = "INSERT INTO Tb_Main
                     (`name`,
                      `description`,
                      `type`,
                      `lvl`,
                      `search`)
                                      VALUES
                            ('".mysql_real_escape_string($_POST['name'])."',
                             '".mysql_real_escape_string($_POST['description'])."',
                             '".mysql_real_escape_string($_POST['type'])."',
                             '".mysql_real_escape_string($_POST['lvl'])."',
                             '".mysql_real_escape_string($_POST['search'])."')";
      // а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем
      else
            $query = "UPDATE Tb_Main SET
                                     `name` = '".mysql_real_escape_string($_POST['name'])."',
                                     `description` = '".mysql_real_escape_string($_POST['description'])."',
                                     `type` = '".mysql_real_escape_string($_POST['type'])."',
                                     `lvl` = '".mysql_real_escape_string($_POST['lvl'])."',
                                     `search` = '".mysql_real_escape_string($_POST['search'])."'
                     WHERE id_m = '".$_POST['id']."';";
   //     var_dump($query);
//exit;


      // непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)
      mysql_query($query, $link);

      // ну и просто выводим крикливую надпись, что скрипт отработал
      echo '<h3>Данные обновлены</h3>';
}


В чем проблема кроется?  smile 

Это сообщение отредактировал(а) Redstuff - 9.12.2008, 17:40


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
Aliance
Дата 9.12.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Дамп структуры БД дай.
PM MAIL WWW ICQ Skype   Вверх
Redstuff
Дата 9.12.2008, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Код

-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
-- 
-- Хост: localhost
-- Время создания: Дек 09 2008 г., 20:45
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
-- 
-- БД: `gost`
-- 

-- --------------------------------------------------------

-- 
-- Структура таблицы `TbLvl_pr`
-- 

DROP TABLE IF EXISTS `TbLvl_pr`;
CREATE TABLE IF NOT EXISTS `TbLvl_pr` (
  `id_lvl` int(11) NOT NULL auto_increment,
  `lvl_pr` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id_lvl`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=14 ;

-- 
-- Дамп данных таблицы `TbLvl_pr`
-- 

INSERT INTO `TbLvl_pr` VALUES (11, 'Бакалавр');
INSERT INTO `TbLvl_pr` VALUES (12, 'Специалист');
INSERT INTO `TbLvl_pr` VALUES (13, 'Магистр');

-- --------------------------------------------------------

-- 
-- Структура таблицы `TbSearch_key`
-- 

DROP TABLE IF EXISTS `TbSearch_key`;
CREATE TABLE IF NOT EXISTS `TbSearch_key` (
  `id_key` int(11) NOT NULL auto_increment,
  `key` text character set utf8 collate utf8_bin NOT NULL,
  PRIMARY KEY  (`id_key`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

-- 
-- Дамп данных таблицы `TbSearch_key`
-- 

INSERT INTO `TbSearch_key` VALUES (4, '');

-- --------------------------------------------------------

-- 
-- Структура таблицы `TbType_doc`
-- 

DROP TABLE IF EXISTS `TbType_doc`;
CREATE TABLE IF NOT EXISTS `TbType_doc` (
  `id_t` int(11) NOT NULL auto_increment,
  `type_doc` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id_t`)
) ENGINE=MyISAM AUTO_INCREMENT=77 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=77 ;

-- 
-- Дамп данных таблицы `TbType_doc`
-- 

INSERT INTO `TbType_doc` VALUES (70, 'ГОСТ');
INSERT INTO `TbType_doc` VALUES (71, 'ТУ');
INSERT INTO `TbType_doc` VALUES (72, 'СНиПы');
INSERT INTO `TbType_doc` VALUES (73, 'ГОСТ Р');
INSERT INTO `TbType_doc` VALUES (74, 'Нормы и правила');

-- --------------------------------------------------------

-- 
-- Структура таблицы `Tb_Main`
-- 

DROP TABLE IF EXISTS `Tb_Main`;
CREATE TABLE IF NOT EXISTS `Tb_Main` (
  `id_m` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(255) default NULL,
  `description` text,
  `fname` varchar(255) default NULL,
  `type` int(11) default NULL,
  `lvl` int(11) default NULL,
  `search` text,
  PRIMARY KEY  (`id_m`),
  UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=67 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=67 ;

-- 
-- Дамп данных таблицы `Tb_Main`
-- 

INSERT INTO `Tb_Main` VALUES (64, 'Тестовый 2111', '<p>Тестовый 21</p>\r\n<p>Тестовый 21</p>\r\n<p>Тестовый 21</p>\r\n<p>Тестовый 21</p>\r\n<p>Тестовый 211</p>', NULL, 0, 0, '\r\n                \r\n                \r\n                \r\n         Тестовый 2  1  1     1                      ');
INSERT INTO `Tb_Main` VALUES (65, 'Тестовый 213', '<p>Тестовый 21</p>\r\n<p>Тестовый 21</p>\r\n<p>Тестовый 21</p>', NULL, 0, 0, '\r\n                \r\n                \r\n         Тестовый 21   3                     ');
INSERT INTO `Tb_Main` VALUES (66, 'Тестовый 3', '<p>Тестовый 3</p>', NULL, 70, 11, '\r\n          Тестовый 3            ');
        



--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
Aliance
Дата 10.12.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Опиши еще раз проблему. Как я понял она возникает здесь:
Код

      else
            $query = "UPDATE Tb_Main SET
                                     `name` = '".mysql_real_escape_string($_POST['name'])."',
                                     `description` = '".mysql_real_escape_string($_POST['description'])."',
                                     `type` = '".mysql_real_escape_string($_POST['type'])."',
                                     `lvl` = '".mysql_real_escape_string($_POST['lvl'])."',
                                     `search` = '".mysql_real_escape_string($_POST['search'])."'
                     WHERE id_m = '".$_POST['id']."';";

Если я прав, то это происходит из-за того что какие-то данные могут быть пустые. Так?
Тогда попробуй делать так:
Код

if ( ! empty( $_POST['description'] ) ) $sql .= "`description` = '" . mysql_real_escape_string( $_POST['description'] ) . "',"


P.S.: Дамп можно было написать только для таблицы `Tb_Main` ;)
PM MAIL WWW ICQ Skype   Вверх
Redstuff
Дата 10.12.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Aliance, т.е. нужны условия для каждого поля на проверку их содержания? а вообще тут где-то в др. месте косяк =(
потому что при редактировании _http://www.test2.ru/adm/lvlpr.php?id=11 (если просто нажать отправить с теми данными которые там храняться, то все нормально)
проблема заключается в выпадающих списках, если их не изменять они перезаписываются на 0, а это значит таких записей в БД просто нет, поэтому ничего не выводится =(


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
Aliance
Дата 10.12.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Какие списки? В коде никаких списков не увидел.
Чтобы изправить это - необходимо проставлять значения в списках (checked) с помощью php из Базы.
PM MAIL WWW ICQ Skype   Вверх
Redstuff
Дата 10.12.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



_http://kr.wgost.ru/adm/main.php?id=new "тип документа" и "уровень подготовки"


Это сообщение отредактировал(а) Redstuff - 10.12.2008, 13:06


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
Redstuff
Дата 12.12.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(Aliance @ 10.12.2008,  12:47)
Чтобы изправить это - необходимо проставлять значения в списках (checked) с помощью php из Базы.

Можно поподробней плиз? проблема как раз в этих самых списках...


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.