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

Форум MySQL

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

 

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

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

тема: Сбоит проверка похожих товаров в базе данных
 
 автор: Fighter   (01.10.2008 в 16:51)   письмо автору
 
 

Здравствуйте !
Постараюсь по подробнее разъяснить что к чему. Итак, проблема в следующем :
Есть скрипт и база данных. Скрипт добавляет, удаляет или скажем списывает товар из базы. База данных MySQL примерно слебующего вида

Штрих код | Название | Цена | Колличество | группа | id |

работа с базо проста до безобразия
если товар с таким штрихом ненайдет добавляем
mysql_query("INSERT INTO $date VALUES ('$shtrih','$name','$cena','$kol_vo','$group','$id')");

если найден то обновляем
$prov["cena"]=$cena;
$prov["kol_vo"]+=$kol_vo;
mysql_query("UPDATE $date SET kol_vo='$prov[kol_vo]', cena='$prov[cena]' where id='$prov[id]'");

записей в базе примерно 1500.
А вот теперь самое смешное, все вроде работает нормально, НО НО НО, периодически случаются интересные вещи, скажем при редактировании товара бывает появляется в базе точно такая же копия этого же товара, соответственно должно быть 2 диска я плучается 4 :) или при добавлении товара скажем 5 штук, в базе пишется любое другое число :) это может быть как 0 так и 154 и т.д. При продаже товара т.е. должно в базе просто произойти скажем -5 и в базу продаж за день вписаться 5 а вписывается так же любое число.... И все эти глюки происходят периодически в разное время т.е. случайным образом.

Соответственно вопрос, из за чего это может происходить ?? Глюки интерпритатора т.е. РНР или глюки MySQL ?

Заранее спасибо !

  Ответить  
 
 автор: Drago   (01.10.2008 в 17:18)   письмо автору
 
   для: Fighter   (01.10.2008 в 16:51)
 

А как вы проверяете наличие такого товара в базе?

  Ответить  
 
 автор: Fighter   (01.10.2008 в 17:21)   письмо автору
 
   для: Drago   (01.10.2008 в 17:18)
 

$shtrih=trim($shtrih);
$prov=mysql_query("select * from tovar where shtrih='$shtrih'");
$prov=mysql_fetch_array($prov);
if($prov["shtrih"]=="")
{
srand((double) microtime()*10000000000);
$id=rand(100000000,1000000000);
mysql_query("INSERT INTO tovar VALUES ('$shtrih','$name','$cena','$kol_vo','$group', '$id')");
}

  Ответить  
 
 автор: mihdan   (01.10.2008 в 17:43)   письмо автору
 
   для: Fighter   (01.10.2008 в 16:51)
 

[поправлено модератором]

  Ответить  
 
 автор: Fighter   (01.10.2008 в 17:45)   письмо автору
 
   для: mihdan   (01.10.2008 в 17:43)
 

Простите конечно. Но какие могут быть глюки скрипта когда все навсего есть строчка

mysql_query("INSERT INTO tovar VALUES ('$shtrih','$name','$cena','$kol_vo','$group', '$id')");

Просто из формы данные. В основном все нормально, НО иногда колличество вводится непонятно какое !

И еще, когда в базе всего навсего 10-20 наименований, все работает отлично проверял раз 300, а в основной базе где мноо товара проскакивают такие глюки

[поправлено модератором]

  Ответить  
 
 автор: Drago   (01.10.2008 в 18:08)   письмо автору
 
   для: Fighter   (01.10.2008 в 17:45)
 

А когда у вас появляются лишние записи? При добавлении нового товара или, и при обновлении старого, эти записи могут дублироваться?

  Ответить  
 
 автор: Fighter   (02.10.2008 в 11:48)   письмо автору
 
   для: Drago   (01.10.2008 в 18:08)
 

При редактировании(обновлении) старого иногда запись дублируется.

  Ответить  
 
 автор: sim5   (01.10.2008 в 19:13)   письмо автору
 
   для: Fighter   (01.10.2008 в 17:45)
 

А зачем id товара формировать так: $id=rand(100000000,1000000000);, не лучше ли уникальные индексы через автоинкремент?

  Ответить  
 
 автор: Fighter   (02.10.2008 в 11:50)   письмо автору
 
   для: sim5   (01.10.2008 в 19:13)
 

Может и лучше и проще в придачу. Но хрен с ним, глюк то из за это происходить не может

  Ответить  
 
 автор: sim5   (02.10.2008 в 11:57)   письмо автору
 
   для: Fighter   (02.10.2008 в 11:50)
 

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

PS. А насчет id товара, то не "может быть лучше", а так и нужно делать - каждый товар должен иметь уникальную запись, чего рандомом не как не гарантируется.

  Ответить  
 
 автор: sl1p   (02.10.2008 в 12:54)   письмо автору
 
   для: Fighter   (01.10.2008 в 16:51)
 

уже лучше тогда не рандом а time();
:)

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

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