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

Форум MySQL

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

 

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

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

тема: Добавление контента к содержащей контент ячейки таблицы
 
 автор: pautina   (04.02.2012 в 11:31)   письмо автору
 
 

Здравствуйте Уважаемое сообщество.
Мне нужно добавить контент к table_1 для поля Field 3 (сам контент должен добвлятся из table_2 поля Field 2)
Пусть у меня есть таблица table_1

CREATE TABLE IF NOT EXISTS table_1 (
    `ID` VARCHAR(255),
    `Field 1` VARCHAR(255),
    `Field 2` VARCHAR(255),
    `Field 3` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8;

INSERT IGNORE INTO table_1 (`ID`,`Field 1`,`Field 2`,`Field 3`) VALUES  
('1','Уроки Photoshop 1','Рубрика: Эффекты 1','Содержимое контента 1'),
('2','Уроки Photoshop 2','Рубрика: Эффекты 2','Содержимое контента 2'),
('3','Уроки Photoshop 3','Рубрика: Эффекты 3','Содержимое контента 3'),
('4','Уроки Photoshop 4','Рубрика: Эффекты 4','Содержимое контента 4'),
('5','Уроки Photoshop 5','Рубрика: Эффекты 5','Содержимое контента 5')

И в поле Field 3 table_1 нужно добавить контент из таблицы table_2 поля Field 2
для table_2

CREATE TABLE IF NOT EXISTS table_2 (
    `ID` VARCHAR(255),
    `Field 1` VARCHAR(255),
    `Field 2` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8;
INSERT IGNORE INTO table_1 (`ID`,`Field 1`,`Field 2`) VALUES  
('1','Уроки Photoshop 1','Добавление контента к ячейке 1'),
('2','Уроки Photoshop 2','Добавление контента к ячейке 2'),
('3','Уроки Photoshop 3','Добавление контента к ячейке 3'),
('4','Уроки Photoshop 4','Добавление контента к ячейке 4'),
('5','Уроки Photoshop 5','Добавление контента к ячейке 5')

В итоге содержимое поля table_1 Field 3 должно быть

Содержимое контента 1 Добавление контента к ячейке 1
Содержимое контента 2 Добавление контента к ячейке 2
Содержимое контента 3 Добавление контента к ячейке 3
Содержимое контента 4 Добавление контента к ячейке 4
Содержимое контента 5 Добавление контента к ячейке 5

Как это можно сделать не подскажете?

  Ответить  
 
 автор: pautina   (05.02.2012 в 08:30)   письмо автору
 
   для: pautina   (04.02.2012 в 11:31)
 

Неужели никто не знает ответ?

  Ответить  
 
 автор: nmahkamov   (05.02.2012 в 11:08)   письмо автору
 
   для: pautina   (05.02.2012 в 08:30)
 

Привет.
Сначала поправил ваши запросы:

CREATE TABLE IF NOT EXISTS table_1 (
    `ID` int(11),
    `Field 1` VARCHAR(255),
    `Field 2` VARCHAR(255),
    `Field 3` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8;

INSERT IGNORE INTO table_1 (`ID`,`Field_1`,`Field_2`,`Field_3`) VALUES
(1,'Уроки Photoshop 1','Рубрика: Эффекты 1','Содержимое контента 1'),
(2,'Уроки Photoshop 2','Рубрика: Эффекты 2','Содержимое контента 2'),
(3,'Уроки Photoshop 3','Рубрика: Эффекты 3','Содержимое контента 3'),
(4,'Уроки Photoshop 4','Рубрика: Эффекты 4','Содержимое контента 4'),
(5,'Уроки Photoshop 5','Рубрика: Эффекты 5','Содержимое контента 5')

CREATE TABLE IF NOT EXISTS table_2 (
    `ID` int(11),
    `Field 1` VARCHAR(255),
    `Field 2` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8;

INSERT IGNORE INTO table_2 (`ID`,`Field_1`,`Field_2`) VALUES
(1,'Уроки Photoshop 1','Добавление контента к ячейке 1'),
(2,'Уроки Photoshop 2','Добавление контента к ячейке 2'),
(3,'Уроки Photoshop 3','Добавление контента к ячейке 3'),
(4,'Уроки Photoshop 4','Добавление контента к ячейке 4'),
(5,'Уроки Photoshop 5','Добавление контента к ячейке 5')


Потом написал маленький скриптик, как мог:

$query = mysql_query("SELECT ID, Field_2 FROM table_2 ORDER BY ID");

while($data=mysql_fetch_array($query))
{
  $data2=mysql_fetch_array(mysql_query("SELECT Field_3 FROM table_1 WHERE ID=".$data[ID]));
  $new=$data2[Field_3].$data[Field_2];
  mysql_query("UPDATE table_1 SET Field_3 = '".$new."' WHERE ID=".$data['ID']);
}
echo "Выполнено!";


PS. Хотя запросов будет много, но судя по вашему вопросу, у вас мало записей, поэтому злоупотребил запросами.

  Ответить  
 
 автор: pautina   (06.02.2012 в 06:14)   письмо автору
 
   для: nmahkamov   (05.02.2012 в 11:08)
 

Немного подкорректировал скрипт

<?php       
  
// header("Content-Type: text/html; charset=UTF-8");      
  
$conn mysql_connect ("localhost""root""")     
            or die (
"Соединение не установлено!");     
  
mysql_select_db("bd_photoshop-portal"$conn);      
 
    
$query mysql_query("SELECT ID, Field_2 FROM table_2 ORDER BY ID"); 

$data mysql_query($query);       
  if(!
$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);       
  if(
mysql_num_rows($data))       
  {       
    while(
$date_2 mysql_fetch_assoc($data)) ;    
    {    
      
$data2=mysql_fetch_array(mysql_query("SELECT Field_3 FROM table_1 WHERE ID=".$data[ID])); 
      
$new=$data2[Field_3].$data[Field_2]; 
      
mysql_query("UPDATE table_1 SET Field_3 = '".$new."' WHERE ID=".$data['ID']); 
    } 
echo 
"Выполнено!";
}     
?>

Но контент не добавляется
где то здесь с date нужно копать
while($date_2 = mysql_fetch_assoc($data)) ;
{
$data2=mysql_fetch_array(mysql_query("SELECT Field_3 FROM table_1 WHERE ID=".$data[ID]));
$new=$data2[Field_3].$data[Field_2];
mysql_query("UPDATE table_1 SET Field_3 = '".$new."' WHERE ID=".$data['ID']);
}
Как исправить можно?

  Ответить  
 
 автор: pautina   (06.02.2012 в 15:26)   письмо автору
 
   для: pautina   (06.02.2012 в 06:14)
 

Сейчас скрипт имеет такой код

<?php       
  
// header("Content-Type: text/html; charset=UTF-8");      
  
$conn mysql_connect ("localhost""root""")     
            or die (
"Соединение не установлено!");     
  
mysql_select_db("bd_photoshop-portal"$conn); 
    
  
$query mysql_query("SELECT ID, Field_2 FROM table_2 ORDER BY ID"); 

  
$data mysql_query($query);       
  if(!
$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);       
  if(
mysql_num_rows($data))       
  {       
    
//$query = mysql_query("SELECT ID, Field_2 FROM table_2 ORDER BY ID"); 

    
while($data_2=mysql_fetch_array($data)); 
    { 
      
$data2=mysql_fetch_array(mysql_query("SELECT Field_3 FROM table_1 WHERE ID=".$data_2[ID])); 
      
$new=$data2[Field_3].$data_2[Field_2]; 
      
mysql_query("UPDATE table_1 SET Field_3 = '".$new."' WHERE ID=".$data_2['ID']); 
    } 
    echo 
"Выполнено!";
}     
?>

Выходит Ошибка выполнения запроса - Query was empty
ни посмотрите код?

  Ответить  
 
 автор: nmahkamov   (06.02.2012 в 21:09)   письмо автору
 
   для: pautina   (06.02.2012 в 15:26)
 

Вот итоговый код:
header("Content-Type: text/html; charset=UTF-8");
  $conn = mysql_connect ("localhost", "root", "")
            or die ("Соединение не установлено!");
  mysql_select_db("test");

  $data = mysql_query("SELECT ID, Field_2 FROM table_2 ORDER BY ID") or die(mysql_error());
  if(!$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />");
    while($data_2=mysql_fetch_array($data))
    {
      $query=mysql_query("SELECT Field_3 FROM table_1 WHERE ID=".$data_2[ID]);
      $data2=mysql_fetch_array($query);
      $new=$data2[Field_3].$data_2[Field_2];
      mysql_query("UPDATE table_1 SET Field_3 = '".$new."' WHERE ID=".$data_2['ID']);
    }
    echo "Выполнено!";

  Ответить  
 
 автор: pautina   (07.02.2012 в 06:06)   письмо автору
 
   для: nmahkamov   (06.02.2012 в 21:09)
 

Скрипт сейчас такой

<?php       
  header
("Content-Type: text/html; charset=UTF-8"); 
  
$conn mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"); 

  
$data mysql_query("SELECT ID, Field 2 FROM table_2 ORDER BY ID") or die(mysql_error()); 
  if(!
$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />"); 
    while(
$data_2=mysql_fetch_array($data)) 
    { 
      
$query=mysql_query("SELECT Field_3 FROM table_1 WHERE ID=".$data_2[ID]); 
      
$data2=mysql_fetch_array($query); 
      
$new=$data2[Field_3].$data_2[Field_2]; 
      
mysql_query("UPDATE table_1 SET Field_3 = '".$new."' WHERE ID=".$data_2['ID']); 
    } 
    echo 
"Выполнено!";
?>

Выходит ошибка
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 FROM table_2 ORDER BY ID' at line 1

  Ответить  
 
 автор: nmahkamov   (07.02.2012 в 08:05)   письмо автору
 
   для: pautina   (07.02.2012 в 06:06)
 

Исправьте вот этот участок:
SELECT ID, Field 2 FROM

Не Field 2, а Field_2. Забыли нижнюю черту.

  Ответить  
 
 автор: pautina   (07.02.2012 в 08:11)   письмо автору
 
   для: nmahkamov   (07.02.2012 в 08:05)
 

Это же название поля, а у меня поле в таблице под именем Field 2
Сейчас скрипт имеет такой код

<?php       
  header
("Content-Type: text/html; charset=UTF-8"); 
  
$conn mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"); 

  
$data mysql_query("SELECT ID, Field 2 FROM table_2 ORDER BY ID") or die(mysql_error()); 
  if(!
$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />"); 
    while(
$data_2=mysql_fetch_array($data)) 
    { 
      
$query=mysql_query("SELECT Field 3 FROM table_1 WHERE ID=".$data_2[ID]); 
      
$data2=mysql_fetch_array($query); 
      
$new=$data2['Field 3'].$data_2['Field 2']; // Объединение строк
      
mysql_query("UPDATE table_1 SET Field 3 = '".$new."' WHERE ID=".$data_2['ID']); 
    } 
    echo 
"Выполнено!";
?>

Выходит это сообщение
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 FROM table_2 ORDER BY ID' at line 1

  Ответить  
 
 автор: Lotanaen   (07.02.2012 в 13:53)   письмо автору
 
   для: pautina   (07.02.2012 в 08:11)
 

поля таблицы берите в запросе в кавычки `Field 3`

  Ответить  
 
 автор: pautina   (07.02.2012 в 14:15)   письмо автору
 
   для: Lotanaen   (07.02.2012 в 13:53)
 

Field 3 записал в кавычки
сейчас код такой

<?php       
  header
("Content-Type: text/html; charset=UTF-8"); 
  
$conn mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"); 

  
$data mysql_query("SELECT ID, Field 2 FROM table_2 ORDER BY ID") or die(mysql_error()); 
  if(!
$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />"); 
    while(
$data_2=mysql_fetch_array($data)) 
    { 
      
$query=mysql_query("SELECT Field 3 FROM table_1 WHERE ID=".$data_2[ID]); 
      
$data2=mysql_fetch_array($query); 
      
$new=$data2['Field 3'].$data_2['Field 2']; // Объединение строк
      
mysql_query("UPDATE table_1 SET 'Field 3' = '".$new."' WHERE ID=".$data_2['ID']); 
    } 
    echo 
"Выполнено!";
?>

Может в синтаксисе этой строки ещё что то с кавычками?
mysql_query("UPDATE table_1 SET 'Field 3' = '".$new."' WHERE ID=".$data_2['ID']); 

Ни посмотрите?

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

вы во всех запросах берите все поля и названия таблиц в кавычки, только не в такие, какие Вы взяли, а какие я Вам привел - косые одинарные (апостроф) - обычно там где русская буква Ё на клавиатуре...

  Ответить  
 
 автор: pautina   (07.02.2012 в 14:28)   письмо автору
 
   для: Lotanaen   (07.02.2012 в 14:20)
 

Сейчас код такой

<?php       
  header
("Content-Type: text/html; charset=UTF-8"); 
  
$conn mysql_connect ("localhost""root"""
            or die (
"Соединение не установлено!"); 
  
mysql_select_db("bd_photoshop-portal"); 

  
$data mysql_query("SELECT 'ID', 'Field 2' FROM 'table_2' ORDER BY ID") or die(mysql_error()); 
  if(!
$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />"); 
    while(
$data_2=mysql_fetch_array($data))  
    {  
      
$query=mysql_query("SELECT 'Field 3' FROM 'table_1' WHERE ID=".$data_2[ID]);  
      
$data2=mysql_fetch_array($query);  
      
$new=$data2['Field 3'].$data_2['Field 2']; // Объединение строк 
      
mysql_query("UPDATE 'table_1' SET 'Field 3' = '".$new."' WHERE ID=".$data_2['ID']);  
    }  
    echo 
"Выполнено!";
?>

Но где то всё равно ошибка есть

  Ответить  
 
 автор: Lotanaen   (07.02.2012 в 14:31)   письмо автору
 
   для: pautina   (07.02.2012 в 14:28)
 

Вы букву Ё нашли на клавиатуре? вот ту одинарную кавычку и используйте!!!

  Ответить  
 
 автор: pautina   (07.02.2012 в 14:32)   письмо автору
 
   для: Lotanaen   (07.02.2012 в 14:31)
 

Я уже подправил извиняюсь

<?php        
  header
("Content-Type: text/html; charset=UTF-8");  
  
$conn mysql_connect ("localhost""root""")  
            or die (
"Соединение не установлено!");  
  
mysql_select_db("bd_photoshop-portal");  

  
$data mysql_query("SELECT `ID`, `Field 2` FROM `table_2` ORDER BY ID") or die(mysql_error());  
  if(!
$data) exit("Ошибка выполнения запроса - ".mysql_error()."<br />");  
    while(
$data_2=mysql_fetch_array($data))  
    {  
      
$query=mysql_query("SELECT `Field 3` FROM `table_1` WHERE ID=".$data_2[ID]);  
      
$data2=mysql_fetch_array($query);  
      
$new=$data2['Field 3'].$data_2['Field 2']; // Объединение строк 
      
mysql_query("UPDATE `table_1` SET `Field 3` = '".$new."' WHERE ID=".$data_2['ID']);  
    }  
    echo 
"Выполнено!"
?>

Запрос выполняется
а вот в этой строке
 mysql_query("UPDATE `table_1` SET `Field 3` = '".$new."' WHERE ID=".$data_2['ID']);  

перед закрытием скобки двойная кавычка не нужна
mysql_query("UPDATE")

  Ответить  
 
 автор: Lotanaen   (07.02.2012 в 14:39)   письмо автору
 
   для: pautina   (07.02.2012 в 14:32)
 

а у Вас в получаемых значениях $new нет одинарных прямых кавычек? т.е. в $data_2['Field 2'] и $data2['Field 3'] есть одинарные кавычки?

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

хорошо а как сделать пробел перед добавляемым полем.

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

добавить пробел

  Ответить  
 
 автор: Lotanaen   (07.02.2012 в 14:57)   письмо автору
 
   для: pautina   (07.02.2012 в 14:32)
 

попробуйте вот так:


mysql_query("UPDATE `table_1` SET `Field 3` = '".mysql_real_escape_string($new)."' WHERE ID=".$data_2['ID']);

  Ответить  
 
 автор: pautina   (07.02.2012 в 17:43)   письмо автору
 
   для: Lotanaen   (07.02.2012 в 14:57)
 

при использовании вашей строки пробел перед добавляемым полем не ставится
Содержимое контента 1Добавление контента к ячейке 1

  Ответить  
 
 автор: Lotanaen   (07.02.2012 в 17:50)   письмо автору
 
   для: pautina   (07.02.2012 в 17:43)
 

$new=$data2['Field 3']." ".$data_2['Field 2'];

  Ответить  
 
 автор: pautina   (07.02.2012 в 18:04)   письмо автору
 
   для: Lotanaen   (07.02.2012 в 17:50)
 

Да спасибо большое всё работает.

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

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