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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу понять как мне вывести данные

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: нужно при работе скрипта выводить файл
unixdifferent
Отправлено: 29 Декабря, 2011 - 17:11:05
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Май 2011  


Помог: 0 раз(а)

[+]


нужно при работе скрипта выводить файл для скачки с данными вот пример ниже
Прикреплено изображение (Нажмите для увеличения)
Безымянный.png

(Отредактировано автором: 29 Декабря, 2011 - 17:12:16)

 
 Top
OrmaJever Модератор
Отправлено: 29 Декабря, 2011 - 19:12:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Panoptik
Отправлено: 29 Декабря, 2011 - 19:56:51
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




вот нашел в закрамах, мои первые коды, тут был вариант хранения двоичных данных в базе с возможностью их скачать
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. include("db_connect.php");
  4. $q="SELECT * FROM MMSet WHERE SetID=$mid;";
  5. $r=mysql_query($q);
  6. @mkdir('tmpfile');
  7. $fp=fopen("tmpfile/$m[Filename]", 'wb');
  8. fwrite($fp, $m['MMedia']);
  9. fclose($fp);
  10. $fname=$m['Filename']."\"";
  11. echo "<br>$m[Filename]<br>";
  12. echo "<a href=\"tmpfile/$fname >Ссылка для скачивания файла</a>"
  13. ?>
  14.  


-----
Just do it
 
 Top
OrmaJever Модератор
Отправлено: 29 Декабря, 2011 - 20:56:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




да, я был прав, файл можно не создавать.

PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/plain;  charset=UTF-8\r\n');
  2. header('Content-Disposition: attachment; filename=\"myfile.txt\"\r\n');
  3.  
  4. echo 'text';


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
unixdifferent
Отправлено: 30 Декабря, 2011 - 18:50:03
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Май 2011  


Помог: 0 раз(а)

[+]


паноптик а можно учть расшифровать ваш код...
 
 Top
Panoptik
Отправлено: 31 Декабря, 2011 - 01:57:32
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




да, без проблем
насколько я помню у меня в данной таблице хранились двоичные данные в поле MMedia тип BLOB
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //обыкновенный файл с подключением к БД
  4. include("db_connect.php");
  5. //выбираем из таблицы с мультимедийными(двоичными) данными поля
  6. $q="SELECT * FROM MMSet WHERE SetID=$mid;";
  7. $r=mysql_query($q);
  8. //загоняем всё это в массив
  9. //пытаемся создать каталог для временных файлов, при этом подавляем возможные ошибки, что не есть хорошо, Но это было давно и меня особо не интересовало...
  10. @mkdir('tmpfile');
  11. //открываем(создаем) файл для записи (w) двоичных (b) файлов
  12. $fp=fopen("tmpfile/$m[Filename]", 'wb');
  13. //записываем данные из базы в файл
  14. fwrite($fp, $m['MMedia']);
  15. //закрываем открытый файл
  16. fclose($fp);
  17. //достаем из массива, который создан из базы имя файла (оно было изначально туда добавлено при сохранении)
  18. $fname=$m['Filename']."\"";
  19. //выводим прямую ссылку на временный файл
  20. echo "<br>$m[Filename]<br>";
  21. echo "<a href=\"tmpfile/$fname >Ссылка для скачивания файла</a>"
  22. ?>
  23.  


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

вот собственно и всё

(Отредактировано автором: 31 Декабря, 2011 - 01:59:37)



-----
Just do it
 
 Top
unixdifferent
Отправлено: 04 Января, 2012 - 12:39:40
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Май 2011  


Помог: 0 раз(а)

[+]


спасибо за помощь ну уж как то все не совсем мне понятно я вот таким образом сделал если кому интересно
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once('include/config.php');
  4. require_once('include/func.php');
  5. $re = $_GET['re'];
  6. $sdf = $_GET['sdf'];
  7.  
  8. if($re>0){
  9.         $result=db_fetch(db_query('SELECT `pass` FROM `pampampam`.`cars`'));
  10.  
  11.         $try=$conf['rty'];
  12.         $rrrr="54545";
  13.         $ttttt="VVVV";
  14.         $erer="True";
  15.         $falererse="False";
  16.  
  17.         $file = "$try\r\n$rrrr\r\n$sdf\r\n$re\r\n{$result[0][0]}\r\n$ttttt\r\n$erer\r\n$falererse";
  18.                          
  19.         header("Content-Length: ".strlen($file));
  20.         header("Content-Type: text/plain");
  21.         header('Content-Disposition: attachment; filename="conf.ini"');
  22.         header("Last-Modified:". date("r"));
  23.         echo $file;
  24. }
  25. ?>
  26.  
 
 Top
OrmaJever Модератор
Отправлено: 04 Января, 2012 - 12:56:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




я так и имел ввиду, только место того чтобы создавать новые переменые можно всё водну дописывать
PHP:
скопировать код в буфер обмена
  1. $file = $conf['rty'] . "\r\n";
  2. $file .= "54545\r\n";
  3. $file .= $_GET['sdf'] . "\r\n";
  4. $file .= $_GET['re'] . "\r\n";
  5. $file .= $result[0][0] . "\r\n";
  6. $file .= "VVVV\r\n";
  7. $file .= "True\r\n";
  8. $file .= "False";


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
unixdifferent
Отправлено: 04 Января, 2012 - 14:43:40
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Май 2011  


Помог: 0 раз(а)

[+]


в общем то да) всем спасибо) с новым годом Радость Подмигивание
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB