Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запись данных MySQL
Форумы портала PHP.SU » » Работа с СУБД » Запись данных MySQL

Страниц (1): [1]
 

1. Milkoff_learn - 27 Февраля, 2013 - 11:19:27 - перейти к сообщению
Товарищи форумчане нужно ваша помощь!!!
Создав базу данных и таблицу на тестовом сервере появилась такая проблема что некоторые поля не записываются при отсылке данных - такие как видимость страницы и позиция.
Вот код файла db.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.     require_once 'config.php';
  4.  
  5.         class Db extends Config {
  6.             private $connection ;
  7.            
  8.            
  9.            
  10.            
  11.            
  12.             function __construct() {
  13.                 $this->open_connection();
  14.        //       echo "скрипт работает";
  15.             }
  16.  
  17.                        
  18.            
  19.   private function open_connection() {
  20.       $this->connection = mysql_connect($this->DB_HOST,  $this->DB_USER,  $this->DB_PASS) ;
  21.       if(!$this->connection) {
  22.             die("Ошибка базы данных:". mysql_error());
  23.       }  else {
  24.          
  25.       $db_select = mysql_select_db($this->DB_NAME);
  26.       if(!$db_select){
  27.           die("Ошибка:". mysql_error());
  28.       }
  29.       }
  30.       mysql_query("set names utf8") or die ("set names utf8 failed");
  31.   }
  32.   public function sql($query){
  33.                $result = mysql_query($query,$this->connection);
  34.        if(!$result) {  
  35.             die("Какая то ошибка:<br/>". mysql_error());
  36.   }
  37.   return $result;
  38.        }
  39.    }
  40.   $db = new db();
  41. ?>
  42.  
  43.  



И код запроса

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once '../config/db.php';
  3.         class McreateEdit extends Db{
  4.                 function create($post){
  5.                         $sql = "insert into club(description,keywords,title,menu_name,position,visible,content,created)
  6.                         VALUES(
  7.                         '[$post[description]]',
  8.                         '[$post[keywords]]',
  9.                         '[$post[title]]',
  10.                         '[$post[menu_name]]',
  11.                         '[$post[position]]',
  12.                         '[$post[visible]]',
  13.                         '[$post[content]]',
  14.                               NOW()
  15.                         )";
  16.                         echo $sql;
  17.                 $this->sql($sql);
  18.                        
  19.                         return true;
  20.                 }
  21.                 function menu_pos (){
  22.                         $sql = "SELECT menu_name,position FROM club ORDER BY position ASC";
  23.                         $res = $this->sql($sql);
  24.                         return $res;
  25.                 }
  26.         }
  27.  
  28. ?>
2. Milkoff_learn - 27 Февраля, 2013 - 15:46:26 - перейти к сообщению
Ну хоть кто нибудь отзовитесь!!!
Очень срочно надо!!
3. esterio - 27 Февраля, 2013 - 15:51:39 - перейти к сообщению
Milkoff_learn пишет:
$this->connection = mysql_connect($this->DB_HOST, $this->DB_USER, $this->DB_PASS) ;

ето откуда возьмется. само собой. Нужно сначала сделать уоннект с базой.
4. Milkoff_learn - 27 Февраля, 2013 - 16:00:07 - перейти к сообщению
esterio пишет:
ето откуда возьмется. само собой. Нужно сначала сделать уоннект с базой.

Шеф это все есть в файле

Не идёт запись именно этих двух срок позиция и visible "видимость"
5. 246978 - 27 Февраля, 2013 - 16:11:47 - перейти к сообщению
типы совпадают?
6. esterio - 27 Февраля, 2013 - 16:17:59 - перейти к сообщению
Мляя я минуту смотрел в Ваш код. Чесно Вам нужно еще учится.
Цитата:
'[$post[description]]'

вообще то лучше используйте конкатенацию строк
PHP:
скопировать код в буфер обмена
  1. $sql = "insert into club(description,keywords,title,menu_name,position,visible,content,created)
  2.                        VALUES(
  3.                        '".$post['description']."',
  4.                        '".$post['keywords']."',
  5.                        '".$post['title']."',
  6.                        '".$post['menu_name']."',
  7.                        '".$post['position']."',
  8.                        '".$post['visible']."',
  9.                        '".$post['content']."',
  10.                                 NOW()
  11.                                                 )";

И да наследовать Бд от конфига, а модель от бд ето же не хорошо
7. Milkoff_learn - 27 Февраля, 2013 - 16:29:34 - перейти к сообщению
esterio пишет:
Мляя я минуту смотрел в Ваш код. Чесно Вам нужно еще учится.

Я и так учусь поэтому и задаю такие глупые вопросы
8. esterio - 27 Февраля, 2013 - 16:40:02 - перейти к сообщению
Так зачем стразу же в ООП делаете. Сделайте сначала в роцедурном, так чтоб работало
(Добавление)
А так как Вы сделали Вы на рушаете основной принцип ООП инкапсуляцию. Плюс от себя добавлю что мне больше нравится указивать абсолютние пути в include/require
9. Milkoff_learn - 27 Февраля, 2013 - 18:10:11 - перейти к сообщению
Если я ошибаюсь сразу поправьте меня: то функция private и является инкапсуляцией
И ещё посоветуйте литературку или видео уроки по темам ООП
10. esterio - 27 Февраля, 2013 - 18:33:19 - перейти к сообщению
Если коротко то ответ неверный. Думаю Вам стоит пользоваться процедурным стилем. Сначала подучите синтаксис и базовый функциоал в ПХП а уж потом со временем дойдет и ООП
11. Milkoff_learn - 27 Февраля, 2013 - 21:30:55 - перейти к сообщению
Спасибо за совет я наверное так и сделаю.Только учиться мне ему негде а самому это тонны книг надо перечитать бесполезных.

 

Powered by ExBB FM 1.0 RC1