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

Форум MySQL

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

 

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

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

тема: предыдущий элемент массива
 
 автор: jonnik   (12.04.2006 в 16:02)   письмо автору
 
 

Хочу получить доступ к предыдущему и следующему элементам массива. Код:

for ($i=0; $i<count($row); $i++)
    {
      if ($row[$i] == $id)
      {
        $next_id = $row[$i+1];
        $prev_id = $row[$i-1];
        break;
      }
    }

$next_id, $prev_id - пустые

   
 
 автор: cheops   (13.04.2006 в 00:31)   письмо автору
 
   для: jonnik   (12.04.2006 в 16:02)
 

А что в массиве $row? Вообще если в индексах нет разрывов должно работать, распечатайте дамп массива
<?php
  
echo "<pre>";
  
print_r($row);
  echo 
"</pre>";
?>

Передыдущие и следующие элементы в нём существуют?

   
 
 автор: JonNik   (13.04.2006 в 10:52)   письмо автору
 
   для: cheops   (13.04.2006 в 00:31)
 

С этим разобрался, но решение проблемы выглядит не очень красиво. Надо получить из массива значения, где $id= $my['id'] предыдущий элемент массива и следующий элемент массива.

<?php
while ($my mysql_fetch_array($res))
    {
      
$mas[] = $my['id'];
    }

    for (
$i=0$i<count($mas); $i++)
    {
      if (
$mas[$i] == $id)
      {
        
$next_id $mas[$i+1];
        
$prev_id $mas[$i-1];
        break;
      }
    }
?>

   
 
 автор: Trianon   (13.04.2006 в 11:06)   письмо автору
 
   для: JonNik   (13.04.2006 в 10:52)
 

Вы бы привели код, начиная с SELECTа, а то и вправду некрасиво выходит.

   
 
 автор: JonNik   (13.04.2006 в 11:15)   письмо автору
 
   для: Trianon   (13.04.2006 в 11:06)
 

SQL простой:

$res = mysql_query("SELECT id FROM table");

содержимое массива

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

   
 
 автор: Trianon   (13.04.2006 в 11:21)   письмо автору
 
   для: JonNik   (13.04.2006 в 11:15)
 

Что-то не так. Если Вас интересует предыдущий, последующий элементы, значит Вам важен порядок, в котором они идут. Следует указать ORDER BY, иначе запрос теряет всякий смысл.

   
 
 автор: JonNik   (13.04.2006 в 11:28)   письмо автору
 
   для: Trianon   (13.04.2006 в 11:21)
 

Вы правы ORDER BY id будет, просто пока отлаживаю скрипт забыл про это.

   
 
 автор: Trianon   (13.04.2006 в 11:37)   письмо автору
 
   для: JonNik   (13.04.2006 в 11:28)
 

а тогда запрос сам собой развалится на два.
SELECT id FROM tab WHERE id < $d ORDER BY id LIMIT 1
SELECT id FROM tab WHERE id > $d ORDER BY id LIMIT 1

   
 
 автор: JonNik   (13.04.2006 в 11:45)   письмо автору
 
   для: Trianon   (13.04.2006 в 11:37)
 

не правильно, если в таблице например есть id = 1, 2, 3, 4, 5, то первый Ваш запрос выведет, при значении $d=3 выведет 1, а мне нужно 2...

   
 
 автор: Trianon   (13.04.2006 в 11:47)   письмо автору
 
   для: JonNik   (13.04.2006 в 11:45)
 

SELECT id FROM tab WHERE id < $d ORDER BY id DESC LIMIT 1
SELECT id FROM tab WHERE id > $d ORDER BY id ASC LIMIT 1

   
 
 автор: JonNik   (13.04.2006 в 11:55)   письмо автору
 
   для: Trianon   (13.04.2006 в 11:47)
 

вариант... спасибо

   
Rambler's Top100
вверх

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