Перейти к содержимому

Реферальная программа Мегаплана


Положение элемента в массиве

#11 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 23 Май 2013 - 00:01

Ну так если не существует элемента массива n+1, то текущее изображение крайнее. Так же само с n-1

так id картинок не по порядку идут, а в зависимости от id пользователя, загрузившего эту картинку. в таблице с картинками есть еще поле user_id, по которому и идет выборка. Поэтому id картинок могут быть 40, 34, 21, 16 и тд
  • 0

#12 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 23 Май 2013 - 00:09

Можно создать новый массив, где будет по-порядку
  • 0

Сколько лет прошло, а ссылки всё ещё лучше покупать тут



#13 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 23 Май 2013 - 00:12

нет, мне не надо на существование проверить.


как раз таки надо проверять. а как это сделать тут уже масса вариантов.
допустим так
у тебя есть массив в виде
$allarr[0]["id"] = 1
$allarr[1]["id"] = 2
$allarr[2]["id"] = 3
$allarr[3]["id"] = 4

первый элемент - тут все ясно $allarr[0]["id"]
последний элемент можно получить вот так
$count = count($allarr);
$lat_item = $allarr[$count-1]["id"]

я думаю этих данных должно тебе хватить
  • 0

#14 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 23 Май 2013 - 00:13

Можно создать новый массив, где будет по-порядку

а как его создать? в цикле пока идет выборка присваивать каждый элемент массива другой переменной?

а вообще двумерный массив можно упростить до одномерного?
  • 0

#15 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 23 Май 2013 - 00:19

Kuchuluk, перебором с помощью foreach добавлять в новый массив новый элемент
  • 1

Сколько лет прошло, а ссылки всё ещё лучше покупать тут



#16 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 23 Май 2013 - 00:23

я думаю этих данных должно тебе хватить


не хватит. мне надо еще знать сколько именно картинок есть до и после, потому что под большой картинкой снизу выводятся еще миниатюрки по 9 штук
  • 0

#17 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 23 Май 2013 - 06:37

а документацию почитать религия не позволяет, изобретатели велосипедов? :)
array_shift — Извлекает первый элемент массива
array_pop — Извлекает последний элемент массива
  • 1

#18 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 23 Май 2013 - 07:07

всем спасибо за наводки, я уже сделал, работает нормально
public function photoStroka($page,$login)
  {
   $allarr = $this->selAssoc("users_images","id","user_login = '{$login}' ORDER BY id DESC"); //выбираю из БД все id, где поле user_login равно логину пользователя
   $arrsize = sizeof($allarr);//считаю количество эл-тов массива, то есть кол-во фоток
   // если их количество больше 9, то вывожу по 9 на страницу и устанавливаю где надо стрелки, иначе просто вывожу все
   if ($arrsize > 9)
   {
    foreach ($allarr as $all)
    {
	 foreach ($all as $key => $value)
	 {
	  $allid[] = $value;
	 }
    }
    $key = array_search($page,$allid);
    $elem = $key + 1;
    if ($key >= 5)
    {
	 $lim1 = $elem - 5;
    }
    else
    {
	 $lim1 = 0;
    }
    $pharr = $this->selAssoc("users_images","id, image_name","user_login = '{$login}' ORDER BY id DESC LIMIT {$lim1}, 9");
    foreach($pharr as $d)
    {
	 $text = $text."<a href='photos.php?login={$login}&photo=".$d["id"]."'><img src='../party/users-images/".$d["id"].$d["image_name"]."'></a>";
    }
    echo "<p id='photo-stroka'>".$text."</p>";
   }
   else
   {
    $pharr = $this->selAssoc("users_images","id, image_name","user_login = '{$login}' ORDER BY id DESC LIMIT 0, 9");
    foreach($pharr as $d)
    {
	 $text = $text."<a href='photos.php?login={$login}&photo=".$d["id"]."'><img src='../party/users-images/".$d["id"].$d["image_name"]."'></a>";
    }
    echo "<p id='photo-stroka'>".$text."</p>";
   }
  }

  • 0

#19 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 23 Май 2013 - 08:34

array_shift — Извлекает первый элемент массива array_pop — Извлекает последний элемент массива

Изобретатель, фукнции не получают, а извлекают элементы, то есть массив уже будет измененным
  • 1

#20 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 23 Май 2013 - 09:26

Kuchuluk, как-то все это у тебя громоздко получилось очень.
$sql = "SELECT ......."; // запрос
$query = mysql_query($sql); // выполнение
$rows = mysql_num_rows($query); // количество строк
if( $rows > 9 ){
    while( $row = mysql_fetch_assoc($query) ){
	    $allid[] = $row['']; // что, необходимо добавить айди и т.д.
	    // если надо, можно еще массив собрать, но наверно не надо
	    // для верности можно сделать счетчик и явно индексировать массив
    }
}
//////////////////
// но я бы сделал немного иначе
$i = 0;
while( $row = mysql_fetch_assoc($query) ){
    $i++;
    if( $i == 1 ){
	    $html .= "Первая картинка, значит без левой кнопки";
    }
    elseif( $i == $rows ){
	    $html .= "Последняя картинка, значит без правой кнопки";
    }
    else{
	    $html .= "Очереднаякартинка, значит обе кнопки";
    }
}
// в этом же цикле можно и миниатюры собрать

  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru