Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   Как оформить дамп... (http://www.flasher.ru/forum/showthread.php?t=36695)

Froggy 04.09.2002 12:59

Как оформить дамп...
 
...посолидней в файл? Т.е. что мне нужно: есть табла ее надо сдампировать в текстовый файл средствами скрипта РНР при том каждое поле загонять вот примерно так:
Id tra-ta-ta
Name name_tra-ta-ta
Fam fam_tra-ta-ta
...
Info info_tra-ta-ta
и т.д.
Записей не много(170, но будет больше), но не хочется долбаться вручную и вообще на будущее может понадобиться!
Как это сделать не соображу! Подскажите кто знает или такое уже делал!

ihorko 04.09.2002 13:56

вариант 1:

использовать привилегии пользователя (гранты) mysql на выполнение FILE
трудности: а кто тебе даст эту привилегию?

вариант 2:

использовать скрипт, который берет данные из базы, формирует в нужную тебе форму и пишет в файл:

1. Достаем данные из базы:

$sql = "SELECT * FROM folio";
$result = mysql_query ($sql) or die ("failed to run query");


2. Определяем конечный массив данных:

$data = Array();

3. Идем циклом по результатам из базы, формируем за каждый шаг массив из элементов одной записи, потом это добавляем в общий массив:

while ( $row = mysql_fetch_row ($result) ) {

$item = Array ("ID: ".stripslashes($row[0]).";", "TITLE: ".stripslashes($row[1]).";", "URL: ".stripslashes($row[2]).";\n");
$data = array_merge ($data, $item);

}


4. ну и пишем в файл...

$fp = fopen ("ddm2.dump", "w") or die ("failed to open or create file");
fputs ($fp, implode ("\n", $data) ) or die ("failed to write into fileS");

fclose($fp) or die ("failed to close file");


5. Результат в файле такой:

ID: 1;
TITLE: Billa;
URL: bil3.jpg;

ID: 2;
TITLE: Billa;
URL: bil1.jpg;

...

Это простая и удобная схема. Можно ее наворачивать - автоматически генерить размер массива $item, беря инфу из той же базы (DESCRIBE), можно реализовать проверку файла перед записью и новое дописывать в конец, и так далее...
трудись, все получится :)

Froggy 04.09.2002 14:42

2 Ihorko: Огромное СПА!
 
Вот блин-то! Спасибо большое. Все предельно понятно, если что, то может еще потревожу. А вот насчет привилегий(вариант 1), то мнеэто не проблема, т.к. Я непосредственно на работе с серваком работаю, т.е. могу если мне надо любые права поставить, тем более что это надо для администрирования нашего сайта и кроме админа сайта никто этих действия делать не будет. Но все-таки второй вариант лучше, он более ониверсален, хотя если объяснишь первый вариант - то буду благодарен вдвойне!

ihorko 04.09.2002 14:57

оч просто - залазишь в mysql monitor и даешь команду выполнить дамп базы такой-то, таблицы такой-то, тип дампа (структура, данные, и то и другое), способ форматирования и имя файла, куда сливать...

точный синтаксис не помню, поскольку сам редко такое делаю - из пхп удобнее :), но если оч надо - посмотри в документации mysql, там все предельно понятно написано

Iron_Wolf 04.09.2002 19:55

Есть такая программка для работы с МуСКЛ MySQLFront называется. Там есть и создание дампов и еще много много разных очень полезных функций. (Но правда бывае немного глючит) вот линка кому надо http://www.mysqlfront.de/

ihorko 04.09.2002 21:28

да, приятная программуля для работы со своим мускулом на своей локальной ВИНДОВОЙ тачке...

а теперь жестокая реальность:

твой сайт хостится на FreeBSD, у тебя доступ к бд-серверу на одну базу данных, которая называется как и твой логин у этого хостера, доступ к бд-серверу разрешен только локально (тоесть или с того же сервера через свой шелл-аккаунт или скриптом с того же сервера хостинга) и у тебя привилегии на CREATE, SELECT, UPDATE, DELETE, DROP??? Представили себе ситуацию? Да, согласен, нефиг ее представлять, все кроме админов так живут, и уже не первый год... А при таком раскладе засовываем эту программулю в задницу по самые кнопки 'close' и 'minimize/maximaze'...

