Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Веб-сервер с нуля.
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Веб-сервер с нуля.

Страниц (4): [1] 2 3 4 »
 

1. m - 20 Февраля, 2008 - 10:38:51 - перейти к сообщению
Тяжела и неказиста жизнь простого не-программиста.

Здравствуйте. Не секрет, что в сети много ресурсов, посвященных РНР-программированию, но Ваш мне показался наиболее дружелюбным по отношению к начинающим и неопытным. Поэтому я здесь Улыбка

Жизнь скрутила, что называется. Передо мной встала сложная (для меня) задача, которую необходимо выполнить в весьма сжатые сроки. Суть проблемы:

Необходимо создать простенький веб-сервер со следующими функциями:
- Загрузка файлов на сервер (с занесением информации о файлах в БД);
- Загрузка файлов с сервера;
- Регистрация и авторизация пользователей;
- Поиск файлов на сервере.

Исходное положение: имеется связка LAMP (Linux Mandrake 9.0, Apache 1.3.26, MySQL 3.23.52, PHP 4.2.3.1). Проблема усугубляется тем, что с каждым элементом связки я столкнулся впервые. Ну, вроде все установлено и работает.

Вообще, сперва решил не изобретать велосипед, и найти готовый скрипт. Нашел и испробовал несколько штук, но ни один из них не подошел в полной мере. Более/менее меня устраивал pogouploader, но он не выполнял 2ю и 4ю функции. Думал как-то подстроить его под себя, но захлебнулся в тонне кода.
В итоге пришел к выводу, что писать придется самому. С помощью статьи с Вашего сайта, написал скрипт загрузки файлов на сервер (спасибо автору - статья написана просто и доступно). Теперь надо бы научить скрипт записывать информацию о файлах в БД. Вот тут я уже застрял.

Просьба: помогите, пожалуйста, справиться с текущей проблемой. И вообще, если есть у кого время и желание - возьмите меня на поруки Улыбка Ибо некому надо мной шефствовать.
2. RomAndry - 20 Февраля, 2008 - 10:55:35 - перейти к сообщению
С удовольствием поможем.
Но никто не научит тебя думать,
этому можно научится только в процессе работы проб и ошибок -
вот ошибки, которые возникают или не понимания и пиши в форум,
в соответствующий раздел.
Т.е. что делал и что не получилось.
Так быстрее получишь ответ и совет, чем ждать пока напишут за тебя.
Цитата:
Теперь надо бы научить скрипт записывать информацию о файлах в БД. Вот тут я уже застрял.

При загрузке файлов на сервер у тебя есть массив $_FILES который и содержит информацию, которую можно занестив базу, т.е. там где в коде идет загрузка необходимо вставить INSERT с нужными тебе данными.

Что не получится, спрашивай, приводи код и ошибки.

Удачи.
3. m - 20 Февраля, 2008 - 12:56:10 - перейти к сообщению
RomAndry, спасибо за оперативное реагирование.

RomAndry пишет:
При загрузке файлов на сервер у тебя есть массив $_FILES который и содержит информацию, которую можно занестив базу, т.е. там где в коде идет загрузка необходимо вставить INSERT с нужными тебе данными.


Попробовал так:

В MySQL в database1 создал таблицу file_database
CODE (text):
скопировать код в буфер обмена
  1. mysql -udb1admin -pdb1pas database1 -e "create table file_database(id int not null auto_increment, name char(30) not null, type char(30) not null, primary key(id));"


Затем, в скрипт загрузки файла добавил
PHP:
скопировать код в буфер обмена
  1. $host = 'localhost';
  2. $user = 'db1admin';
  3. $password = 'db1pas';
  4. $database = 'database1';
  5.  
  6. $link = mysql_connect($host, $user, $password);
  7. mysql_select_db ($database);
  8. $query = "insert into file_database values ($_FILES['uploadfile']['name'], $_FILES['uploadfile']['type'], $_FILES['uploadfile']['size'])";
  9. mysql_query ($query, $link);
  10. mysql_close ($link);

Попробовал в деле - получил ошибку "Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /var/www/html/web-server/upload. php on line 27".
Как я понимаю проблема в типе данных, а точнее в их несогласованности.
Что посоветуете?
4. Dastar - 20 Февраля, 2008 - 13:07:52 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "insert into file_database values ('".$_FILES['uploadfile']['name']."', '".$_FILES['uploadfile']['type']."', '".$_FILES['uploadfile']['size']."')";
  3.  

попробуй так
5. m - 20 Февраля, 2008 - 13:23:11 - перейти к сообщению
Dastar, спасибо, помогло.

Тут же параллельно вопрос. Решил еще скрипт вывода данных из таблицы написать. Тем более, что здесь есть статья по этому поводу. Вроде все понятно, но одна строчка привела в замешательство:

CODE (text):
скопировать код в буфер обмена
  1. printf("id:%d, name:%s, tel:%s",


Что обозначают эти %d и %s?
6. RomAndry - 20 Февраля, 2008 - 13:31:11 - перейти к сообщению
sprintf
7. m - 20 Февраля, 2008 - 14:32:22 - перейти к сообщению
Хм. Не выходит что-то с выводом данных из таблицы.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $host = "localhost";
  3. $user = "db1admin";
  4. $password = "db1pas";
  5. $database = "database1";
  6.  
  7. $link = mysql_connect($host, $user, $password);
  8. mysql_select_db($database, $link);
  9. $query = "select * from file_database";
  10. $result = mysql_query($query, $link);
  11. while($rows = mysql_fetch_array($result, mysql_assoc))
  12. {
  13. printf("id:%d, name:%s, type:%s, size:%d", $rows['id'], $rows['name'], $rows['type'], $rows['size']);
  14. }
  15. mysql_close($link);
  16. ?>

Запускаю - ошибок не дает. Вообще ничего не дает. Девственно чистую страницу дает.
Причем, когда в линуксе, в консоли ввожу
CODE (text):
скопировать код в буфер обмена
  1. mysql -udb1admin -pdb1pas database1 -e "select * from file_database"

тоже ничего не дает. В чем ошибаюсь?
8. Eihwaz - 20 Февраля, 2008 - 14:37:34 - перейти к сообщению
По-идее, должно быть так:
PHP:
скопировать код в буфер обмена
  1.  
  2. while($rows = mysql_fetch_array($result))
  3. {
  4. echo sprintf("id: %d, name: %s, type: %s, size: %d",
  5. $rows['id'], $rows['name'], $rows['type'], $rows['size']);
  6. }
  7.  
9. RomAndry - 20 Февраля, 2008 - 14:37:47 - перейти к сообщению
1. Поставь себе PMA (PhpMyAdmin) будет удобно работать с базами
2. скорей всего у тебя нет данных, нечего выбирать
сделай после
10. m - 20 Февраля, 2008 - 14:45:39 - перейти к сообщению
Eihwaz, не помогло.

RomAndry, на чистом листе вылез 0. Выходит, скрипт загрузки не вносит описание файла в БД?
11. RomAndry - 20 Февраля, 2008 - 14:51:31 - перейти к сообщению
если вылез ноль значит нет записей в базе.
попробуй для начала просто
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "INSERT INTO `file_database` VALUES ('file.jpg', 'JPEG', '1024')";
  3.  
12. m - 20 Февраля, 2008 - 14:59:58 - перейти к сообщению
RomAndry, в консоли вставил вручную, проверил - есть.
13. Eihwaz - 20 Февраля, 2008 - 15:15:47 - перейти к сообщению
Cтоп, давайте сначала:
PHP:
скопировать код в буфер обмена
  1.  
  2. $host = "localhost";
  3. $user = "db1admin";
  4. $password = "db1pas";
  5. $database = "database1";
  6.  
  7. $db_connect = mysql_connect($host, $user, $password)
  8. or die('Невозможно подключиться к базе данных. ' . mysql_error());
  9.  
  10. mysql_select_db($database)
  11. or die('Не могу выбрать базу данных. ' . mysql_error());
  12.  
  13. $query = "SELECT * FROM file_database";
  14. $result = mysql_query($query);
  15. while($rows = mysql_fetch_array($result))
  16. {
  17. echo sprintf("id: %d, name: %s, type: %s, size: %d",
  18. $rows['id'], $rows['name'], $rows['type'], $rows['size']);
  19. }
  20.  


Да, и поля лучше переименовать. ID,
например, точно зарезервированное ключевое
слово, name, кажется, тоже, да и type вероятно.
Переименуйте в file_id, file_name, file_type, file_size.
14. RomAndry - 20 Февраля, 2008 - 15:16:38 - перейти к сообщению
не в консоли а в скрипте
вместо
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "insert into file_database values ('".$_FILES['uploadfile']['name']."', '".$_FILES['uploadfile']['type']."', '".$_FILES['uploadfile']['size']."')";
  3.  
15. m - 20 Февраля, 2008 - 16:05:19 - перейти к сообщению
Eihwaz, RomAndry, спасибо. Завтра попробую - отпишусь.

 

Powered by ExBB FM 1.0 RC1