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

Форум MySQL

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

 

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

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

тема: Вывод адресов изображений в ячейке таблицы
 
 автор: pautina   (09.01.2012 в 14:33)   письмо автору
 
 

Здравствуйте Уважаемое сообщество.
Спасибо вам за поддержку, дело было оказывается в маске $matches[1] и замене в ней.
У меня есть таблица pm_material_content_into3.sql в ней 3 строки, в поле Field 3 содержится html код, из этого кода я вырезаю все рисунки.
для этого использую скрипт

<?php     
  header
("Content-Type: text/html; charset=UTF-8");    
  
$conn mysql_connect ("localhost""root""")   
            or die (
"Соединение не установлено!");   
  
mysql_select_db("bd_photoshop-portal"$conn);   
    
  
$query "SELECT * FROM material_content_into3";     
  
$cat mysql_query($query);     
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);     
  if(
mysql_num_rows($cat))     
  {     
    while(
$catagory mysql_fetch_assoc($cat))   
    {       
     
preg_match_all('#src="([^"]+)"#i'$catagory['Field 3'], $matches); // показывает ссылку для изображения     
     
$matches[1] = str_replace('/lessons''http://www.photoshop-master.ru/lessons'$matches[1]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/ 
     
$matches[1] = str_replace('tools''http://www.photoshop-master.ru/tools'$matches[1]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/ 
      
     
foreach($matches[1] as $link){    
         
$newField_3 $link;               
         echo 
$link."<br />";         
     }
     
     
// $newField_3 = $link;
         
      // Запрос для обновления   
      
$query "UPDATE material_content_into3     
                SET `Field 3` = '
{$newField_3}'     
                WHERE ID = 
{$catagory['ID']}";                               
      if(!
mysql_query($query))     
      {     
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);     
      }   
      echo 
'Запрос выполнен успешно';     
    }     
  }     
?> 

Но здесь в ячейке таблицы вижу только 1 рисунок, хотя в браузере при выполнении скрипта видно все рисунки.
Как подкорректировать код чтоб все рисунки можно было увидеть в ячейке таблицы?

  Ответить  
 
 автор: pautina   (11.01.2012 в 06:24)   письмо автору
 
   для: pautina   (09.01.2012 в 14:33)
 

Ни посмотрите предидущее сообщение, почему в ячейке таблицы я вижу array, как сделать чтобы в содержимом ячейки были рисунки.

  Ответить  
 
 автор: Lotanaen   (11.01.2012 в 09:46)   письмо автору
 
   для: pautina   (11.01.2012 в 06:24)
 

"рисунки" - это ссылки на изображения или сами изображения?

  Ответить  
 
 автор: pautina   (11.01.2012 в 10:18)   письмо автору
 
   для: Lotanaen   (11.01.2012 в 09:46)
 

Это ссылки на изображение?
У меня скрипт вырезает из участка html кода ссылки на изображения, адреса ссылок видно в браузере, но не видно в ячейке таблицы.
Нужно в ячейке таблицы увидеть ссылки на рисунки, Сейчас я в ячейке таблицы вижу надпись Array

<?php      
  header
("Content-Type: text/html; charset=UTF-8");     
  
$conn mysql_connect ("localhost""root""")    
            or die (
"Соединение не установлено!");    
  
mysql_select_db("bd_photoshop-portal"$conn);    
     
  
$query "SELECT * FROM material_content_into3";      
  
$cat mysql_query($query);      
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);      
  if(
mysql_num_rows($cat))      
  {      
    while(
$catagory mysql_fetch_assoc($cat))    
    {        
     
preg_match_all('#src="([^"]+)"#i'$catagory['Field 3'], $matches); // показывает ссылку для изображения      
     
$matches[1] = str_replace('/lessons''http://www.photoshop-master.ru/lessons'$matches[1]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/  
     
$matches[1] = str_replace('tools''http://www.photoshop-master.ru/tools'$matches[1]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/  
       
     
foreach($matches[1] as $link){     
         
$newField_3 $link;                
         echo 
$link."<br />";          
     } 
      
     
// $newField_3 = $link; 
          
      // Запрос для обновления    
      
$query "UPDATE material_content_into3      
                SET `Field 3` = '
{$newField_3}'      
                WHERE ID = 
{$catagory['ID']}";                                
      if(!
mysql_query($query))      
      {      
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);      
      }    
      echo 
'Запрос выполнен успешно';      
    }      
  }      
?> 

В браузере видно следующее

http://www.photoshop-master.ru/lessons/les1689/01.jpg
http://www.photoshop-master.ru/tools/Elliptical Marquee.jpg
http://www.photoshop-master.ru/lessons/les1689/02.jpg
http://www.photoshop-master.ru/lessons/les1689/03.jpg
http://www.photoshop-master.ru/lessons/les1689/04.jpg
http://www.photoshop-master.ru/lessons/les1689/05.jpg
http://www.photoshop-master.ru/lessons/les1689/06.jpg
http://www.photoshop-master.ru/lessons/les1689/07.jpg
http://www.photoshop-master.ru/lessons/les1689/08.jpg
...

  Ответить  
 
 автор: Lotanaen   (11.01.2012 в 11:27)   письмо автору
 
   для: pautina   (11.01.2012 в 10:18)
 

А что у Вас до этого скрипта в поле Field_3 хранится? можно пример одной записи?

  Ответить  
 
 автор: pautina   (11.01.2012 в 13:06)   письмо автору
88.3 Кб
 
   для: Lotanaen   (11.01.2012 в 11:27)
 

Прикрепил файл sql который формирует таблицу. Посмотрите.

  Ответить  
 
 автор: Lotanaen   (11.01.2012 в 13:20)   письмо автору
 
   для: pautina   (11.01.2012 в 13:06)
 

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

  Ответить  
 
 автор: pautina   (11.01.2012 в 13:33)   письмо автору
 
   для: Lotanaen   (11.01.2012 в 13:20)
 

Можно ли сохранить все ссылки в этом поле.
Если нет давайте отдельную таблицу делать.

  Ответить  
 
 автор: Lotanaen   (11.01.2012 в 13:44)   письмо автору
 
   для: pautina   (11.01.2012 в 13:33)
 

можно и в этом поле, но лучше в новом поле - например записывая ссылки через разделитель ";" либо какой другой. А что Вы потом с этими ссылками будете делать? Какие выборки(запросы) по этому полю планируется делать?

  Ответить  
 
 автор: pautina   (11.01.2012 в 14:05)   письмо автору
 
   для: Lotanaen   (11.01.2012 в 13:44)
 

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

  Ответить  
 
 автор: Lotanaen   (11.01.2012 в 15:50)   письмо автору
 
   для: pautina   (11.01.2012 в 14:05)
 

попробуйте таким образом:
<?php      
  header
("Content-Type: text/html; charset=UTF-8");     
  
$conn mysql_connect ("localhost""root""")    
            or die (
"Соединение не установлено!");    
  
mysql_select_db("bd_photoshop-portal"$conn);    
     
  
$query "SELECT * FROM material_content_into3";      
  
$cat mysql_query($query);      
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);      
  if(
mysql_num_rows($cat))      
  {      
    while(
$catagory mysql_fetch_assoc($cat))    
    {        
     
preg_match_all('#src="([^"]+)"#i'$catagory['Field_3'], $matches); // показывает ссылку для изображения      
     
$matches[1] = str_replace('/lessons''http://www.photoshop-master.ru/lessons'$matches[1]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/  
     
$matches[1] = str_replace('tools''http://www.photoshop-master.ru/tools'$matches[1]); // к адресу ссылки прибавляем http://www.photoshop-master.ru/  
     
     
$newField_3 = array();
       
     if (
sizeof($matches[1])) 
         foreach(
$matches[1] as $link){     
             
$newField_3[] = $link;                
             echo 
$link."<br />";          
         } 
      
     
// $newField_3 = $link; 
          
      // Запрос для обновления    
      
if (sizeof($newField_3)) {
          
$query "UPDATE material_content_into3      
                    SET `Field 3` = '"
.implode(";",$newField_3)."'      
                    WHERE ID = 
{$catagory['ID']}";                                
          if(!
mysql_query($query))      
          {      
            exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);      
          }    
          echo 
'Запрос выполнен успешно'
      } 
      else
          echo 
"Not data in newField_3";    
    }      
  }      
?>

  Ответить  
 
 автор: pautina   (11.01.2012 в 16:40)   письмо автору
 
   для: Lotanaen   (11.01.2012 в 15:50)
 

Выходит сообщение Not data in newField_3Not data in newField_3Not data in newField_3

  Ответить  
 
 автор: Lotanaen   (11.01.2012 в 16:54)   письмо автору
 
   для: pautina   (11.01.2012 в 16:40)
 

да, там неверно я указал поле $catagory['Field_3'] - подчеркивание уберите

  Ответить  
 
 автор: pautina   (11.01.2012 в 18:46)   письмо автору
 
   для: Lotanaen   (11.01.2012 в 16:54)
 

Скажите а как сделать переход строки
SET `Field 3` = '".implode(";",$newField_3)."' 

Чтобы каждый рисунок был на на новой строке.

  Ответить  
 
 автор: Lotanaen   (12.01.2012 в 09:30)   письмо автору
 
   для: pautina   (11.01.2012 в 18:46)
 

А для чего это Вам? Это же все равно в БД запись.
А для вывода в окно браузера можно как вариант заменить точку с запятой на тэг <br>

  Ответить  
 
 автор: pautina   (12.01.2012 в 10:21)   письмо автору
 
   для: Lotanaen   (12.01.2012 в 09:30)
 

Теперь мне нужно будет копировать адреса рисунков из ячейки таблицы в папку по определённому пути.
Для пути нужно правильно прописать переменную регулярными выражениями

для 1 ячейки  
<img height="340" src="/lessons/les1689/03.jpg" width="450" /> 
для 2-ой 
<img height="547" src="/lessons/les1677/1.jpg" width="450" /> 
для 3-ей 
<img height="623" src="/lessons/les1661/1.jpg" width="450" />

пути для них соответственно должны быть

$path_1 = images/lessons/les1689/  
$path_2 = images//lessons/les1677/ 
$path_3 = images/lessons/les1661/ 
...

Ни скажете как прописать путь?

  Ответить  
Rambler's Top100
вверх

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