- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Но дай бог находить тех, кто сразу ВСЁ предусмотрит
Таких вот я и ищу, кто сразу всё предусматривает, увы таких мало (но они есть)
Таких вот я и ищу, кто сразу всё предусматривает, увы таких мало (но они есть)
Я ещё думаю:)
1. вы сказали что никаких параметров глобальных не должно быть. Я предположу, что статические переменные в функции тоже заводить нельзя (они хоть и не явно глобальные, но всё равно не буду)
2. Чтобы предусмотреть вызов функции с запросом SQL используя определенное соединение с базой данных, достаточно сделать вот так:
$li1= base_connect('localhost', 'root', '', 'dbtest');
$li2= base_connect('localhost', 'root', '', 'dbsupertest');
//будет обращение используя последенее соединение к базе данных.
$data = base_query('SELECT * FROM `table` LIMIT 0, 30;');
//указали явно соединение к базе данных. Оно и будет использоваться.
$data = base_query('SELECT * FROM `table` LIMIT 0, 30;', $li1);
//в самом файле функция.пхп я не буду уж дописывать этот парамет, ибо сделать проверку проблем не должно быть даже у новичкофф.
ЗЫ. Я теперь жду Вашего решение, в котором будут выполнены все условия из первого сообщения
base_connect('localhost', 'root', '', 'test');
// до вызова функции base_connect функция base_query существовать не должна
$data = base_query('SELECT * FROM `table` LIMIT 0, 30;');
// в $data должен появиться полностью массив с записями из базы.
доп.условие из второго сообщения
base_connect('localhost', 'root', '', 'dbtest');
Будет открыто второе соединение с другим сервером с помощью обычного mysql_connect
И куда теперь будут посылаться запросы base_query ?
Ага!!!! Вот при внимательном прочтении других топиков обнаружил еще одно скрытое допзадание от Вас, которого не было в самом первом Вашем топике:
Ну тогда для этого придется просто использоваться static переменную и не более того!!! Глобальную нельзя, ни какую другую нельзя, классы использовать нельзя и т.д (это было основной задачей, которую Вы поставили изначально). Если предположить что static $static_li; переменную всё-таки можно использовать (а как иначе без доппараметров в функциях решить задачу, я тогда пока не знаю), то все делается просто. Тогда да доппараметры в функциях не понадобятся. Но тогда в вашем случае, функцией base_connect разумно открывать только одно соединение и только его и использовать. Если потом вызвать её повторно к другой БД, то предыдущее соединение будет утеряно (и без повторного вызова его не восставновить). А это уже тоже будет некрасиво! и не очень логично! (Вы же сами просили продумать все нюансы, а вот в вашей же задаче всплыл такой нюанс немного нелогичный).
В данном случае именно мой вариант (наверное, как и остальных 90%) более интересный и универсальный. Поскольку вы тогда сможете открывать соединения функцией (base_connect) которая вами же и будет создана, зачем потом ещё и mysql_connect сюда мешать?! :). На открывали сколько нужно и потом какой нужно то и используйте. Проблемы ни какой.
Если у Вас есть 3-ий способ решения, то выслушаю. Заинтриговали прям уж :)
Кстати отзыв я не прошу, мне просто было интересно. И остается интересно какой же в вашем понимании "правильный код" написали другие. Они хотябы function_exists() применяли? если нет, то для меня они не прошли тестирование еще больше, чем :)
Но все равно напомню, ищу программиста (PHP+MySQL+HTML+javascript+XML хотябы основы) на постоянку в офис в Москве.
Я предположу, что статические переменные в функции тоже заводить нельзя
Нет, этого я не сказал ;)
Поскольку вы тогда сможете открывать соединения функцией (base_connect) которая вами же и будет создана, зачем потом ещё и mysql_connect сюда мешать?!
Скрипты бывают не только самостоятельные, в данном случае нужна полностью независимая не от чего функция (обслуживающая только одно соединение) которую можно было бы вставить в любой другой уже работающий код (в том числе и в тот где уже есть mysql_connect а может и не один)
Зачем может понадобится такая функция ?
Правильно не может, это задание не "реальное" а "тестовое".
(посмотреть как кандидат его напишет, и пока из всех никто не написал его на все 100 даже после уточнения всех тонкостей)
а вообще, пишите класс, и для каждого соединения делаете новый объект, к которому и отдаете запросы... никто ни с чем не пересечется...
а вообще, пишите класс
Чукча не читатель ? Чукча писатель ?
Зачем может понадобится такая функция ?
Правильно не может, это задание не "реальное" а "тестовое".
Ну так те уточнения, которые были приведены все таки я выполнил или опять нет? :(
Конечно, уточнять можно до бесконечности и наращивать функционал. Мысли читать ведь этому еще научиться надо :)).
Важу задачу нельзя было бы написать с первого раза и правильно, поскольку все нюансы только у Вас в голове были. Можно было только найти человека мысли которого совпали бы с вашими вот и все. Но то что еще ни кто так и не написал на 100% то что вы задумали, говорит только о том, что люди все разные и мыслют по разному :)).
Ну так те уточнения, которые были приведены все таки я выполнил или опять нет? :(
Конечно, уточнять можно до бесконечности и наращивать функционал. Мысли читать ведь этому еще научиться надо :)).
Важу задачу нельзя было бы написать с первого раза и правильно, поскольку все нюансы только у Вас в голове были. Можно было только найти человека мысли которого совпали бы с вашими вот и все. Но то что еще ни кто так и не написал на 100% то что вы задумали, говорит только о том, что люди все разные и мыслют по разному :)).
я выполнил на 99 :D
to Зингельшухер - вам нужно уже топик открывать - решение задач программистами на PHP && MySQL
:)
все нюансы только у Вас в голове были
Единственный нюанс которого не было в первом сообщении это то что надо обойтись без глобальных переменных (ещё нюанс что код должен быть не глючный, но я думал что это очевидно)
Единственный нюанс которого не было в первом сообщении это то что надо обойтись без глобальных переменных (ещё нюанс что код должен быть не глючный, но я думал что это очевидно)
Неее. Первое сообщение было таким:
Функция должна соединяться с MySQL, а вутри неё должна быть функция для отправки запросов на это ссоединение и возвращать готовый массив данных...
Т.е чтоб это использовалось примерно так
Цитата:
include 'функция.рнр';
base_connect('localhost', 'root', '', 'test');
// до вызова функции base_connect функция base_query существовать не должна
$data = base_query('SELECT * FROM `table` LIMIT 0, 30;');
// в $data должен появиться полностью массив с записями из базы.
Понятно точно было только вот это:
1. // до вызова функции base_connect функция base_query существовать не должна (выполнено)
2. // в $data должен появиться полностью массив с записями из базы. (выполнено)
- Потом было дополнение, что нужно хранить коннект, но проблем его хранить в static переменно нет. Это уже мелочь, которая потом всплыла после Ваших же уточнений на задачу. А первые ваши п.1 п.2 выполнены.
- потом добавился пункт что можно сделать конкурирующее другое соединение с базой посредством обычной mysql_connect.
- и добавился пункт что дополнительных параметров в функцию добавлять нельзя (ну решение очевидно уже было, значит просто нужно static)
Но это все было уже потом, и по мере поступления новых уточнений, ес-но идет доработка кода. Заранее это точно нельзя было предположить. :))). Ни кто ж не знал в каких реальных условия будет жить функция... бедненькая.
Ладно, это мы уже воду начали лить. Особых отличий от моего решения, которое со static я уже не стал конечно доделывать, ибо это просто повторяться :). Ну вместо параметра в функии будет заведена переменная типа static да и всё.
Вы бы показали, решение задачи в чистом виде. Раскройте карты. )
Функция для отправки запросов на это соединение а не на первое попавшееся, у вас в коде этого не было !!!
Потом было дополнение, что нужно хранить коннект
Это не дополнение, это уже прямая подсказзка как исправить ВАШ недочёт !!!
потом добавился пункт что можно сделать конкурирующее другое соединение с базой посредством обычной mysql_connect
Это не пункт, это подсказка зачем надо посылать запрос на ЭТО ссоединение а не на первое попавшееся (любой программист должен это понимать без моей подсказки)
добавился пункт что дополнительных параметров в функцию добавлять нельзя
Это не пункт а подсказка что если их реализовать, то код который должен работать правильно работать не будет (его нужно будет модифицировать)
по мере поступления новых уточнений, ес-но идет доработка кода
Может мне ещё и код за вас написать ?
Я (давая задание) являюсь заказчиком, дал задание жду результат, а если на меня будет работать 100 программистов я тоже буду каждому объяснять как ему писать код ?
Зачем тогда им вообще программистами быть если мозги всё равно только я использовать буду ?
Да добавка того что функция должна обойтись без хранения идентификатора соединения в глобальных переменных это да, пункт упустил я (мой косяк, согласен)
Если вы считаете что отсутствие глюков это дополнительная фича и должна оговариваться отдельно (и заказчик сам должен искать глюки чтоб вы их исправили) то тут уж извините, с вами мне не по пути.
PS. Я привык делать качественно сразу, и от других требую к себе такого-же отношения.