я в этом не сильно шарю. имхо, нагрузка в целом ведь еще зависит от количества фтыкателей обращающихся к базе? чем их больше, тем больше нагрузка в случае множественных запросов. нет?Garipov72 писал(а):Что лучше? Сделать несколько запросов в БД или обработать один большой запрос?
MySQL и все с ним связанное
Re: PHP and MySQL
-
- Сообщения: 44
- Зарегистрирован: 10 сен 2010 01:40
Re: MySQL перенос данных с одного компьютера на другой ...
Поставь phpMyAdmin и решишь все свои глобальные проблемы, в том числе перенос базы данных в структуре или вместе с данными.dooh писал(а):Вобщем тема такая:
есть база данных MySQL в ней уже есть некоторое количество данных ... мне требуется перенести и структуру и данные на другой компьютер (точнее я себе поставил Linux Ubuntu 10.4.1 а была установлена Windows XP). Как я сам понимаю у меня есть как один из вариантов, скопировать файл базы данных. Я не уверен правда что на Linux используется тотже формат файла и вообще возможно ли подключить на MySQL сервер еще один файл. Также естесвенно есть возможность экспорта данных с прежнего сервера и потом импорт в на новый сервер.
Подскажите как быть (и как лучше сделать):
Там же и узнаешь синтаксис подобных SQL запросов. phpMyAdmin будет полезен как для начинающих, так и для матерых программистов. В любой момент сможешь нажатием одной кнопки просмотреть структуру, сожержание базы, таблиц и т д.
-
- Сообщения: 44
- Зарегистрирован: 10 сен 2010 01:40
Re: PHP and MySQL
Если тебе нужны строки с некоторыми известными индексами(особенно первичными) то mysql сервер даст ответ достаточно быстро.Garipov72 писал(а):Спасибо Просто я думал может MySQL быстрее выполняется чем php.
Так вот советую тебе обдумать структуру и загаловки полей таблиц, и стратся использовать WHERE для индексированых значений полей.
Я думаю 3-4 запроса к mysql его не озодачит, к тому же так гораздо проще сделать, чем загружать в память php большие массиы информации, да ещё обрабатывать их, а если еще тяжелыми регулярными выражениями! Короче сядет на 5ю точку твой php.
Плюс ко всему потребуется дополнительный код php оброботки, сортровки и всякие головники, Зачем
Re: MySQL и все с ним связанное
запросов будет около 30 причем в цикле
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки
-
- Сообщения: 44
- Зарегистрирован: 10 сен 2010 01:40
Re: MySQL и все с ним связанное
подобно поясни, что ты хочешь делать?Garipov72 писал(а): запросов будет около 30 причем в цикле
Re: MySQL и все с ним связанное
Код: Выделить всё
function enclosed_categories ($quq='', $id='') {
while ($rot = mysql_fetch_assoc ($quq)) {
$basic .= '<option ';
if ($id == $rot['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot['id']).'">'.stripslashes ($rot['title']).'</option>\n';
$root2 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot['id']."' ORDER BY title");
if (mysql_num_rows ($root2)) {
while ($rot2 = mysql_fetch_assoc ($root2)) {
$basic .= '<option ';
if ($id == $rot2['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot2['id']).'">---'.stripslashes ($rot2['title']).'</option>\n';
$root3 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot2['id']."' ORDER BY title");
if (mysql_num_rows ($root3)) {
while ($rot3 = mysql_fetch_assoc ($root3)) {
$basic .= '<option ';
if ($id == $rot3['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot3['id']).'">------'.stripslashes ($rot3['title']).'</option>\n';
$root4 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot3['id']."' ORDER BY title");
if (mysql_num_rows ($root4)) {
while ($rot4 = mysql_fetch_assoc ($root4)) {
$basic .= '<option ';
if ($id == $rot4['id']) {$basic .= 'selected ';}
$basic .= 'value="'.stripslashes ($rot4['id']).'">---------'.stripslashes ($rot4['title']).'</option>\n';
$root5 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot4['id']."' ORDER BY title");
if (mysql_num_rows ($root5)) {
while ($rot5 = mysql_fetch_assoc ($root5)) {
$basic .= '<option ';
if ($id == $rot5['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot5['id']).'">------------'.stripslashes ($rot5['title']).'</option>\n';
$root6 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot5['id']."' ORDER BY title");
if (mysql_num_rows ($root6)) {
while ($rot6 = mysql_fetch_assoc ($root6)) {
$basic .= '<option ';
if ($id == $rot6['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot6['id']).'">---------------'.stripslashes ($rot6['title']).'</option>\n';
$root7 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot6['id']."' ORDER BY title");
if (mysql_num_rows ($root7)) {
while ($rot7 = mysql_fetch_assoc ($root7)) {
$basic .= '<option ';
if ($id == $rot7['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot7['id']).'">------------------'.stripslashes ($rot7['title']).'</option>\n';
$root8 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot7['id']."' ORDER BY title");
if (mysql_num_rows ($root8)) {
while ($rot8 = mysql_fetch_assoc ($root8)) {
$basic .= '<option ';
if ($id == $rot8['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot8['id']).'">---------------------'.stripslashes ($rot8['title']).'</option>\n';
$root9 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot8['id']."' ORDER BY title");
if (mysql_num_rows ($root9)) {
while ($rot9 = mysql_fetch_assoc ($root9)) {
$basic .= '<option ';
if ($id == $rot9['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot9['id']).'">------------------------'.stripslashes ($rot9['title']).'</option>\n';
$root10 = mysql_query ("SELECT * FROM the_enterprises_kat WHERE root_id='".$rot9['id']."' ORDER BY title");
if (mysql_num_rows ($root10)) {
while ($rot10 = mysql_fetch_assoc ($root10)) {
$basic .= '<option ';
if ($id == $rot10['id']) {$basic .= 'selected ';}
$basic .= ' value="'.stripslashes ($rot10['id']).'">---------------------------'.stripslashes ($rot10['title']).'</option>\n';
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return $basic;
}
А в таблице хранится только id категори и id родительской категории.
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки
-
- Сообщения: 44
- Зарегистрирован: 10 сен 2010 01:40
Re: MySQL и все с ним связанное
Я конечно всего кода и таблицы базы данных не видел, но помоему эта бредовая функция предназначена для пожирания ресурсов, а потом уже для получения списка OPTION -ов. Все можно сделать в PHP и гораздо проще используя всего 1 запрос к mysql серверу.
Re: MySQL и все с ним связанное
Почитайте топик выше! Я для этого и спрашивал. Лучше бы предложили лучший вариант я не нашел другого решения.
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки
-
- Сообщения: 44
- Зарегистрирован: 10 сен 2010 01:40
Re: MySQL и все с ним связанное
У ru не зря возникло желание отправить тебя читать мануалы, все что я понял ты или конифолишь нам всем мозг или хочешь решить элементарную задачу как то своеобразно, только не пойму какую? Опиши в словах свою таблицу, что хочешь извлечь из нее и с какими условиями, тогда может, что нибудь предложу.Garipov72 писал(а):Почитайте топик выше! Я для этого и спрашивал. Лучше бы предложили лучший вариант я не нашел другого решения.
Re: MySQL и все с ним связанное
Суть задачи: сделать большую вложенность категорий. (до 10)
В MySQL такая таблица: id (AI), title, id_root.
Id задается автоматом, title это как наверно понятно заголовок имеет текстовой вид, id_root - родительский элемент.
Конкретная задача, вывести скписок в option тегах, в зависимости от вложенности добавляется отступ.
В MySQL такая таблица: id (AI), title, id_root.
Id задается автоматом, title это как наверно понятно заголовок имеет текстовой вид, id_root - родительский элемент.
Конкретная задача, вывести скписок в option тегах, в зависимости от вложенности добавляется отступ.
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки
Re: MySQL и все с ним связанное
Я не отрицаю, можно все в массив сталкать и рабоать с ним, однако я не нашел решения как избавится от вложенных циклов.
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки
-
- Сообщения: 44
- Зарегистрирован: 10 сен 2010 01:40
Re: MySQL и все с ним связанное
создай таблицу с 11 полями:Garipov72 писал(а):Суть задачи: сделать большую вложенность категорий. (до 10)
В MySQL такая таблица: id (AI), title, id_root.
Id задается автоматом, title это как наверно понятно заголовок имеет текстовой вид, id_root - родительский элемент.
Конкретная задача, вывести скписок в option тегах, в зависимости от вложенности добавляется отступ.
- 0 - id первичный
- 1-10 пропишешь title , а их индекс в табице укажет на порядок вложенности
- 11 - id_root здесь будешь указывать индекс родителя
1 1 1 1 1....
2 2 2 2 2....
. 1 1 1 1....
. 2 2 2 2...
. . 3 3 1...
. . 4 .и т д.
далее в скрипте извлекаешь таблицу перемещаещь в двумерный массив, чтобы не обращатся больше к mysql , запускаешь вложенные 10 циклов (как в том скрипте) типа for и печатаещь свой массив браузеру. В условиях будешь использовать только индексы id и id_root, поэтому php выполнит все это моментально + цыклы работают быстро. Кстати в этой задаче можно применить рекурсию, тогда код php сокраится до нильзя(предположу, что это будет около 10 граматных строк).
Re: MySQL и все с ним связанное
Спасибо, посижу на досуге, просто с момента написания этой функции к скрипту более не возвращался, времени не было.
Я в nested sets пробовал разобратся но так и не смог выбрать время что бы нормально освоить.
Я в nested sets пробовал разобратся но так и не смог выбрать время что бы нормально освоить.
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки