|
|
|
|
// Проверяем, если уже есть запись с таким артиклем, то обновляем данные
$query = "SELECT * FROM pen
WHERE artikl LIKE '$tov_id'";
$ath = mysql_query($query);
if(!$ath) echo mysql_error();
if(mysql_num_rows($ath)>0)
{
// Обновляем данные
$q = "UPDATE pen SET
name='$tov_name',
rub='$tov_rubr'
WHERE artikl='$tov_id'";
if(mysql_query($q))
{
echo "Данные успешно обновлены<br>";
}
}
// Если нет, то добавляем данные в БД
$y = "INSERT INTO pen VALUES (NULL,
'$tov_id',
'$tov_name',
'$tov_rubr'');";
if(mysql_query($y))
{
echo "Данные добавлены в БД<br>";
}
|
Таким образом я сохраняю и обновляю xml файл. Так вот, первый раз когда его сохраняю - то все ок. А вот когда второй раз его заргужаю (с теми же данными), то идет и обновление данных и добавление. Подскажите, что не так в скриптах. | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 12:54)
| | Я кажется понял в чем ошибка - выполняются оба запроса, т.е. сначала идет обновление, а потом добавление.
Подскажите как сделать чтобы проверялось, выполнялся только один и запросов, т.е. если такой товар уже есть, то данные о нем обновлялись, а если нет - то товар добавлялся.
Я так понимаю тут нужно сделать консрукцию на подобии:
Но как все это кодом сказать - не понимаю. | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 13:50)
| | Исправил вот так:
// Проверяем, если уже есть запись с таким артиклем, то обновляем данные
$query = "SELECT * FROM pen
WHERE artikl LIKE '$tov_id'";
$ath = mysql_query($query);
if(!$ath) echo mysql_error();
if(mysql_num_rows($ath)>0)
{
// Обновляем данные
$q = "UPDATE pen SET
brend='$tov_brand',
mattov='$tov_mat'
WHERE artikl='$tov_id'";
if(mysql_query($q))
{
echo "Данные успешно обновлены<br>";
}
} else {
// Если нет, то добавляем данные в БД
$y = "INSERT INTO pen VALUES (NULL,
'$tov_id',
'$tov_brand',
'$tov_mat');";
if(mysql_query($y))
{
echo "Данные добавлены в БД<br>";
}
}
}
|
Но чего-то все равно не помогло :( | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 15:04)
| |
WHERE artikl LIKE '$tov_id'";
| артикл чему-то равен должен быть по идее, иначе по какому признаку WHERE должно выбрать запиcь?
WHERE artikl='$artikl' LIKE '$tov_id'";
|
| |
|
|
|
|
|
|
|
для: Loneliness
(16.03.2010 в 15:35)
| | А разве строка
WHERE artikl LIKE '$tov_id'";
|
расшифровывается не так:
ГДЕ значен поле artikl равно переменной $tov_id
? | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 15:38)
| | У вас $tov_id согласно вашего XML-файла, это номер, и спрашивается для чего вообще тут LIKE нужен? | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 15:04)
| | После $y = "INSERT INTO pen VALUES (NULL,
'$tov_id',
'$tov_brand',
'$tov_mat');";
сделайте print $y;
Синтаксические ошибки те же, что и в соседней теме.
Вам надо в начало скрипта поставить вывод ошибок на экран. | |
|
|
|
|
|
|
|
для: Лена
(16.03.2010 в 16:27)
| | Кажется я понял в чем проблема:
Заново добавляются только те файлы, artikl которых записан как: 222.222 т.е. через точку. А это значения этого поля в таблице БД у меня int - изменил на text и все заработало как надо. | |
|
|
|
|
|
|
|
для: Dizels
(16.03.2010 в 15:04)
| |
if(mysql_query($y))
{
echo "Данные добавлены в БД<br>";
}
}
|
В реале количество скобок такое же? | |
|
|
|