hoster@ihorko> mysql -u ihorko -p

РУЛЬ!!!

Iron_Wolf 04.09.2002 23:56

Ну а если все так тяжко как ты описываешь, то вполне можно воспользоваться локальным платформонезависимым скриптом. Например PHPMySQLAdmin (точно названия не помню, если не правильно, извините) который, кстати, тоже умеет создавать дамп - схемы. Кстати, интересно, есть ли аналог вышеразкритикованой проги под Линукс? Наверняка есть да еще и красивее :) :D

Froggy 05.09.2002 11:51

Да это все понятно...
 
Ребята, Я все эти прграммки знаю, тем более на Mysql Front сам линк давал модератору раздела :D, и PhpMyAdmin Я знаю, но она ничего не дает дельного при создании дампа, сплошной текст и все, никакого сервиса. Так что приходится делать, что мне тоже больше нравится, свой скрипт для этих целей. Но вот не отрабатывает запись в файл у меня, проверяю пока на локальной машине. Не знаю почему, но файл не трогает вообще, т.е. запрос работает, отдает все циклу(Я думаю) цикл все отрабатывает(Я думаю), но вот файлик пуст! :( Что скажешь Ihorko

ihorko 05.09.2002 12:00

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

все хостеры дают (если вообще дают) доступ к серверу по протоколу SSH - а это терминальный протокол... и пользоваться прогами, которые требуют графического режима ты не сможешь...
если ты еще не понял, то привожу пример: у тебя есть фотошоп. даже заинсталеный. но на компе у тебя слетела винда и остался дос. если ты запустишь фотошоп из этого доса, что он тебе скажет? правильно, пошлет куда подальше :)

а по поводу phpMyAdmin... да, очень хорошая вещь. но. во первых - не все хостеры ее дают. во-вторых - если захочешь сам поставить - вперед, только она места дохрена занимает. последняя версия - 3,5 мегабайта. можно конечно урезать все лишнее, если знаешь пхп+мускуль... но в таком случае проще написать на том же пхп+мускуль своего клиента :) - дешево и сердито.

в конце концов, если у тебя даже стоит этот phpMyAdmin, есть еще одна проблема. для того, чтобы сделать дамп, тебе надо руцями заходить, и тыцять грызуном куда надо...
а вот такой вот скрипт для создания дампов полезен тем, что он может выполняться незаметно, быть частью большей программы, запускаться кронтабом... и так далее :)
жизненный пример:
сделал заказчику сайт. сделал админ-часть (Content Management System), чтоб секретарь или еще какой-то человек без спецзнаний мог добавлять/редактировать материалы на сайте. все путем. но допустим такой вариант - секретарша зашла в админчасть и случайно удалила несколько записей... или просто каким-то странным образом выполнила файл install.php, который очистил нафиг всю базу... что будем делать? да, это уже проблемы заказчика, но ведь он нам заплатил за хорошую админчасть... так вот в такой ситуации мой скрипт помогает! каждый раз, когда проходит авторизация администратора сайта, перед тем как показать уже содержимое админчасти, вот этот скриптик на фоне преспокойно делает дамп... и в случае чего мы просто нажимаем кнопочку "восстановить из последнего архива" и база на месте :)

а прогу я не раскритиковывал... на самом деле действительно приятная программа, просто пользы от нее для реальное работы с базой на хостинге - НОЛЬ! :)

ihorko 05.09.2002 12:12

2 Froggy

вместо записи в файл попробуй просто вывести все на экран. слепи все элементы массива в строку:

$data_string = implode ("<br>", $data);

и попроси пхп напечатать всю ету дрянь...

print $data_string;

Если у тебя и сейчас ничего не вилезет на странице, тогда быренько открывай аську, нажимай кнопку "поиск/приглашение юзера" и вбивай тут мой уин - 51956656. я так понял мы одновременно оба в онлайне, так что помогу чем смогу :)

кстати, у меня этот скрипт 1 в 1 работает! правда у меня пхп 4.2, но там нет ничего такого, что бы могло не работать в более поздних версиях пхп 4


Часовой пояс GMT +4, время: 15:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.