Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для devilin
3 / 3 / 3
Регистрация: 03.01.2012
Сообщений: 146

Цепные функции

24.11.2012, 00:14. Показов 1521. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как реализовать чтото подобное?
PHP
1
$result = $con->select('user')->limit(5)->fetch();
Это нужно постоянно возвращать функцией объект?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2012, 00:14
Ответы с готовыми решениями:

Цепные дроби
Помогите пожалуйста,не могу найти ошибку,косяк с выводом. Необходимо Реализовать программу для разложения конечной цепной дроби. ...

Цепные списки строк
Реюята что это вообще такое и ?

Последовательности, цепные дроби
Хелп((

15
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
24.11.2012, 00:43
Цитата Сообщение от devilin Посмотреть сообщение
Как реализовать чтото подобное?
PHP
1
$result = $con->select('user')->limit(5)->fetch();
Это нужно постоянно возвращать функцией объект?
да
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
26.11.2012, 15:44
да зачем?
так разве не читабельней?

PHP
1
2
3
4
5
6
7
8
9
<?php 
 
/// .....
 
if ($user = $db->read_all('SELECT * FROM cms_user LIMIT 5')) {
   print_r($user);
} else {
   print 'Пользователи не найдены';
}
MYSUBD_SQLi DataBase Class
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
26.11.2012, 16:12
Цитата Сообщение от Alex_pac Посмотреть сообщение
так разве не читабельней?
Пример примеру - рознь:
PHP
1
2
3
4
5
$foo->clear()
    ->setBar(42)
    ->setBaz(37)
    ->setLol('lorem ipsum dolor')
;
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
26.11.2012, 16:22
$foo->clear()
->setBar(42)
->setBaz(37)
->setLol('lorem ipsum dolor')
;
ну это уже ваще не интерфейс к базе , а просто использование объекта из модели.

То есть отсутствует гибкость.

аналогичный из MYSUBD

PHP
1
2
3
4
5
6
<?php
$db->update("cms_table(Bar,Baz,Lol)",
   array(42,37,'lorem ipsum dolor'), 
   'id = 23', 
   'iis'
);
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
26.11.2012, 17:27
Цитата Сообщение от Alex_pac Посмотреть сообщение
да зачем?
так разве не читабельней?
не путайте sql запрос со строителем запросов.

когда вы SQL будите программно собирать, вы с конкатенацией затрахаетесь
что бы этого избежать и созданы билдеры запросов
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
26.11.2012, 19:33
конкатенацией затрахаетесь
c чем чем?

с форматированием строки?

да ваще не беда.

public function preQuery($query, $params, $strtypes='')

Функция выполняет действия db->query()
Через расширенный ввод запроса в формате prepared
данный формат запроса представляет собой обычный запрос, однако все переменные параметры стоят как знаки вопроса

пример prepared запроса


SQL
1
SELECT * FROM cms_user WHERE id = ? AND name = ?
и соотвественно производные от него:

public function preRead($query, $params, $strtypes='',$type = MYSQLI_ASSOC)
public function preRead_one($query, $params, $strtypes='')


PHP
1
2
3
4
5
6
<?php 
if ($res = $db->preRead('SELECT * FROM cms_user WHERE id = ? AND name = ?',array(1,'Alex'),'is')) {
   print_r($res);
} else {
   print 'запрос пустой. нет полей для вывода';
}
если параметр один то можно так:

PHP
1
2
3
4
5
6
<?php 
if ($res = $db->preRead('SELECT * FROM cms_user WHERE name = ?','Alex')) {
   print_r($res);
} else {
   print 'запрос пустой. нет полей для вывода';
}
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
26.11.2012, 20:02
Цитата Сообщение от Alex_pac Посмотреть сообщение
c чем чем?
с форматированием строки?
да ваще не беда.
Конкатенация
При чём тут форматирование?

Если вы не понимаете пользы строителя запросов, это ещё не означает что её нет...

Напишите пример кода фильтра по разным параметрам, когда некоторые параметры могут быть а могут не быть, когда может быть объединение таблиц а может не быть, для фильтра по некоторым параметрам.
А потом то же самое с использованием строителя запросов, и сравните код...
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
26.11.2012, 20:12
когда некоторые параметры могут быть а могут не быть, когда может быть объединение таблиц а может не быть, для фильтра по некоторым параметрам
что значит "может быть а может и не быть"

что это за база такая неясная?

Добавлено через 3 минуты
Конкатенация
При чём тут форматирование?


это одно и тоже. Любое упрощение "конкатетации" строк есть форматирование.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
26.11.2012, 20:19
Ну есть у вас 30 полей.
Например стоимость от и до. А может только от, или только до.
Цвет, выбирается чекбоксами.
Наличие в магазине, при чём оно хранится в отдельной таблице, так как магазинов несколько.

Добавлено через 5 минут
Цитата Сообщение от Alex_pac Посмотреть сообщение
это одно и тоже. Любое упрощение "конкатетации" строк есть форматирование.
Конкатенация это сложение/объединение строк.
Форматирование - может восприниматься по разному. Это может быть приданием внешнего вида, расстановки отступов, выделение кусков кода. А может подстановка данных в шаблон.
Но раз вы этого не понимаете, то я с вами спорить не собираюсь, так как вы этого и не поймёте и спор будет бесполезный...
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
26.11.2012, 20:21
Ну есть у вас 30 полей.
Например стоимость от и до. А может только от, или только до.
Цвет, выбирается чекбоксами.
Наличие в магазине, при чём оно хранится в отдельной таблице, так как магазинов несколько.
не вижу сложности построить запрос с помощью форматирования и конкатетации.

с ног сшибающий до простоты пример на билдеере запросов в студию!
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
26.11.2012, 20:24
Цитата Сообщение от Alex_pac Посмотреть сообщение
не вижу сложности построить запрос с помощью форматирования и конкатетации.
Разговор не про то что это не возможно, а про то что код будет удобней.
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
26.11.2012, 20:40
это с какой строны посмотреть

при составлении запросов с помощью форматирования , или впомогательных контрукторов запросов типа

PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
 // 2 примера использования, при строковых параметрах строку типов можно не указывать
 //$mysql->update('table (user, password)', array('Lesha','241746'),'id = 1');
 $mysql->update('table (user, password)', array('Lesha','241746'),'id = 1','ss');
 
// удаление
$mysql->delete('cms_table','id = 12');
// вставка
 $mysql->insert('table (id, user, password, about)', 
   array(0,'alex','123456','15 лет школьник'),
   'isss'
 );
сразу видно всю структуру таблицы. как она называется и какие поля. а при использование билдеров все будет как черный ящик и невидно какие поля затрагиваются.

Добавлено через 10 минут
вот нашел сабж:

PHP
1
2
3
4
5
6
7
8
9
<?php
$DataSet = $Database->Select('c.Name, c.Color, c.MaxSpeed')
    ->Select('b.Name', '', 'Brand')
    ->Select('e.Name', '', 'Engine')
    ->From('Car c')
    ->Join('Brand b', 'c.BrandID = b.BrandID')
    ->Join('Engine e', 'c.EngineID = e.EngineID')
    ->Where('c.MaxSpeed >', '80')
    ->Get();
ну и что это за уродство? скока десятков раз надо нажать на Shift что бы написать все эти стрелочки и кавычки?

SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT c.Name
   ,c.Color
   ,c.MaxSpeed
   ,b.Name AS Brand
   ,e.Name AS Engine
FROM LUM_Car c
INNER JOIN LUM_Brand b
   ON c.BrandID = b.BrandID
INNER JOIN LUM_Engine e
   ON c.EngineID = e.EngineID
WHERE c.MaxSpeed > 80;
<< чистый текст SQL руки выламывать не требуется
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
26.11.2012, 21:00
Вам про одно вы про другое...
Когда поймёте чем отличается форматирование от конкатенации.
А главное чем отличается статик запрос, от запроса котрый формируется динамически, то есть динамически добавляются и удаляются поля и таблицы, в зависимости от каких либо параметров, вот тогда продолжим разговор. Пока всё что вы привели, это запрос который можно легко написать в строку на чистом SQL.

И кстати, даже ваши
Цитата Сообщение от Alex_pac Посмотреть сообщение
$mysql->delete('cms_table','id = 12');
Это уже не чистый SQL а подобие конструктора запросов... Здесь нет явного SQL.
И вы утвердатете после этого что
PHP
1
2
$db->delete('table'); // так вам понятно
$db->select('table'); // а так уже нет?
Вот ваш пример
PHP
1
2
3
4
5
$db->update("cms_table(Bar,Baz,Lol)",
   array(42,37,'lorem ipsum dolor'), 
   'id = 23', 
   'iis'
);
он тоже не чистым запросом сделан, а спомощью вспомогательный методов.
Но мне кажется что как раз если бы было написанно вот так
PHP
1
2
3
4
5
6
7
8
9
$fields = array(
    'Bar' => 42,
    'Baz' => 37,
    'Lol' => 'lorem ipsum dolor',
);
$db->where('id = 23')
    ->set($fields)
    ->update('table');
);
и понятней и удобней.

Вот если мне надо добавить поле сюда ещё одно, в зависимости от условия, я сделаю это так
PHP
1
2
3
4
5
6
7
8
9
10
11
$fields = array(
    'Bar' => 42,
    'Baz' => 37,
    'Lol' => 'lorem ipsum dolor',
);
if ($is_bonus)
    $fields['bonus'] = $bonus;
$db->where('id = 23')
    ->set($fields)
    ->update('table');
);
Вам же в двух местах нужно менять с вашим подходом, и в названиях полей и в значениях.
ах да... а ещё в вашем примере легко перепутать порядок следования элементов...
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
26.11.2012, 21:13
Вот если мне надо добавить поле сюда ещё одно, в зависимости от условия, я сделаю это так
изменение структуры полей таблицы есть не что иное как извращение если это не PhpMyAdmin естественно.

он тоже не чистым запросом сделан, а спомощью вспомогательный методов.
Но мне кажется что как раз если бы было написанно вот так
8 строк против 4 ? в 2 раза длиннее!
$db->delete('table'); // так вам понятно
$db->select('table'); // а так уже нет?
а вот не надо смешивать простейщий метод delete против сложнейшего select. да и зачем select нужен контруктор если он упшено руками пишется причем количество букв при написании вручную меньше чем при написании через конструктор.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
26.11.2012, 21:22
Цитата Сообщение от Alex_pac Посмотреть сообщение
изменение структуры полей таблицы есть не что иное как извращение если это не PhpMyAdmin естественно.
Вы вообще не понимаете о чём речь...
Какой структуры? Где я её менял?
Я вам ещё раз говорю, что поля могут не участвовать в выборке некоторые, так же как и в обновлении.
Бывает вот такой запрос
SQL
1
SELECT * FROM `table` WHERE `a` = 1;
А бывает вот такой
SQL
1
SELECT * FROM `table` WHERE `a` = 1 AND `b` = 5;
По вашему из за добавление поля в условие, это совершенно разные таблицы? И первый запрос не выполнится в таблице, в которой выполнится второй запрос?

Цитата Сообщение от Alex_pac Посмотреть сообщение
8 строк против 4 ? в 2 раза длиннее!
А что тут разговор о том что у кого длиннее? Мне кажется тут был разговор о удобстве пользования.
Вот если бы вы понимали о чём я пишу, как реализуются фильтры товаров, что там могут объединятся таблицы и исключаться или включатся поля по условию, вот тогда как раз ваш код бы по длине проиграл.

Цитата Сообщение от Alex_pac Посмотреть сообщение
а вот не надо смешивать простейщий метод delete против сложнейшего select.
о как. а в делете не могут быть условия? или джоины?
обе строки в примере одинаковые, там удаляется все, а там выбирается всё.
но вот при выборке всего вы утверждаете что нужно писать SQL а при удалении конструктор? странно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.11.2012, 21:22
Помогаю со студенческими работами здесь

Разложите обыкновенные дроби на цепные
1.121/27 2.-37/81

Цепные дроби, вычисления компьютера
Написал программу по представлению корня числа n, где n = в виде цепной дроби. В определенный момент расчеты сбиваются. Например (см....

Как сравнить две цепные дроби?
как сравнить две цепные дроби

Задача (конечные цепные и подходящие дроби)
т.е. по сути 27x+43y=1800, при этом x+y-&gt;min, x,y - целые неотрицательные. задачка помечена под тегом &quot;конечные цепные и...

Статистика: общие цепные индексы цен и базисные физического объема товарооборота
Помогите решить задачку пожалуйста: задача 10 в doc файле. Вся теория начинается с 6 страницы. Очень нужна помощь.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru