Повторяяяююю мееееедлееенннееей: Этоооо происхоооооодит от тогооооооо, что кое-ктооооооо смоооооотрит кууууууууууурсы Попова.
Хорошо если код неверен, то укажите ошибку..... Я уже мно наслышан о курсах Попова, но самое интересное как раз он здесь не причем
Luter1984 Вы бы еще весь сайт выложили для определения выборки ошибки из базы. Для начала учитесь отлаживать и показывать данные и запросы. Почему мы должны смотреть в кучу html и делать какие-то выводы? Покажите структуру базы с небольшим количеством данных. Покажите запрос. Если запрос окажется безошибочным, смотрите, какие данные приходят.
Он здесь причем потому что 1. Ты сам теперь не можешь найти ошибку 2. Ты не понимаешь, зачем в твоём коде do-while, а значит 2.1 ты не понимаешь, как этот код работает и 2.1.1 ты не можешь найти ошибку, потому что не понимаешь принцип работы этого кода Этого всего не происходит, когда человек учится не по видеокурсам, а по хорошим книгам.
Этот цикл выполняется хотя бы один раз. А данных-то может и не быть! А в этот момент кто-то другой занес запись и id вернулся другой. Используйте http://ru2.php.net/manual/en/function.m ... ert-id.php Первая картинка не загрузилась. Почему у tovars_id по нескольку раз одна и та же категория?
Действительно, у tovars_id по нескольку раз одна и та же категория, .... Теперь я совсем ничего не понимаю, совсем руки опустились....
ALTER TABLE table_cat_tov ADD UNIQUE KEY tovars (tovars_id, category_id); - для оптимизации PHP: # foreach($new_id_cat as $id_cat) # { # $resultat_3 = mysql_query("INSERT INTO table_cat_tov (tovars_id, category_id) # VALUES ('$id_items','$id_cat')"); # } Нечего запросы в цикле делать. Отлаживайте! print_r($_POST); print_r($new_id_cat); Выводите SQL_запросы и анализируйте
В двух верхних значениях tovars_id должно быть уже значение 34 (это уже 34 товар)... Проблема как раз в этом и заключается, что при добавлении нового товара, если выбраны те же категории, что и для предыдущего товара, то tovars_id добавляется как предыдущий...
Помочь ничем не могу - у меня нет данных, я не вижу, что приходит, что отсылается и что добавляется в базу.
АУ! Программисты не отлаживают по визуальной части! Отладка происходит на передаваемых данных, которые позволяют ориентировочно выявить сбойный код.
Я для чего все замечания выше писал? Вы же не стали mysql_insert_id Использовать. Отсюда и проблема Код (Text): # $resultat_2 = mysql_query("SELECT id FROM rubriki WHERE data='$ntovar_data' AND title='$ntovar_title'", # $databasic); Выбирает первую попавшуюся запись, подходящую условиям. И это далеко не последняя добавленная запись. Поэтому id может быть и предыдущего товара, а может и вообще первого.
очень просто - вместо твоего запроса, Kreker показал же. если не ошибаюсь, то как-то так - mysql_query("SELECT last_insert_id()", $databasic);
Т.е запрос: PHP: $resultat_2 = mysql_query("SELECT id FROM rubriki WHERE data='$ntovar_data' AND title='$ntovar_title'",$databasic); Нужно преобразовать к виду: PHP: $resultat_2 = mysql_query("SELECT last_insert_id()",$databasic); Но тогда в таблицу table_cat_tov попадают пустые значения tovars_id:
Luter1984 а у тебя есть поле с автоматически назначаемым айди в таблице рубрик? id INT UNSIGNED NOT NULL AUTO_INCREMENT ?
Вы имеете в виду промежуточную таблицу table_cat_tov или таблицу с товарами rubriki В первой таблице нет id auto_increment, а во второй да! И при добавлении записи о новом товаре в таблице rubriki добавляется товар именно с новым id: PHP: $resultat_1 = mysql_query("INSERT INTO rubriki (meta_k,meta_d,title,cena,data,minvosrast,maxvosrast, categoryname,text) VALUES ('$ntovar_meta_k','$ntovar_meta_d','$ntovar_title','$ntovar_prais', '$ntovar_data','$ntovar_vosrast_mini','$ntovar_vosrast_maxi','$categoryname','$editor1')"); Если же имеется в виду таблица с именами рубрик, то да, там тоже в наличии id auto_increment, но в данном коде с ней я не работаю....
а так? SELECT last_insert_id() as `id` апд. хотя нет, так тоже вроде не получится. тут надо смотреть на структуру и логические связи, что куда вставляется. много нечитабельного кода, разбираться лень