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 :: Версия для печати :: ИДЕЯ или бред.
Форумы портала PHP.SU » » Работа с СУБД » ИДЕЯ или бред.

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

1. Medallion - 16 Мая, 2012 - 10:34:14 - перейти к сообщению
Здравствуйте товарищи!
Я, начинающий программист, практикую создание функций PHP, которые облегчают работу.
Ищу ответы в интернете, наращиваю опыт. Мои планы по практике, это написать серию функций для работы с MYSQL. Я мало с ней знаком, как и с PHP.
Основная моя задача, написать более простые функции для себя, я не хочу затрагивать ООП, потому что в стандарте, я ещё мал.
Ну так вот, мне хотелось бы написать серию функций, например:
PHP:
скопировать код в буфер обмена
  1.  
  2. // Функция добавления в базу
  3. db_insert($arg_1,$arg_2,$arg_3);
  4.  
  5. // Функция выборки из базы
  6. db_select($arg_1,$arg_2,$arg_3);
  7.  
  8. // Функция изменения значений
  9. db_update($arg_1,$arg_2,$arg_3);
  10.  
  11. // Функция удаления из базы
  12. db_delete($arg_1,$arg_2,$arg_3);
  13.  


На данный момент, функция db_insert(), в стадии разработки.
И принимает вид:
PHP:
скопировать код в буфер обмена
  1.  
  2. db_insert('table',$myrow_data,$myrow_type);
  3.  

Она принимает в качестве первого аргумента или параметра, название
будущей или существующей таблицы.
Тоесть, если таблица не существует, функция её создаст, но создаст только в том случае, если имеются данные в ассоциативных массивах, если их нет, идет завершение работы скрипта.

В качестве второго параметра: ассоциативный массив с данными, которые обрабатываются функцией, и все индексы массива - будут названиями полей в таблицы, а все значения - ячейками. Например, есть массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. $myrow_data = array('pole_1' => 'Значение','pole_2' => 'Значение','pole_3' => 'Значение');
  3.  

И так, до бесконечности, Неважно сколько элементов в массиве, 10 или 10000.
Главное, функция, все поля создаст.

Третий параметр
PHP:
скопировать код в буфер обмена
  1. $myrow_type
, принимает также ассоциативный массив, в который помещаются, можно так сказать, издержки языка SQL.
Например, чтобы создать одну таблицу, назовем её main и в ней два поля, нужно записать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $myrow_data = array('id' => 0, 'title' => 'Главная страница');
  3. $myrow_type = array(
  4. 'id' => 'INT NOT NULL AUTO_INCREMENT PRIMARY KEY',
  5. 'title' => VARCHAR( 30 ) NOT NULL
  6. );
  7.  
  8. // и сам вызов функции
  9. db_insert('main',$myrow_data,$myrow_type);
  10.  


Третий параметр, нужен лишь для одноразового создания нужных полей, потом к этой же таблицы, он применяться не будет, но будет применяться, если мы, например хотим
создать таблицу с именем 'table', например так.
PHP:
скопировать код в буфер обмена
  1.  
  2. db_insert('table',$myrow_data,$myrow_type);
  3.  


И, напоследок... Функция проверки, и создания таблицы работает, а также внесение
соответствующим полям значения, но пока я думаю, как внедрить этот же
третий параметр
PHP:
скопировать код в буфер обмена
  1.  
  2. $myrow_type = array(
  3. 'id' => 'INT NOT NULL AUTO_INCREMENT PRIMARY KEY',
  4. 'title' => VARCHAR( 30 ) NOT NULL
  5. );
  6.  

пока он висит в самой функции, но думаю это у меня получиться.

Проработка условий в запросе SQL, я тоже хочу реализовать, в этой функции, например ещё через один массив.
Есть конечно взгяд на то, что бы все эти массивы засунуть в один многомерный,
а в функции уже потом разбирать, но не хочу я пока усложнять, и без того, мою дурную голову)....
P/S -1
ЕЩЁ раз повторяюсь, при первом вызове функции, функция создаст таблицу если её нет,
и внесёт
индексы массива $myrow_data в названия полей, а также значения массива в ячейки
полей, соответствующие названию.
Если таблица существует, функция будет вносить новые данные при каждом вызове.
ВСЁ!

И P/S -2
Хотел бы знать мнение форумчан, а также ваши собственные наработки и реализации!
Если, что не понятно, что я здесь написал, спрашивайте)
2. Alho - 16 Мая, 2012 - 10:48:00 - перейти к сообщению
Это по-большому счету не нужно, вы действительно считаете, что это легче обычного sql-синтаксиса?

P.S. Хотя я не совсем прав. Классы для работы с бд таки нужны, к примеру в фреймворках, для унификация работы с разными бд.
3. Zuldek - 16 Мая, 2012 - 10:53:52 - перейти к сообщению
Мнение такого, что для начальной практики и получения представления о том как работать с бд из PHP вообще, - почему бы и нет.
Для использования в реальных проектах, даже простых, - нет.
Почему:
Потому, что такой подход не просто "свой велосипед", но ещё и с квадратными колесами.
Если стоит задача получить простой интерфейс для работы с БД, используйте PDO, или готовые наборы классов любого популярного фреймворка, если писать на ООП пока не можете. Разобраться с ними - час. Экономия времени при использовании гораздо больше.
Вот класс, который использую сейчас (в основном):
Спойлер (Отобразить)

