Программист на PHP + MySQL

[Удален]
#11
DyaDya:
Но дай бог находить тех, кто сразу ВСЁ предусмотрит

Таких вот я и ищу, кто сразу всё предусматривает, увы таких мало (но они есть)

DyaDya
На сайте с 11.04.2007
Offline
147
#12
Зингельшухер:
Таких вот я и ищу, кто сразу всё предусматривает, увы таких мало (но они есть)

Я ещё думаю:)

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);

//в самом файле функция.пхп я не буду уж дописывать этот парамет, ибо сделать проверку проблем не должно быть даже у новичкофф.

ЗЫ. Я теперь жду Вашего решение, в котором будут выполнены все условия из первого сообщения

include 'функция.рнр';
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 хотябы основы) на постоянку в офис в Москве.

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
[Удален]
#13
DyaDya:
Я предположу, что статические переменные в функции тоже заводить нельзя

Нет, этого я не сказал ;)

DyaDya:
Поскольку вы тогда сможете открывать соединения функцией (base_connect) которая вами же и будет создана, зачем потом ещё и mysql_connect сюда мешать?!

Скрипты бывают не только самостоятельные, в данном случае нужна полностью независимая не от чего функция (обслуживающая только одно соединение) которую можно было бы вставить в любой другой уже работающий код (в том числе и в тот где уже есть mysql_connect а может и не один)

Зачем может понадобится такая функция ?

Правильно не может, это задание не "реальное" а "тестовое".

(посмотреть как кандидат его напишет, и пока из всех никто не написал его на все 100 даже после уточнения всех тонкостей)

AM
На сайте с 12.09.2007
Offline
47
#14

а вообще, пишите класс, и для каждого соединения делаете новый объект, к которому и отдаете запросы... никто ни с чем не пересечется...

С уважением, Морозов Андрей, разработчик проекта eTXT.ru (http://www.etxt.ru/?r=morozov), icq 55377667
[Удален]
#15
AndreM:
а вообще, пишите класс

Чукча не читатель ? Чукча писатель ?

Зингельшухер:
Зачем может понадобится такая функция ?
Правильно не может, это задание не "реальное" а "тестовое".
DyaDya
На сайте с 11.04.2007
Offline
147
#16
(посмотреть как кандидат его напишет, и пока из всех никто не написал его на все 100 даже после уточнения всех тонкостей)

Ну так те уточнения, которые были приведены все таки я выполнил или опять нет? :(

Конечно, уточнять можно до бесконечности и наращивать функционал. Мысли читать ведь этому еще научиться надо :)).

Важу задачу нельзя было бы написать с первого раза и правильно, поскольку все нюансы только у Вас в голове были. Можно было только найти человека мысли которого совпали бы с вашими вот и все. Но то что еще ни кто так и не написал на 100% то что вы задумали, говорит только о том, что люди все разные и мыслют по разному :)).

I
На сайте с 05.06.2006
Offline
117
#17
DyaDya:
Ну так те уточнения, которые были приведены все таки я выполнил или опять нет? :(

Конечно, уточнять можно до бесконечности и наращивать функционал. Мысли читать ведь этому еще научиться надо :)).

Важу задачу нельзя было бы написать с первого раза и правильно, поскольку все нюансы только у Вас в голове были. Можно было только найти человека мысли которого совпали бы с вашими вот и все. Но то что еще ни кто так и не написал на 100% то что вы задумали, говорит только о том, что люди все разные и мыслют по разному :)).

я выполнил на 99 :D

to Зингельшухер - вам нужно уже топик открывать - решение задач программистами на PHP && MySQL

:)

Миграция с ISPManager 4 в VestaCP (https://chast.in/copy-users-from-ispmanager-2-vestacp.html) Хостинг серверов, пользуюсь сам (http://vps-server.ru/rp/pl.php?96)
[Удален]
#18
ivtrans:
все нюансы только у Вас в голове были

Единственный нюанс которого не было в первом сообщении это то что надо обойтись без глобальных переменных (ещё нюанс что код должен быть не глючный, но я думал что это очевидно)

DyaDya
На сайте с 11.04.2007
Offline
147
#19
Зингельшухер:
Единственный нюанс которого не было в первом сообщении это то что надо обойтись без глобальных переменных (ещё нюанс что код должен быть не глючный, но я думал что это очевидно)

Неее. Первое сообщение было таким:

Функция должна соединяться с 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 да и всё.

Вы бы показали, решение задачи в чистом виде. Раскройте карты. )

[Удален]
#20

Функция для отправки запросов на это соединение а не на первое попавшееся, у вас в коде этого не было !!!

DyaDya:
Потом было дополнение, что нужно хранить коннект

Это не дополнение, это уже прямая подсказзка как исправить ВАШ недочёт !!!

DyaDya:
потом добавился пункт что можно сделать конкурирующее другое соединение с базой посредством обычной mysql_connect

Это не пункт, это подсказка зачем надо посылать запрос на ЭТО ссоединение а не на первое попавшееся (любой программист должен это понимать без моей подсказки)

DyaDya:
добавился пункт что дополнительных параметров в функцию добавлять нельзя

Это не пункт а подсказка что если их реализовать, то код который должен работать правильно работать не будет (его нужно будет модифицировать)

DyaDya:
по мере поступления новых уточнений, ес-но идет доработка кода

Может мне ещё и код за вас написать ?

Я (давая задание) являюсь заказчиком, дал задание жду результат, а если на меня будет работать 100 программистов я тоже буду каждому объяснять как ему писать код ?

Зачем тогда им вообще программистами быть если мозги всё равно только я использовать буду ?

Да добавка того что функция должна обойтись без хранения идентификатора соединения в глобальных переменных это да, пункт упустил я (мой косяк, согласен)

Если вы считаете что отсутствие глюков это дополнительная фича и должна оговариваться отдельно (и заказчик сам должен искать глюки чтоб вы их исправили) то тут уж извините, с вами мне не по пути.

PS. Я привык делать качественно сразу, и от других требую к себе такого-же отношения.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий