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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ИДЕЯ или бред.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как один начинающий программист, ломает голову над созданием функций для работы с БД
Medallion
Отправлено: 16 Мая, 2012 - 10:34:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Здравствуйте товарищи!
Я, начинающий программист, практикую создание функций 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.
Главное, функция, все поля создаст.

Третий параметр , принимает также ассоциативный массив, в который помещаются, можно так сказать, издержки языка 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
Хотел бы знать мнение форумчан, а также ваши собственные наработки и реализации!
Если, что не понятно, что я здесь написал, спрашивайте)

(Отредактировано автором: 16 Мая, 2012 - 10:45:42)

 
 Top
Alho
Отправлено: 16 Мая, 2012 - 10:48:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




Это по-большому счету не нужно, вы действительно считаете, что это легче обычного sql-синтаксиса?

P.S. Хотя я не совсем прав. Классы для работы с бд таки нужны, к примеру в фреймворках, для унификация работы с разными бд.
 
 Top
Zuldek
Отправлено: 16 Мая, 2012 - 10:53:52
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




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

В результате, работа с бд превращается в удовольствие: все просто и лаконично. К примеру:
$reselt = $db->query($query);
все.

(Отредактировано автором: 16 Мая, 2012 - 11:00:21)

 
 Top
Medallion
Отправлено: 16 Мая, 2012 - 19:40:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Я не спорю, что ООП лучше, это гораздо лучше!!! Можно курсировать кодом как хочешь, но я пока остановлюсь на стандарте. Я задумал - я сделаю; и я буду изобретать свой велосипед, пусть и с квадратными колесами, пусть даже и с треугольными, но мне главное опыт, самореализация задуманного, практика. Я хочу понимать, как устроен код, что делает, каждый элемент в коде. Ведь программист, - это тот кто программирует, а не использует готовые решения, написанные другими программистами. Да, можно взять готовое решение, разобраться в нём, прикрутить там к своему сайту, РАБОТАЕТ ВЕДЬ! - нет, это не программист, это пользователь, он пользуется готовым решением.
Я, хочу создавать своё, родимое, хотя как скажут, где оно твоё, это давно изобрели, всё верно! но я хоть буду знать, что я не смотрел на решение, а решал и думал. И, кстати, практика всегда, запоминается лучше. Зато потом, в далёком будущем,
после конца света 2012, за неуплату!, я буду программировать с закрытыми глазами, быть может)

P/S - Спасибо за советы, у кого-то, ещё будут пожелания ?! Наставления, что я дурак?!)

(Отредактировано автором: 16 Мая, 2012 - 19:41:06)

 
 Top
LIME
Отправлено: 16 Мая, 2012 - 19:56:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Medallion пишет:
Ведь программист, - это тот кто программирует, а не использует готовые решения, написанные другими программистами
какая наивность)))
все писать самому хорошо только при обучении
если бы все задачи каждый раз решались заново это был бы кошмар просто))
 
 Top
caballero
Отправлено: 16 Мая, 2012 - 20:48:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Я не спорю, что ООП лучше, это гораздо лучше!!!

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

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


ты в курсе что PHP и апач написаны другими програмистами? как и все остальное ПО которым ты пользуешся.
Порограмист должен уметь рещать поставленную задачу и делоать это эфективно. Какие при это решения свои или чужие не важно (во всяком случае юзеру или заказчику до этого дела нет)

(Отредактировано автором: 16 Мая, 2012 - 20:49:14)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Medallion
Отправлено: 16 Мая, 2012 - 21:45:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Извиняюсь, что выразился неправильно. Я хотел, сказать, про то, что нужно самому учиться создавать скрипты, решать, думать, а не взять готовый продукт, поставить, приложив минимум усилий, но незная из чего он себя представляет. А уж потом, брать готовые решения, и смотреть "какие классные штучки". Писали по поводу Апача и PHP, я уже не до такой степени дурак, я понимаю, что программа создает программу. Всё равно потом все программы, подпрограммы это ноли и единицы.

И как писал Лимон, да, хорошо писать при обучении, и я буду писать. А вот битву экстрасенсов, не смотри, это хорошо написанный сценарий, и вообще телевизор - это плешь.
 
 Top
LIME
Отправлено: 16 Мая, 2012 - 21:55:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Medallion пишет:
А вот битву экстрасенсов, не смотри
http://forum.php.su/topic.php?fo...92615#1337192615
 
 Top
Bio man
Отправлено: 16 Мая, 2012 - 22:17:25
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Хм, скажу то, что жалею, что не начал изучение с ООП. Процедурный и Объектный подход как были так и остались подходами, это как лимон и арбуз - один фрукт, другой ягода но все же съедобные.
Если абстрагировать и смотреть с высока то класс это ни что иное как набор функций собранные в один пакет или коробку.
Вот освоишь процедурный подход и убьешь столько же времени на переучивание, что бы писать в ОО стиле.
Конечно знания ф-ций никак не может быть лишним, это фундамент, но советую освоить возможности языка и перейти к ООП.
Для практики - пиши не обертки для mysql_* а пробуй реализовать функции не работающие с внешними ресурсами, например, pow, substr, count, str(i)pos итд. Кстати очень хорошая практика.
По сабжу - бред.
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Мая, 2012 - 22:37:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Вот оберточка для 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, то вернет не:

a:

Так вообщем обертки для собственного удобства...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB