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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: php обработчик для обновления записей таблицы

Сообщения:  [1-10]    [11-20]   [21-30]  [31-32] 

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

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

  Ответить  
 
 автор: 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: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 в 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 в 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:18)   письмо автору
 
   для: pautina   (30.12.2011 в 11:02)
 

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

  Ответить  
 
 автор: 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 
'Фух, неужели';   
    }   
  }   
?>

  Ответить  
 
 автор: 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 делает объёдинение строк?

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

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

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

  Ответить  
 
 автор: 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 
'Фух, неужели';   
    }   
  }   
?>

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-32] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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