ФорумПрограммированиеPHP для идиотов → Добавление нескольких строк в БД

Добавление нескольких строк в БД

  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 16:18, спустя 2 минуты 41 секунду


    @lexaka, формы и таблицы это разные вещи. на сервер ты отправляешь данные из формы. в одной форме может быть много таблиц и наоборот это всеголишь внешний вид

    чем тебе не подошел вариант отсюда http://pyha.ru/forum/topic/3067.msg61251#msg61251
    Спустя 43 сек.
    phpdude, по красоте и удобству с жуквери может ровняться только extjs

    я имею ввиду не html разметку а в БД ини хранятся в разных таблицах. Альбомы в одной треки в другой.
    т.е как я понимаю либо это два INSERTа либо один но какойто хитрый…
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 16:28, спустя 9 минут 26 секунд

    да блин без обид но попиздеть вы тут явно любители :) для вас простой вопрос мы растянули уже на 11 страниц. ахуеть!
    Спустя 60 сек.
    phpdude, видимо в РосТелеком тоже собрались любители попиздеть ;) рас не могут какойто простой вопрос быстро решить.
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 25 июля 2009 г. 16:34, спустя 5 минут 40 секунд

    это два инсерта
    Спустя 39 сек.
    Последнее редактирование: Сегодня в 04:27:56 pm от phpdude

    лолка ты
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 16:57, спустя 23 минуты 56 секунд


    это два инсерта

    ок буду пробывать.

    Все оказалось не так радужно. Просто двумя инсертами не удалось решить вопрос. Первый инсерт добавляет название альбома потом запрос на получение последнего ID и только после этого добавление треков. Я понимаю что можно было бы сделать аккуратнее без дополнительного промежуточного запроса а сделать в самом начале и при добавлении треков писать last_insert_id()+1…
    кто подскажет какой вариант более продуктивный?
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 19:45, спустя 2 часа 47 минут 54 секунды

    глупо конечно звучит но как сюда подпихнуть LAST_INSERT_ID()? Я могу конечно пойти по линии наименьшего сопротивления получить банально этот ID через запрос и втиснуть в скрытое поле но это как то не кошерно… В манах я видел что можно его вставлять прямо в добавление, сколько не бился ошбка одна поле не может быть NULL. Подскажите где его прописать?

    $insertSQL = "INSERT INTO testblock (aID,trackname,time) VALUES";
    $part = "(%s,%s,%s)";
    mysql_select_db($database_testbase, $testbase);
    for($i=0,$j=count($_POST['trackname']);$i<$j;$i++)
    {
       $sql[] = sprintf($part , GetSQLValueString(1, "int"), GetSQLValueString($_POST['trackname'][$i], "text"), GetSQLValueString($_POST['time'][$i], "text"));
    }
    $sql = implode(",",$sql);
    mysql_query($insertSQL.$sql, $testbase) or die(mysql_error());
    }

    пока воткнул заглушку, ведилил ее жирным шрифтом.
    видимо тут может еще возникнуть одна проблема LAST_INSERT_ID() получает последнее сгенерированное автоинкрементом ID значит при использовании счетчика он мне будет подставлять значение последнего вставленно трека только у первого будет правильный ID альбома…
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 25 июля 2009 г. 19:45, спустя 23 часа 59 минут 54 секунды

    @lexaka, [man]mysql_insert_id[/man]
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 19:47, спустя 1 минуту 24 секунды


    @lexaka, [man]mysql_insert_id[/man]

    да я читал. и в мускольном мане проблему я описал выше. с нарушением получения этого ID
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 25 июля 2009 г. 19:47, спустя 22 секунды

    mysql_insert_id появляется после вызова mysql_query($insertSQL.$sql, $testbase)

    и равен последнему а у тебя их несколько поэтому надо отнимать count($_POST['trackname']) чтобы узнать первый который ты вставил в этом запросе
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 19:50, спустя 3 минуты 24 секунды


    mysql_insert_id появляется после вызова mysql_query($insertSQL.$sql, $testbase)

    и равен последнему а у тебя их несколько поэтому надо отнимать count($_POST['trackname']) чтобы узнать первый который ты вставил в этом запросе

    может тогда действительно не заморачиваться а получить его сразу и в скрытое поле. и потом он значение будет всем добавлять… путем LAST_INSERT_ID(id+1)?
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 25 июля 2009 г. 19:53, спустя 2 минуты 58 секунд

    путем LAST_INSERT_ID(id+1)

    что это?!
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 19:55, спустя 2 минуты 4 секунды


    путем LAST_INSERT_ID(id+1)

    что это?!

    делаю запрос на получение последнего ID и прибавляю к нему 1 как бы за ранее получаю новое ID нового альбома.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 июля 2009 г. 19:56, спустя 43 секунды



    путем LAST_INSERT_ID(id+1)

    что это?!

    делаю запрос на получение последнего ID и прибавляю к нему 1 как бы за ранее получаю новое ID нового альбома.
    нет ты не запрос делаешь, ты жжешь)
    Сапожник без сапог
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 20:00, спустя 3 минуты 38 секунд




    путем LAST_INSERT_ID(id+1)

    что это?!

    делаю запрос на получение последнего ID и прибавляю к нему 1 как бы за ранее получаю новое ID нового альбома.
    нет ты не запрос делаешь, ты жжешь)


    It's not true that mysql_insert_id() only returns the ID generated for an AUTO_INCREMENT column by the previous INSERT query.

    We can use LAST_INSERT_ID() statement that will return value for mysql_insert_id().

    Example:

    $sql = "UPDATE `mytable` SET `mytable_id`= LAST_INSERT_ID(`mytable_id` + 1) WHERE …;

    @mysql_query($sql);
    $last_id = mysql_insert_id();

    LAST_INSERT_ID() statement will affect mysql_insert_id().
  • @lexaka

    Сообщения: 72 Репутация: N Группа: Кто попало

    Spritz 25 июля 2009 г. 20:11, спустя 11 минут 11 секунд

    злые вы пацаны… только поиздеваться. а конструктивного - 0
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 июля 2009 г. 20:12, спустя 1 минуту 7 секунд


    злые вы пацаны… только поиздеваться. а конструктивного - 0
    двери сам знаешь где. без обид, но никто тебя не завставляет тут задавать вопросы или я неправ?
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!