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

Форум MySQL

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

 

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

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

тема: php обработчик для обновления записей таблицы
 
 автор: pautina   (28.12.2011 в 15:02)   письмо автору
 
 

Здравствуйте Уважаемое сообщество.
У меня есть таблица category1 нужно из содержимого поля Field2 этой таблицы вытащить адреса ссылок
для этого использую скрипт
<?php  

  $query 
"SELECT * FROM category1";  
  
$cat mysql_query($query);  
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
  if(
mysql_num_rows($cat))  
  {  
    while(
$catagory mysql_fetch_array)  
    {  
      
// Осуществляем преобразование URL  
      
preg_match('/A href="(lessons.php?[^"]*)">/'$string,$matches); 
      
// Обновляем запрос  
      
$catagory['Field 2'] = mysql_escape_string($catagory['Field 2']);  
      
$query "UPDATE category1  
                SET `Field 2` = '
{$catagory['Field 2']}'  
                WHERE ID = 
{$catagory['ID']}";  
      if(!
mysql_query($query))  
      {  
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
      }  
    }  
  }  

?>

При выполении скрипта выходит
Warning: mysql_query() [function.mysql-query]: Access denied for user ''@'localhost' (using password: NO) in M:\home\photoshop-portal\www\link_category.php on line 4

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in M:\home\photoshop-portal\www\link_category.php on line 4
Ошибка выполнения запроса - Access denied for user ''@'localhost' (using password: NO)
SELECT * FROM category1
как её исправить

  Ответить  
 
 автор: cheops   (28.12.2011 в 15:04)   письмо автору
 
   для: pautina   (28.12.2011 в 15:02)
 

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

  Ответить  
 
 автор: pautina   (28.12.2011 в 15:17)   письмо автору
 
   для: cheops   (28.12.2011 в 15:04)
 

<?php  
    $conn 
mysql_connect ("localhost""root""")
            or die (
"Соединение не установлено!");
  
mysql_select_db("bd_photoshop-portal"$conn);
  
$query "SELECT * FROM category1";  
  
$cat mysql_query($query);  
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
  if(
mysql_num_rows($cat))  
  {  
    while(
$catagory mysql_fetch_array)  
    {  
      
// Осуществляем преобразование URL  
      
preg_match('/A href="(lessons.php?[^"]*)">/'$string,$matches); 
      
// Обновляем запрос  
      
$catagory['Field 2'] = mysql_escape_string($catagory['Field 2']);  
      
$query "UPDATE category1  
                SET `Field 2` = '
{$catagory['Field 2']}'  
                WHERE ID = 
{$catagory['ID']}";  
      if(!
mysql_query($query))  
      {  
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
      }  
    }  
  }  

?>

выходит сообщение
Unknown column 'm' in 'where clause'
UPDATE category1 SET `Field 2` = 'm' WHERE ID = m

  Ответить  
 
 автор: cheops   (28.12.2011 в 19:21)   письмо автору
 
   для: pautina   (28.12.2011 в 15:17)
 

>WHERE ID = m
Ммм... это нормально? У вас в ID хранятся символы? Если да, тогда их нужно заключать в двойные кавычки, если нет, то нужно разобраться, как туда попал этот символ вместо первичного ключа.

  Ответить  
 
 автор: deimand   (28.12.2011 в 20:26)   письмо автору
 
   для: pautina   (28.12.2011 в 15:17)
 

Обычно вместо
while($catagory = mysql_fetch_array)

пишут
while($catagory = mysql_fetch_assoc(cat))

или
while($catagory = mysql_fetch_array(cat))

но ни как не без ($cat).

  Ответить  
 
 автор: pautina   (29.12.2011 в 06:04)   письмо автору
 
   для: deimand   (28.12.2011 в 20:26)
 

Если писать
while($catagory = mysql_fetch_assoc(cat))
или
while($catagory = mysql_fetch_array(cat))

то выходит ошибка
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in M:\home\photoshop-portal\www\link_category.php on line 10

по
>WHERE ID = m
Ммм... это нормально? У вас в ID хранятся символы? Если да, тогда их нужно заключать в двойные кавычки, если нет, то нужно разобраться, как туда попал этот символ вместо первичного ключа.
для ID
...
 CREATE TABLE IF NOT EXISTS category1 ( 
    `ID` VARCHAR(255), 
    `Field 1` VARCHAR(255), 
    `Image URL 1` VARCHAR(255), 
    `Field 2` VARCHAR(255), 
    `Автор/Переводчик` VARCHAR(255), 
    `Сложность` VARCHAR(255), 
    `Field 3` VARCHAR(255)) TYPE=MyISAM;
INSERT IGNORE INTO category1 (`ID`,`Field 1`,`Image URL 1`,`Field 2`,`Автор/Переводчик`,`Сложность`,`Field 3`) VALUES   
('1','Уроки Photoshop','images\\mini_19.jpg','<A href=\"lessons.php?rub=1&amp;id=1689\">Создаём абстрактное золотое кольцо в Фотошоп</A>','','','В этом уроке вы узнаете, как при помощи кистей дыма сделать абсткатное кольцо со световыми эффектами.'), 
('2','Уроки Photoshop','images\\mini_20.jpg','<A href=\"lessons.php?rub=1&amp;id=1677\">Создай экспрессивную космическую иллюстрацию в Фотошоп</A>','','','В этом уроке вы узнаете, создать интересную иллюстрацию, используя различные техники, световые эффекты, цветокоррекцию.'), 
('3','Уроки Photoshop','images\\mini_1.gif','<A href=\"lessons.php?rub=1&amp;id=1661\">Создай светящегося супергероя в Фотошоп</A>','','','В этом уроке вы узнаете, как обычную иллюстрацию превратить в ретро-футуристическую художественную работу, а так же как сделать световой эффект быстрого движения.'),
...

  Ответить  
 
 автор: SerG7   (29.12.2011 в 09:39)   письмо автору
 
   для: pautina   (29.12.2011 в 06:04)
 

while($catagory = mysql_fetch_assoc($cat))
А автоинкрементного поля нет?

  Ответить  
 
 автор: pautina   (29.12.2011 в 10:24)   письмо автору
 
   для: SerG7   (29.12.2011 в 09:39)
 

Нет таблица создается указанным текстовы файлом.
<?php  
    $conn 
mysql_connect ("localhost""root""")
            or die (
"Соединение не установлено!");
  
mysql_select_db("bd_photoshop-portal"$conn);
  
$query "SELECT * FROM category1";  
  
$cat mysql_query($query);  
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
  if(
mysql_num_rows($cat))  
  {  
    while(
$catagory mysql_fetch_assoc($cat))
    {  
      
// Осуществляем преобразование URL  
      
preg_match('/lessons.php?rub=1&amp;id=[0-9]/''/<A href="lessons.php?rub=1&amp;id=[0-9]">[а-яА-Я]</A>/'$matches); 
      
// Обновляем запрос  
      
$catagory['Field 2'] = mysql_escape_string($catagory['Field 2']);  
      
$query "UPDATE category1  
                SET `Field 2` = '
{$catagory['Field 2']}'  
                WHERE ID = 
{$catagory['ID']}";  
      if(!
mysql_query($query))  
      {  
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
      }  
    }  
  }  
?>

Скрипт выполнился без ошибок, но обновления в поле field 2 нет.
Правильно ли описано преобразование url
preg_match('/lessons.php?rub=1&amp;id=[0-9]/', '/<A href="lessons.php?rub=1&amp;id=[0-9]">[а-яА-Я]</A>/', $matches);

Нужно получить из
<A href="lessons.php?rub=1&amp;id=1689">Создаём абстрактное золотое кольцо в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1677">Создай экспрессивную космическую иллюстрацию в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1661">Создай светящегося супергероя в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1641">Создаём абстрактный постер в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1608">Девушка в брызгах воды</A>
<A href="lessons.php?rub=1&amp;id=1607">Создай абстракцию из фото в Фотошоп</A>
....

только адреса ссылок
lessons.php?rub=1&amp;id=1689
lessons.php?rub=1&amp;id=1677
lessons.php?rub=1&amp;id=1661
lessons.php?rub=1&amp;id=1641
lessons.php?rub=1&amp;id=1608
lessons.php?rub=1&amp;id=1607

  Ответить  
 
 автор: deimand   (29.12.2011 в 11:17)   письмо автору
 
   для: pautina   (29.12.2011 в 06:04)
 

Запустите такой скрипт и напишите результат его работы. Будем искать проблему пошагово.

<?php  
 $conn 
mysql_connect ("localhost""root""") or die ("Соединение не установлено!");
 
mysql_select_db("bd_photoshop-portal"$conn);
 
$query "SELECT * FROM category1";  
 
$cat mysql_query($query);  
 if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
 echo 
'<pre>';
 
print_r($cat); 
?>

  Ответить  
 
 автор: pautina   (29.12.2011 в 12:09)   письмо автору
 
   для: deimand   (29.12.2011 в 11:17)
 

Пишет
Resource id #4

  Ответить  
 
 автор: deimand   (29.12.2011 в 12:18)   письмо автору
 
   для: pautina   (29.12.2011 в 12:09)
 

Ну да, я прогнал.
Что этот скрипт показывает?
<?php
 error_reporting
(2047);  
 
$conn mysql_connect ("localhost""root""") or die ("Соединение не установлено!");
 
mysql_select_db("bd_photoshop-portal"$conn);
 
$query "SELECT * FROM category1";  
 
$cat mysql_query($query);  
 if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
 
 if(
mysql_num_rows($cat) > 0)  
 {  
    echo 
'<pre>';
    while(
$catagory mysql_fetch_assoc($cat))
   {
      
print_r($catagory); 
   }
 }
 else
 {
   echo 
'Нет записей';
 }
?> 

  Ответить  
 
 автор: pautina   (29.12.2011 в 12:26)   письмо автору
 
   для: deimand   (29.12.2011 в 12:18)
 

Array
(
    [ID] => 1
    [Field 1] => Уроки Photoshop
    [Image URL 1] => images\mini_19.jpg
    [Field 2] => замена
    [Автор/Переводчик] => 
    [Сложность] => 
    [Field 3] => В этом уроке вы узнаете, как при помощи кистей дыма сделать абсткатное кольцо со световыми эффектами.
)
Array
(
    [ID] => 2
    [Field 1] => Уроки Photoshop
    [Image URL 1] => images\mini_20.jpg
    [Field 2] => Создай экспрессивную космическую иллюстрацию в Фотошоп
    [Автор/Переводчик] => 
    [Сложность] => 
    [Field 3] => В этом уроке вы узнаете, создать интересную иллюстрацию, используя различные техники, световые эффекты, цветокоррекцию.
)
Array
(
    [ID] => 3
    [Field 1] => Уроки Photoshop
    [Image URL 1] => images\mini_1.gif
    [Field 2] => Создай светящегося супергероя в Фотошоп
    [Автор/Переводчик] => 
    [Сложность] => 
    [Field 3] => В этом уроке вы узнаете, как обычную иллюстрацию превратить в ретро-футуристическую художественную работу, а так же как сделать световой эффект быстрого движения.
и т.д. до id=20 
)

  Ответить  
 
 автор: deimand   (29.12.2011 в 12:53)   письмо автору
 
   для: pautina   (29.12.2011 в 12:26)
 

Ну все хорошо. Что теперь со ссылками нужно сделать? В таблице нет ссылок с текстом lesson.

  Ответить  
 
 автор: pautina   (29.12.2011 в 13:12)   письмо автору
 
   для: deimand   (29.12.2011 в 12:53)
 

Array
(
    [ID] => 1
    [Field 1] => Уроки Photoshop
    [Image URL 1] => images\mini_19.jpg
    [Field 2] => [url]замена[/url]
    [Автор/Переводчик] => 
    [Сложность] => 
    [Field 3] => В этом уроке вы узнаете, как при помощи кистей дыма сделать абсткатное кольцо со световыми эффектами.
)
Array
(
    [ID] => 2
    [Field 1] => Уроки Photoshop
    [Image URL 1] => images\mini_20.jpg
    [Field 2] => [url]Создай экспрессивную космическую иллюстрацию в Фотошоп[/url]
    [Автор/Переводчик] => 
    [Сложность] => 
    [Field 3] => В этом уроке вы узнаете, создать интересную иллюстрацию, используя различные техники, световые эффекты, цветокоррекцию.
)
Array
(
    [ID] => 3
    [Field 1] => Уроки Photoshop
    [Image URL 1] => images\mini_1.gif
    [Field 2] => [url]Создай светящегося супергероя в Фотошоп[/url]
    [Автор/Переводчик] => 
    [Сложность] => 
    [Field 3] => В этом уроке вы узнаете, как обычную иллюстрацию превратить в ретро-футуристическую художественную работу, а так же как сделать световой эффект быстрого движения.
)

Поле Field2 это ссылка,
Я не говорю про ссылку с текстом lesson? я говорю про адрес ссылки.
А адрес этих ссылок такой
<A href="lessons.php?rub=1&amp;id=1689">Создаём абстрактное золотое кольцо в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1677">Создай экспрессивную космическую иллюстрацию в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1661">Создай светящегося супергероя в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1641">Создаём абстрактный постер в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1608">Девушка в брызгах воды</A>
<A href="lessons.php?rub=1&amp;id=1607">Создай абстракцию из фото в Фотошоп</A>

из них нужно получить только адреса ссылок
lessons.php?rub=1&amp;id=1689
lessons.php?rub=1&amp;id=1677
lessons.php?rub=1&amp;id=1661
lessons.php?rub=1&amp;id=1641
lessons.php?rub=1&amp;id=1608
lessons.php?rub=1&amp;id=1607

  Ответить  
 
 автор: deimand   (29.12.2011 в 13:35)   письмо автору
 
   для: pautina   (29.12.2011 в 13:12)
 

Чтобы получить в переменные содержимое атрибута href, можно воспользоваться следующим регулярным выражением
#href="(.*)"#siU


Пример работы
<?php
 $str 
'<A href="lessons.php?rub=1&amp;id=1689">Создаём абстрактное золотое кольцо в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1677">Создай экспрессивную космическую иллюстрацию в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1661">Создай светящегося супергероя в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1641">Создаём абстрактный постер в Фотошоп</A>
<A href="lessons.php?rub=1&amp;id=1608">Девушка в брызгах воды</A>
<A href="lessons.php?rub=1&amp;id=1607">Создай абстракцию из фото в Фотошоп</A>'
;
 
preg_match_all('#href="(.*)"#siU'$str$matches);
echo 
'<pre>';
 
print_r($matches[1]);

  Ответить  
 
 автор: pautina   (29.12.2011 в 14:17)   письмо автору
 
   для: deimand   (29.12.2011 в 13:35)
 

Вот как только применить ваше регулярное выражение к этому участку кода?
<?php  
    $conn 
mysql_connect ("localhost""root""")
            or die (
"Соединение не установлено!");
  
mysql_select_db("bd_photoshop-portal"$conn);
  
$query "SELECT * FROM category1";  
  
$cat mysql_query($query);  
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
  if(
mysql_num_rows($cat))  
  {  
    while(
$catagory mysql_fetch_assoc($cat))
    {  
      
// Осуществляем преобразование URL  
      // preg_match('/lessons.php?rub=1&amp;id=2/', '<A href="lessons.php?rub=1&amp;id=1677">Создай экспрессивную космическую иллюстрацию в Фотошоп</A>', $matches); 
      
preg_match_all('#href="(.*)"#siU'$str$matches); 
      
      
// Обновляем запрос  
      
$catagory['Field 2'] = mysql_escape_string($catagory['Field 2']);  
      
$query "UPDATE category1  
                SET `Field 2` = '
{$catagory['Field 2']}'  
                WHERE ID = 
{$catagory['ID']}";  
      if(!
mysql_query($query))  
      {  
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
      }  
    }  
  }  
?>
 

Чтоб на выходе только ссылки получить, в обновлённом поле таблицы.

  Ответить  
 
 автор: deimand   (29.12.2011 в 14:49)   письмо автору
 
   для: pautina   (29.12.2011 в 14:17)
 

<?php  
    $conn 
mysql_connect ("localhost""root""")
            or die (
"Соединение не установлено!");
  
mysql_select_db("bd_photoshop-portal"$conn);
  
$query "SELECT * FROM category1";  
  
$cat mysql_query($query);  
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
  if(
mysql_num_rows($cat))  
  {  
    while(
$catagory mysql_fetch_assoc($cat))
    {  
      
// Осуществляем преобразование URL  

      // искать URL нужно в поле, которое его хранит, а не в переменной от балды
      
preg_match('#href="(.*)"#siU'$catagory['Field 2'], $matches); 
      
// найденное совпадение сохраняется в $matches, для этого оно в функцию и передается
      // и брать его потом для запроса нужно именно оттуда
      
$newField_2 mysql_escape_string($matches[1]);  
      
      
// пробуйте
      
$query "UPDATE category1  
                SET `Field 2` = '
{$newField_2}'  
                WHERE ID = 
{$catagory['ID']}";  
      if(!
mysql_query($query))  
      {  
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);  
      }
      echo 
'Фух, неужели';  
    }  
  }  
?>

  Ответить  
 
 автор: pautina   (29.12.2011 в 14:54)   письмо автору
 
   для: deimand   (29.12.2011 в 14:49)
 

Отлично огромное Вам спасибо, довели все таки этот вопрос.

  Ответить  
 
 автор: pautina   (29.12.2011 в 14:58)   письмо автору
 
   для: pautina   (29.12.2011 в 14:54)
 

Хотя нет не скажете какой код мне использовать чтоб к этим адресам добавить текст
http://www.photoshop-master.ru/

  Ответить  
 
 автор: deimand   (29.12.2011 в 15:20)   письмо автору
 
   для: pautina   (29.12.2011 в 14:58)
 

Нужно эту строку
$catagory['Field 2'] = mysql_escape_string($catagory['Field 2']);

заменить на
$catagory['Field 2'] = mysql_escape_string('http://www.photoshop-master.ru/' . $catagory['Field 2']);


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

  Ответить  
 
 автор: pautina   (29.12.2011 в 15:24)   письмо автору
 
   для: deimand   (29.12.2011 в 15:20)
 

хорошо давайте сделаем при помощи константы, как не подскажете?

  Ответить  
 
 автор: deimand   (29.12.2011 в 15:35)   письмо автору
 
   для: pautina   (29.12.2011 в 15:24)
 

В конфигурационном файле содайте константу так
<?php define('URL_PATH''http://www.photoshop-master.ru/');


А при формировании ссылок сайта выводите ее первой, а за ней уже изменяющийся адрес

<?php  
 $name 
'Ссылка';
 
$url 'lessons.php?rub=1&id=1689';
 
 echo 
'<a href="' URL_PATH $url '">' $name '</a>';  
 
// или 
 
?><a href="<?php echo URL_PATH $url?>"><?php echo $name?></a><?php

?>

  Ответить  
 
 автор: pautina   (29.12.2011 в 18:50)   письмо автору
 
   для: deimand   (29.12.2011 в 15:35)
 

При помощи константы что то не всё понятно, пробовал сделать простой заменой строки как вы писали, там что то тоже не всё ясно, какую строку заменять?
<?php   
    $conn 
mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"$conn); 
  
$query "SELECT * FROM category1";   
  
$cat mysql_query($query);   
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
  if(
mysql_num_rows($cat))   
  {   
    while(
$catagory mysql_fetch_assoc($cat)) 
    {   
      
// Осуществляем преобразование URL   

      // искать URL нужно в поле, которое его хранит, а не в переменной от балды 
      
$catagory['Field 2'] = mysql_escape_string('http://www.photoshop-master.ru/' $catagory['Field 2']); 
      
preg_match('#href="(.*)"#siU'$catagory['Field 2'], $matches); 
      
      
// найденное совпадение сохраняется в $matches, для этого оно в функцию и передается 
      // и брать его потом для запроса нужно именно оттуда 
      
$newField_2 mysql_escape_string($matches[1]);   
      
       
      
// пробуйте 
      
$query "UPDATE category1   
                SET `Field 2` = '
{$newField_2}'   
                WHERE ID = 
{$catagory['ID']}";   
      if(!
mysql_query($query))   
      {   
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
      } 
      echo 
'Фух, неужели';   
    }   
  }   
?>

  Ответить  
 
 автор: deimand   (29.12.2011 в 21:48)   письмо автору
 
   для: pautina   (29.12.2011 в 18:50)
 

Где Вы видите в своем участке кода оператор echo, который выводит ссылку? Правильно, нигде. Потому что ее там нет. Потому что адрес сайта, который сохранен в константе, использовать нужно не здесь, а когда Вы будете выводить свои уроки и другие страницы сайта. В базе будут лежать относительные пути, а при выводе на страницу будете добавлять адрес сайта.

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

  Ответить  
 
 автор: pautina   (30.12.2011 в 06:23)   письмо автору
 
   для: deimand   (29.12.2011 в 21:48)
 

Что если мы будем делать всё в 2 этапа.
1) При помощи участка кода оставляем все адреса ссылок
2) На основе этого же участка кода, пишем другой php обработчик который добавит к ссылке http://www.photoshop-master.ru/
Для 1 пункта будем использовать код
<?php   
  $conn 
mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"$conn); 
  
$query "SELECT * FROM category1";   
  
$cat mysql_query($query);   
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
  if(
mysql_num_rows($cat))   
  {   
    while(
$catagory mysql_fetch_assoc($cat)) 
    {   
      
// Осуществляем преобразование URL   

      // искать URL нужно в поле, которое его хранит, а не в переменной от балды 
      
preg_match('#href="(.*)"#siU'$catagory['Field 2'], $matches);  
      
// найденное совпадение сохраняется в $matches, для этого оно в функцию и передается 
      // и брать его потом для запроса нужно именно оттуда 
      
$newField_2 mysql_escape_string($matches[1]);   
       
      
// пробуйте 
      
$query "UPDATE category1   
                SET `Field 2` = '
{$newField_2}'   
                WHERE ID = 
{$catagory['ID']}";   
      if(!
mysql_query($query))   
      {   
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
      } 
      echo 
'Фух, неужели';   
    }   
  }   
?>

В результате в поле Field 2 будут содержатся
lessons.php?rub=1&amp;id=1689
lessons.php?rub=1&amp;id=1677
lessons.php?rub=1&amp;id=1661
...
lessons.php?rub=1&amp;id=1424

Какой php обработчик написать (за основу можно использовать 1 участок кода) чтоб прикрепить к ссылке http://www.photoshop-master.ru/ в итоге должно получится
http://www.photoshop-master.ru/lessons.php?rub=1&amp;id=1689
http://www.photoshop-master.ru/lessons.php?rub=1&amp;id=1677
...
http://www.photoshop-master.ru/lessons.php?rub=1&amp;id=1424

И записать этот результат в новое поле Field5 таблицы category1 БД photoshop-portal
Какая команда в Mysql делает объёдинение строк?

  Ответить  
 
 автор: pautina   (30.12.2011 в 11:02)   письмо автору
 
   для: pautina   (30.12.2011 в 06:23)
 

Извините Вы не посмотрите этот участок кода
<?php   
  $conn 
mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"$conn); 
  
$query "SELECT * FROM category1";   
  
$cat mysql_query($query);   
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
  if(
mysql_num_rows($cat))   
  {   
    while(
$catagory mysql_fetch_assoc($cat)) 
    {   
      
// Регулярное выражение делающее объединение строк www.photoshop-master.ru/ и содержимое поля Field 2


         
      // здесь команда добавления записи в новый столбец field 5
      
$query "INSERT INTO category1   
                VALUE = ??"

                
      
// $query = "UPDATE category1   
      //          SET `Field 2` = '{$newField_2}'   
      //           WHERE ID = {$catagory['ID']}";   
      
if(!mysql_query($query))   
      {   
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
      } 
      echo 
'Фух, неужели';   
    }   
  }   
?>

  Ответить  
 
 автор: deimand   (30.12.2011 в 13:18)   письмо автору
 
   для: pautina   (30.12.2011 в 11:02)
 

Вы одно и то же по несколько раз спрашиваете. В этой теме есть все ответы на Ваши вопросы. Нет разницы какое поле обновлять, field 2 или field 5 в плане кода. Отличается только mysql запрос, после слова SET. Вы не можете изменить самостоятельно 2 на 5? Что касается добавить к ссылке адрес домена, то я показал как это делать и с каком месте скрипта в этом сообщении.

  Ответить  
 
 автор: pautina   (30.12.2011 в 13:32)   письмо автору
 
   для: deimand   (30.12.2011 в 13:18)
 

Извиняюсь конечно, Смтрите у нас есть вот этот код
<?php   
  $conn 
mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"$conn); 
  
  
$query "SELECT * FROM category1";   
  
$cat mysql_query($query);   
  if(!
$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
  if(
mysql_num_rows($cat))   
  {   
    while(
$catagory mysql_fetch_assoc($cat)) 
    {   
      
// Осуществляем преобразование URL   

      // искать URL нужно в поле, которое его хранит, а не в переменной от балды 
      
preg_match('#href="(.*)"#siU'$catagory['Field 2'], $matches);  
      
// найденное совпадение сохраняется в $matches, для этого оно в функцию и передается 
      // и брать его потом для запроса нужно именно оттуда 
      
$newField_2 mysql_escape_string($matches[1]);   
       
      
// пробуйте 
      
$query "UPDATE category1   
                SET `Field 2` = '
{$newField_2}'   
                WHERE ID = 
{$catagory['ID']}";   
      if(!
mysql_query($query))   
      {   
        exit(
"Ошибка выполнения запроса - ".mysql_error()."<br />".$query);   
      } 
      echo 
'Запрос выполнен успешно';   
    }   
  }   
?>

Вы пишите
Нужно эту строку
$catagory['Field 2'] = mysql_escape_string($catagory['Field 2']); 

заменить на
$catagory['Field 2'] = mysql_escape_string('http://www.photoshop-master.ru/' . $catagory['Field 2']);

Я не нашёл строку для замены

  Ответить  
 
 автор: deimand   (30.12.2011 в 13:43)   письмо автору
 
   для: pautina   (30.12.2011 в 13:32)
 

Замените
$newField_2 = mysql_escape_string($matches[1]);

на
$newField_2 = mysql_escape_string('http://www.photoshop-master.ru/' . $matches[1]);


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

  Ответить  
 
 автор: pautina   (30.12.2011 в 14:14)   письмо автору
 
   для: deimand   (30.12.2011 в 13:43)
 

Да всё в точности так как должно быть, правда я не учёл вот какой момент
В каждых ссылках нужно ещё удялять amp;
Он присутствует в конце и из-за него ссылка не активна,
http://www.photoshop-master.ru/lessons.php?rub=1&amp;id=1689
Как удалить эти 4 символа со всех строк?

  Ответить  
 
 автор: deimand   (30.12.2011 в 14:34)   письмо автору
 
   для: pautina   (30.12.2011 в 14:14)
 

Вообще нужно разбираться как он там оказался...

Ну да ладно

<?php 
// есть некая строка, которая хранится в переменной $test 
// строка содержит следующий текст.

$test 'Да всё в точности так как должно быть, правда я не учёл вот какой момент
В каждых ссылках нужно ещё удялять amp;
Он присутствует в конце и из-за него ссылка не активна,
http://www.photoshop-master.ru/lessons.php?rub=1&amp;id=1689
Как удалить эти 4 символа со всех строк?'
;

// Чтобы заменить &amp; на & можно воспользоваться функцией замены в строках str_replace()
// Синтаксис функции

//str_replace(Что заменяем, На что заменяем, Где заменяем);

// Для решения задачи можно поставить условие так:
$test str_replace('&amp;''&'$test);

echo 
$test;
// вместо $test необходимо подставить то имя переменной, в которой требуется сделать замену

  Ответить  
 
 автор: pautina   (30.12.2011 в 14:58)   письмо автору
 
   для: deimand   (30.12.2011 в 14:34)
 

Всё работает спасибо Вам огромное.

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

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