Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод файла
 
 автор: sidPR   (22.11.2006 в 12:32)   письмо автору
 
 

есть форма в которую при добовлении [file=243] на выводит выводит файл из базы под номер 243 должным образо оформленный вот как я пытаюсь это делать :

// здесь я выдераю id из скобок
$file_id = preg_replace("/\[file=([0-9]*)\]/i","\\1", $txt); 
//здесь я выбираю из базы ну запись которая мне нужна 
    $select_file = "SELECT *  FROM `files` WHERE `id` = '$file_id'";
    $results = MYSQL_QUERY($select_file); 
    $fl = mysql_fetch_array($results);
    $link = "../".$fl['url'].$fl['name'];
    $f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$fl['size'];
    // после оформления и выборки я вставляю вместо   [file=243]   выбранный и оформленный файл
    $txt = preg_replace("/\[file=([0-9]*)\]/i","$f", $txt);

Помогите пожалуйста неполучается чето что бработало все это $file_id не передает почему в базу или передает но нужно какойто массив создать или еще что но когда я указываю вместо $file_id допустим число при выборке все пашет но на 1 id а вдруг пользователь несколько файлов в докуменсте вставит их нужно соответственно и вывести в тех местах где он их вставил .
подскажите что я делаю не так и как надо,
P.s. заранее благодарен
p.p.s Насчет темы Форму может я и ошибся но долго думал куда вставить и почемуто пал выбор на эту

   
 
 автор: cheops   (22.11.2006 в 13:17)   письмо автору
 
   для: sidPR   (22.11.2006 в 12:32)
 

Не понятно, что не работает.

   
 
 автор: sidPR   (22.11.2006 в 13:51)   письмо автору
 
   для: cheops   (22.11.2006 в 13:17)
 

Не работает вывод ... пустота одна ... проблемы на этом этапе
$select_file = "SELECT * FROM `files` WHERE `id` = '$file_id'";
'$file_id' не передается либо не правильно ... и получается ничего не выводится а если я сам поставли вместо '$file_id' цифру id поля то вывод будет...

   
 
 автор: dert   (22.11.2006 в 14:04)   письмо автору
 
   для: sidPR   (22.11.2006 в 13:51)
 

Попробуйте заменить строку на эту:

$file_id = preg_replace("/\[([0-9]*)\]/i","\\1", $txt);  

Просто не пойму зачем запись file=

   
 
 автор: sidPR   (22.11.2006 в 14:23)   письмо автору
 
   для: dert   (22.11.2006 в 14:04)
 

Да не регулярка работает правильно в ней менять ничего не надо ! она все правильно вырезает цифру из скобок с именем файл ... вопрос в том что почему она не переходи в селект из базы?

   
 
 автор: dert   (22.11.2006 в 14:50)   письмо автору
 
   для: sidPR   (22.11.2006 в 14:23)
 

А операторы вывода print() или echo() то где?

   
 
 автор: ita   (22.11.2006 в 14:52)
 
   для: sidPR   (22.11.2006 в 14:23)
 

после
$select_file = "SELECT * FROM `files` WHERE `id` = '$file_id'";
поставь die($select_file);
возьми результат и попробуй делать запрос к базе из phpmyadmin например, дальше думай.

   
 
 автор: sidPR   (22.11.2006 в 23:07)   письмо автору
 
   для: ita   (22.11.2006 в 14:52)
 


$file_id = preg_replace("/\[file=([0-9]*)\]/i","\\1", $txt); 
    $g = print($file_id);
    $select_file = "SELECT *  FROM `files` WHERE `id` = '$g'";
    $results = MYSQL_QUERY($select_file); 
    $fl = mysql_fetch_array($results);
    $link = "../".$fl['url'].$fl['name'];
    $f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$fl['size'];
    $txt = preg_replace("/\[file=([0-9]*)\]/i","$f", $txt);

вот как я написал но работает всеравно криво =\ выводит только файл с одним id хотя указанно 2 в документе тоесть [file=1] [file=2] может както с циклом нужно сделать пожскажите пожалуйста немоу решить задачу :( перепробывал все что смог

   
 
 автор: sidPR   (23.11.2006 в 15:40)   письмо автору
 
   для: sidPR   (22.11.2006 в 23:07)
 

Помагите!

   
 
 автор: sidPR   (25.11.2006 в 00:56)   письмо автору
 
   для: sidPR   (23.11.2006 в 15:40)
 

Ладно попробую объяснить еще раз я вставляю в форму [file=234] где потом посредством регулярных выражений при обработки выдерается это цифра 234 которая в свою очередь является уникальным id поля из Mysql так вот я хочю сделать так чтобы я вставляя в форму [file=234] после обработки на томже месте вместо этого получил заранее оформленный вывод из базы . причем человек может указать как 1 файл в форме [file=234] так и не сколько файлов к примеру
[file=234]
[file=235]
[file=236]
и для каждого на томже месте вывелобы вывод по их id ... вот чего я добиваюсь но чего не получается :(

   
 
 автор: sidPR   (25.11.2006 в 21:30)   письмо автору
 
   для: sidPR   (25.11.2006 в 00:56)
 

HELP ME!!

   
 
 автор: Trianon   (25.11.2006 в 21:52)   письмо автору
 
   для: sidPR   (25.11.2006 в 00:56)
 

что такое "вывод по их id"?

   
 
 автор: sidPR   (25.11.2006 в 22:07)   письмо автору
 
   для: Trianon   (25.11.2006 в 21:52)
 

Ну как это что есть ID поля в базе в котором прописаны линк на файл имя файла там дата создания и тп !

   
 
 автор: Trianon   (25.11.2006 в 22:09)   письмо автору
 
   для: sidPR   (25.11.2006 в 22:07)
 

пример того, что вы хотите получить, здесь кто-нибудь увидит?

   
 
 автор: sidPR   (26.11.2006 в 01:06)   письмо автору
 
   для: Trianon   (25.11.2006 в 22:09)
 

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

   
 
 автор: sidPR   (26.11.2006 в 17:56)   письмо автору
 
   для: sidPR   (26.11.2006 в 01:06)
 

НЕ поверю что никто не реализовывал такую фишку в своих движках

   
 
 автор: sidPR   (28.11.2006 в 14:35)   письмо автору
 
   для: sidPR   (26.11.2006 в 17:56)
 

Вопрос все еще в силе !!! :(

   
 
 автор: sidpr   (05.12.2006 в 00:13)   письмо автору
 
   для: sidPR   (28.11.2006 в 14:35)
 


// $file_id - регулярное выражение вытаскивает из текста пример такого содержания [file=21]
// $file_id - будет = 21
//$select_file - выборка из таблици поля с id=21;
//$f - формирует записи из выбранного поля 
//$txt - ищет в тексте [file=21] только 
// ужэ не вытаскивает id поля а вместо 
// этой всей записи вставляет сконфигурированный тект из базы а тоесть 
// содержимое переменной $f
$file_id = preg_replace("/\[file=([0-9]*)\]/i","\\1", $txt);  
    $g = print($file_id); 
    $select_file = "SELECT *  FROM `files` WHERE `id` = '$g'"; 
    $results = MYSQL_QUERY($select_file);  
    $fl = mysql_fetch_array($results); 
    $link = "../".$fl['url'].$fl['name']; 
    $f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$fl['size']; 
    $txt = preg_replace("/\[file=([0-9]*)\]/i","$f", $txt); 

Люди подскажите что я написал не правильно и почему не хочет работать если в тексте я укажу двай файла тоесть [file=21] и [file=22] а тоесть в $file_id будут 2 id а может быть и более ....

P.S. выручите плиз никак не могу догнать как реализовать это

   
 
 автор: sidPR   (05.12.2006 в 02:27)   письмо автору
 
   для: sidpr   (05.12.2006 в 00:13)
 

понял проблема в том что $file_id после обработки

$file_id = preg_replace("/\[file=([0-9]*)\]/i","\\1", $txt);  

не виден после в

$select_file = "SELECT *  FROM `files` WHERE `id` = '$file_id '";  

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

   
 
 автор: Serrrgo   (05.12.2006 в 11:00)
 
   для: sidPR   (05.12.2006 в 02:27)
 

может как-то так?

$file_id = preg_replace("/\[file=([0-9]*)\]/i","OR id='\\1'", $txt);


ну и сам запрос подправить немного

   
 
 автор: sidPR   (05.12.2006 в 17:19)   письмо автору
 
   для: Serrrgo   (05.12.2006 в 11:00)
 

безрезультатно

   
 
 автор: Serrrgio   (05.12.2006 в 17:25)
 
   для: sidPR   (05.12.2006 в 17:19)
 

результатно
что вы сделали?
какой получился у вас запрос?
вы смотрели что получилось в $file_id?
попробуте выполнить этот запрос в phpmyadmin

   
 
 автор: sidPR   (05.12.2006 в 17:35)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 17:25)
 

Запрос выполняется если я вместо переменно вставляю цифру , регулярное вражинеи все правильно вырезает и вставляет .... но причина тому то что регулярка выведет полученный результать только псоле принт или echo вот косяк :( короче в $file_id нету ничего пока нету принта... =\

   
 
 автор: sidPR   (05.12.2006 в 17:39)   письмо автору
 
   для: sidPR   (05.12.2006 в 17:35)
 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
    $file_id = preg_replace("/\[file=([0-9]*)\]/i","WHERE `id`='\\1'", $txt); 
    $select_file = "SELECT *  FROM `files` $file_id";
    //die($select_file);
    $results = MYSQL_QUERY($select_file); 
    $fl = mysql_fetch_array($results);
    $link = "../".$fl['url'].$fl['name'];
    
    $f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$fl['size']."<br>";

    $txt = preg_replace("/\[file=([0-9]*)\]/i","$f", $txt);

   
 
 автор: Serrrgio   (05.12.2006 в 17:52)
 
   для: sidPR   (05.12.2006 в 17:39)
 

давайте еще раз, регулярку как я написал выше
$file_id = preg_replace("/\[file=([0-9]*)\]/i","OR id='\\1'", $txt);
измените ваш запрос чтоб он получился валидный $select_file = "SELECT * FROM `files` $file_id";
и потом die($select_file);

и я еще говорил чтоб вы этот запрос выполнили в phpmyadmin чтоб увидеть результаты, а говорил я это не просто так, а для того, чтобы вы увидели что запрос возвращает не 1 запись а несколько, и эти несколько записей тоже нужно обработать, нужно менять механизм
$fl = mysql_fetch_array($results);, т.е. юзать цикл для выводов результатов запроса.

   
 
 автор: sidpr   (06.12.2006 в 04:47)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 17:52)
 

В тот то вся и проблема то что я не могу правильно сделать цикл -\

Показывает записи 0 - 1 (2 всего, Запрос занял 0.0008 сек)SQL-запрос:SELECT *
FROM `files`
WHERE id = '1'
OR id = '2'
LIMIT 0 , 30

   
 
 автор: Serrrgio   (06.12.2006 в 12:19)
 
   для: sidpr   (06.12.2006 в 04:47)
 


$results = mysql_query($select_file);
while ($row=mysql_fetch_array($result)) {
$link = "../".$row['url'].$row['name'];
$f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$row['size']."<br>";
$txt = preg_replace("/\[file=([0-9]*)\]/i","$f", $txt);
}

   
 
 автор: sidPR   (06.12.2006 в 22:41)   письмо автору
 
   для: Serrrgio   (06.12.2006 в 12:19)
 


$select_file = "SELECT * FROM `files` WHERE  id='1' OR id='2'";
    $results = mysql_query($select_file); 
    while ($row=mysql_fetch_array($results)) { 
    $link = "../".$row['url'].$row['name']; 
    $f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$row['size']."<br>"; 
    $txt = preg_replace("/\[file=([0-9]*)\]/i","$f", $txt); 
    } 


Выводит почемуто если я указываю 2 объекта с двумя Id то выводит почемуто только первый =\

   
 
 автор: Serrrgio   (07.12.2006 в 10:36)
 
   для: sidPR   (06.12.2006 в 22:41)
 

ну не знаю, у меня все работает

while ($row=mysql_fetch_array($results)) {  
  print_r ($row);
  print "<br>";
}

ищите баги здесь

$link = "../".$row['url'].$row['name'];  
$f = "Имя файла:<a target=_blank href='$link'>Скачать</a><br>Размер".$row['size']."<br>";  
$txt = preg_replace("/\[file=([0-9]*)\]/i","$f", $txt);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования