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

Форум MySQL

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

 

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

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

тема: Как получить идентификатор для последней внесенной строки?
 
 автор: Stifter2   (02.04.2009 в 15:05)   письмо автору
 
 

Здравствуйте,

подскажите, пожалуйста, что нужно вставить ниже для получения идентификатора по последней добавленной в БД строке id_catalog с AUTO_INCREMENT.

$query = "SELECT name FROM lands_photocat WHERE id_catalog = ...";

  Ответить  
 
 автор: Stifter2   (02.04.2009 в 15:31)   письмо автору
 
   для: Stifter2   (02.04.2009 в 15:05)
 

$query = "SELECT name FROM lands_photocat WHERE id_catalog = LAST_INSERT_ID()";
почемуто не работает.

Или еще как вариант обнаружить эту ячейку в моём случае: в таблице есть еще поле position, так вот как можно было бы опредедить id_catalog через position, значение которого самое большое?

  Ответить  
 
 автор: Valick   (02.04.2009 в 15:32)   письмо автору
 
   для: Stifter2   (02.04.2009 в 15:31)
 

http://softtime.ru/forum/read.php?id_forum=3&id_theme=63866&page=1

  Ответить  
 
 автор: Stifter2   (02.04.2009 в 15:33)   письмо автору
 
   для: Stifter2   (02.04.2009 в 15:31)
 

Или вообще 3 вариант, как вывести id_catalog по самому большому его значению в таблице.

  Ответить  
 
 автор: Stifter2   (02.04.2009 в 15:40)   письмо автору
 
   для: Stifter2   (02.04.2009 в 15:33)
 

С функцией LAST_INSERT_ID() почему-то не удавался вывод:

Получилось сделать вот так:

$latest = mysql_query("SELECT MAX(id_catalog) AS 'id_cat' FROM lands_photocat");
$lat = mysql_fetch_array($latest);
$l = $lat['id_cat'];

$query= mysql_query("SELECT name FROM lands_photocat WHERE id_catalog = $l");

Может быть как-то проще можно было функцию MAX сделать для id_catalog?

  Ответить  
 
 автор: Trianon   (02.04.2009 в 17:30)   письмо автору
 
   для: Stifter2   (02.04.2009 в 15:40)
 

>С функцией LAST_INSERT_ID() почему-то не удавался вывод:

что значит "почему-то" ?

А если почему-то не удастся вывод со всеми остальными функциями?

  Ответить  
 
 автор: Stifter2   (04.04.2009 в 17:20)   письмо автору
 
   для: Trianon   (02.04.2009 в 17:30)
 

Он выводил совсем другую строку, никак не последнюю добавленную.

  Ответить  
 
 автор: Trianon   (04.04.2009 в 17:25)   письмо автору
 
   для: Stifter2   (04.04.2009 в 17:20)
 

показывайте фрагмент кода, который добавляет строку, а затем выводит её номер.

  Ответить  
 
 автор: Stifter2   (04.04.2009 в 17:40)   письмо автору
 
   для: Trianon   (04.04.2009 в 17:25)
 

Таблица состоит из следующих полей (лишнее убрал для удобочитаемости):
id_catalog (ключ)
name
pos

Добавление в таблицу:
$query = "INSERT INTO таблица VALUES (NULL, '".$_POST['name']."', ".$_POST['pos'].")";



Вывод всех строк, последнюю добавленную строку выделить полужирным (например):

$latest = mysql_query("SELECT MAX(id_catalog) AS 'id_cat' FROM таблица");
$lat = mysql_fetch_array($latest); 
$l = $lat['id_cat'];
     
$query = "SELECT name, id_catalog, pos FROM таблица ";
$alb = mysql_query($query);
 if(mysql_num_rows($alb) > 0) {         
   while($album = mysql_fetch_array($alb)) {
   if (($album['id_catalog']) == $l) {
      echo "<b>".$album['name']."</b>";              
      } else
      echo ".$album['name'].";
   } 
}


Вот примерно такой код.

  Ответить  
 
 автор: Trianon   (04.04.2009 в 17:49)   письмо автору
 
   для: Stifter2   (04.04.2009 в 17:40)
 

>Добавление в таблицу:
$query = "INSERT INTO таблица VALUES (NULL, '".$_POST['name']."', ".$_POST['pos'].")";
$last = mysql_insert_id();


>Вывод всех строк, последнюю добавленную строку выделить полужирным (например):


$query = "SELECT name, id_catalog, pos FROM таблица ";
$alb = mysql_query($query);
 if(mysql_num_rows($alb) > 0) {         
   while($album = mysql_fetch_array($alb)) {
   if (($album['id_catalog']) == $last) {
      echo "<b>".$album['name']."</b>";              
      } else
      echo ".$album['name'].";
   } 

  Ответить  
 
 автор: Stifter2   (04.04.2009 в 17:58)   письмо автору
 
   для: Trianon   (04.04.2009 в 17:49)
 

А если добавление и вывод находятся в разных файлах?

  Ответить  
 
 автор: Trianon   (04.04.2009 в 18:08)   письмо автору
 
   для: Stifter2   (04.04.2009 в 17:58)
 

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

  Ответить  
 
 автор: Stifter2   (04.04.2009 в 18:09)   письмо автору
 
   для: Trianon   (04.04.2009 в 18:08)
 

Большое спасибо за ответы и беседу, Trianon. Спасибо за помощь!

  Ответить  
 
 автор: Trianon   (02.04.2009 в 17:29)   письмо автору
 
   для: Stifter2   (02.04.2009 в 15:33)
 

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

  Ответить  
 
 автор: Stifter2   (04.04.2009 в 17:22)   письмо автору
 
   для: Trianon   (02.04.2009 в 17:29)
 

У меня это работает без ошибок, т. к. строки новые добавляет только администратор.

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

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