В результате, работа с бд превращается в удовольствие: все просто и лаконично. К примеру:
$reselt = $db->query($query);
все.
4. Medallion - 16 Мая, 2012 - 19:40:26 - перейти к сообщению
Я не спорю, что ООП лучше, это гораздо лучше!!! Можно курсировать кодом как хочешь, но я пока остановлюсь на стандарте. Я задумал - я сделаю; и я буду изобретать свой велосипед, пусть и с квадратными колесами, пусть даже и с треугольными, но мне главное опыт, самореализация задуманного, практика. Я хочу понимать, как устроен код, что делает, каждый элемент в коде. Ведь программист, - это тот кто программирует, а не использует готовые решения, написанные другими программистами. Да, можно взять готовое решение, разобраться в нём, прикрутить там к своему сайту, РАБОТАЕТ ВЕДЬ! - нет, это не программист, это пользователь, он пользуется готовым решением.
Я, хочу создавать своё, родимое, хотя как скажут, где оно твоё, это давно изобрели, всё верно! но я хоть буду знать, что я не смотрел на решение, а решал и думал. И, кстати, практика всегда, запоминается лучше. Зато потом, в далёком будущем,
после конца света 2012, за неуплату!, я буду программировать с закрытыми глазами, быть может)

P/S - Спасибо за советы, у кого-то, ещё будут пожелания ?! Наставления, что я дурак?!)
5. LIME - 16 Мая, 2012 - 19:56:38 - перейти к сообщению
Medallion пишет:
Ведь программист, - это тот кто программирует, а не использует готовые решения, написанные другими программистами
какая наивность)))
все писать самому хорошо только при обучении
если бы все задачи каждый раз решались заново это был бы кошмар просто))
6. caballero - 16 Мая, 2012 - 20:48:41 - перейти к сообщению
Цитата:
Я не спорю, что ООП лучше, это гораздо лучше!!!

ООП тут ни причем. Есть масса уже готовых библиотек и функций без всякого ООП.

Цитата:
едь программист, - это тот кто программирует, а не использует готовые решения, написанные другими программистами.


ты в курсе что PHP и апач написаны другими програмистами? как и все остальное ПО которым ты пользуешся.
Порограмист должен уметь рещать поставленную задачу и делоать это эфективно. Какие при это решения свои или чужие не важно (во всяком случае юзеру или заказчику до этого дела нет)
7. Medallion - 16 Мая, 2012 - 21:45:11 - перейти к сообщению
Извиняюсь, что выразился неправильно. Я хотел, сказать, про то, что нужно самому учиться создавать скрипты, решать, думать, а не взять готовый продукт, поставить, приложив минимум усилий, но незная из чего он себя представляет. А уж потом, брать готовые решения, и смотреть "какие классные штучки". Писали по поводу Апача и PHP, я уже не до такой степени дурак, я понимаю, что программа создает программу. Всё равно потом все программы, подпрограммы это ноли и единицы.

И как писал Лимон, да, хорошо писать при обучении, и я буду писать. А вот битву экстрасенсов, не смотри, это хорошо написанный сценарий, и вообще телевизор - это плешь.
8. LIME - 16 Мая, 2012 - 21:55:37 - перейти к сообщению
Medallion пишет:
А вот битву экстрасенсов, не смотри
http://forum.php.su/topic.php?fo...92615#1337192615
9. Bio man - 16 Мая, 2012 - 22:17:25 - перейти к сообщению
Хм, скажу то, что жалею, что не начал изучение с ООП. Процедурный и Объектный подход как были так и остались подходами, это как лимон и арбуз - один фрукт, другой ягода но все же съедобные.
Если абстрагировать и смотреть с высока то класс это ни что иное как набор функций собранные в один пакет или коробку.
Вот освоишь процедурный подход и убьешь столько же времени на переучивание, что бы писать в ОО стиле.
Конечно знания ф-ций никак не может быть лишним, это фундамент, но советую освоить возможности языка и перейти к ООП.
Для практики - пиши не обертки для mysql_* а пробуй реализовать функции не работающие с внешними ресурсами, например, pow, substr, count, str(i)pos итд. Кстати очень хорошая практика.
По сабжу - бред.
10. DeepVarvar - 16 Мая, 2012 - 22:37:46 - перейти к сообщению
Вот оберточка для mysqli, OrmaJever меня практически оговорил от её использования.
Но тут я её ка пример привожу:
Спойлер (Отобразить)

Юзать так:
PHP:
скопировать код в буфер обмена
  1. db::connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  2. db::charset(DB_CHARSET);
  3.  
  4. $var = 45;
  5. db::normalizeQuery("SELECT * FROM tbl WHERE id = %u LIMIT 1", $var);

Ну для тех кто в теме, там в коде все понятно, есть несколько типов запросов, счетчик запросов, различные базовые методы, нормализация результата и кеширование.
Под нормализацией подразумевается, если вы запрашивали одно поле с LIMIT 1, то в переменную вернется не $result[0]['keyname'], а сразу значение этого поля.
Или вы запрашивали несколько полей с лимитом 1, то вернет не:
PHP:
скопировать код в буфер обмена
  1.   0 => array("a" => 12, "b" = > "bla")
  2. );

a:
PHP:
скопировать код в буфер обмена
  1. array("a" => 12, "b" = > "bla");

Так вообщем обертки для собственного удобства...

 

Powered by ExBB FM 1.0 RC1