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

Форум PHP

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

 

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

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

тема: Подскажите где ошибка
 
 автор: Dizels   (16.03.2010 в 12:54)   письмо автору
 
 

// Проверяем, если уже есть запись с таким артиклем, то обновляем данные    
$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 в 13:50)   письмо автору
 
   для: Dizels   (16.03.2010 в 12:54)
 

Я кажется понял в чем ошибка - выполняются оба запроса, т.е. сначала идет обновление, а потом добавление.

Подскажите как сделать чтобы проверялось, выполнялся только один и запросов, т.е. если такой товар уже есть, то данные о нем обновлялись, а если нет - то товар добавлялся.
Я так понимаю тут нужно сделать консрукцию на подобии:
if {
} else{
}

Но как все это кодом сказать - не понимаю.

  Ответить  
 
 автор: Dizels   (16.03.2010 в 15:04)   письмо автору
 
   для: 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>";
    }
    }
}    

Но чего-то все равно не помогло :(

  Ответить  
 
 автор: Loneliness   (16.03.2010 в 15:35)   письмо автору
 
   для: Dizels   (16.03.2010 в 15:04)
 

 WHERE artikl LIKE '$tov_id'"; 
артикл чему-то равен должен быть по идее, иначе по какому признаку WHERE должно выбрать запиcь?

WHERE artikl='$artikl' LIKE '$tov_id'"; 

  Ответить  
 
 автор: Dizels   (16.03.2010 в 15:38)   письмо автору
 
   для: Loneliness   (16.03.2010 в 15:35)
 

А разве строка
WHERE artikl LIKE '$tov_id'"; 

расшифровывается не так:
ГДЕ значен поле artikl равно переменной $tov_id
?

  Ответить  
 
 автор: sim5   (16.03.2010 в 16:47)   письмо автору
 
   для: Dizels   (16.03.2010 в 15:38)
 

У вас $tov_id согласно вашего XML-файла, это номер, и спрашивается для чего вообще тут LIKE нужен?

  Ответить  
 
 автор: Лена   (16.03.2010 в 16:27)   письмо автору
 
   для: Dizels   (16.03.2010 в 15:04)
 

После $y = "INSERT INTO pen VALUES (NULL,
'$tov_id',
'$tov_brand',
'$tov_mat');";
сделайте print $y;
Синтаксические ошибки те же, что и в соседней теме.
Вам надо в начало скрипта поставить вывод ошибок на экран.

  Ответить  
 
 автор: Dizels   (16.03.2010 в 16:52)   письмо автору
 
   для: Лена   (16.03.2010 в 16:27)
 

Кажется я понял в чем проблема:
Заново добавляются только те файлы, artikl которых записан как: 222.222 т.е. через точку. А это значения этого поля в таблице БД у меня int - изменил на text и все заработало как надо.

  Ответить  
 
 автор: GeorgeIV   (16.03.2010 в 16:57)   письмо автору
 
   для: Dizels   (16.03.2010 в 15:04)
 

if(mysql_query($y)) 
    { 
        echo "Данные добавлены в БД<br>"; 
    } 
    } 

В реале количество скобок такое же?

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

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