[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Прошу помочь со скриптом
alexandr kot
Добрый день уважаемые пользователи и админы данного ресурса.
Я вот уже несколько дней никак немогу сделать небольшую проверку. У меня есть массив, а так же сессия которая равна одному из элемнтов массива. Все это выводится в форич. Теперь мне нада чтобы если сессия равна элементу массива то тот DIV в котором данные был display:block; Вот что я пробовал
PHP
...
while(
$row mysql_fetch_object($result))
{
$arr[] = $row-> elems;
}
...
$ses $_SESSION["elem_name"];
foreach(
$key as $val)
{

   for(
$i=0$i<count($arr); $i++)
   {
      if(
$ses == $arr[$i])
      {
         
$div '<div style="display:block;">';
      }
      else
      {
         
$div '<div style="display:none;">';
      }
   }
echo 
$div;
}

Тоесть если сессия = apple, а в массиве есть apple, orange, banana, kiwi.. то display постоянно none, но вот если там только apple то display block. Прошу помощи, как поставить правельное условие?
Заранее огромное спасибо!



Спустя 17 минут, 49 секунд (16.09.2009 - 16:49) Гость_hara написал(а):
php.net => in_array($needle,$haystack)

ну вы поняли, внутренний цикл убираете и т.д.
да конечно есть вероятность что ещё нужно будет знать кол-во элементов массива count($array)

Спустя 5 минут, 16 секунд (16.09.2009 - 16:55) alexandr kot написал(а):
я очень прошу поподробнее если Вам не тяжело конечно! Спасибо!!!
Вот как понял, но все дивы БЛОК : (
PHP
$query "SELECT * FROM arr";
$result mysql_query($query);
while(
$row mysql_fetch_object($result))
{
    
$elems[] = $row-> elem;
}
$a 'apple';
foreach(
$elems as $el)
{
    if(
in_array($a$elems))
    {
        
$div 'block';
    }
    else
    {
        
$div 'none';
    }
    echo 
'<div style="display:'$div .'">'$el .'</div>';
}

Спустя 17 минут, 22 секунды (16.09.2009 - 17:12) Guest написал(а):
а пост прочитать повнимательнее ?
а логично самому подумать?
а нафига я писал что нужно ещё count()?

in_array() && count($array) == 1
только яблоко!
else
ещё и бананы!

вот )

Спустя 10 минут, 11 секунд (16.09.2009 - 17:22) Guest написал(а):
ээ а почему в первом коде $key as $val заменилось на $elems as $el
объясните что вы вообще хотите сделать
что содержится в одной в строке таблицы arr, то есть какие столбцы?

Спустя 17 минут, 1 секунда (16.09.2009 - 17:39) alexandr kot написал(а):
Пробовал так .. блин тоже не вышло : (
PHP
foreach($elems as $el)
{
    if(
count(in_array($a$elems)) == 1)
    {
        
$div '<div style="display:block;">'$el .'</div>';
    }
    else
    {
        
$div '<div style="display:none;">'$el .'</div>';
    }
    
echo 
$div;
}

Все дивы получаются блок! а должен быть только apple sad.gif

================
На цикл не обращайте внимания.. просто эти дивы выводятся в цикле...

Спустя 17 минут, 8 секунд (16.09.2009 - 17:56) glock18 написал(а):
PHP
foreach($elems as $el)
{
    if(
$a == $el)
    {
        
$div '<div style="display:block;">'$el .'</div>';
    }
    else
    {
        
$div '<div style="display:none;">'$el .'</div>';
    }
    
echo 
$div;
}

Спустя 3 минуты, 27 секунд (16.09.2009 - 18:00) alexandr kot написал(а):
glock18 в этом случае у меня выходят все дивы BLOCK! а мне нада чтобы BLOCK был только тот в котором есть элемент $a.

Спустя 7 минут, 44 секунды (16.09.2009 - 18:08) Kuliev написал(а):
Цитата (alexandr kot @ 16.09.2009 - 20:00)
glock18 в этом случае у меня выходят все дивы BLOCK! а мне нада чтобы BLOCK был только тот в котором есть элемент $a.

PHP
$div "";
foreach(
$elems as $el)
{
    if(
$a == $el)
    {
        
$div .= '<div style="display:block;">'$el .'</div>';
    }
    else
    {
        
$div .= '<div style="display:none;">'$el .'</div>';
    }
    
echo 
$div;
}

Спустя 25 минут, 4 секунды (16.09.2009 - 18:33) alexandr kot написал(а):
к сожалению не так sad.gif

Спустя 23 минуты, 33 секунды (16.09.2009 - 18:56) glock18 написал(а):
да, не так. так надо (уже столько раз вокруг да около - можно догадаться было):

PHP
// Здесь поставил Кулиев $div = "";
foreach($elems as $el)
{
// Надо поставить здесь
    $div = '';
    if($a == $el)
    {
        $div .= '<div style="display:block;">'. $el .'</div>';
    }
    else
    
{
        $div .= '<div style="display:none;">'. $el .'</div>';
    }
    
echo $div
;
}

не такая большая разница, да?

PS: Кулиеву спасибо, именно по его посту я понял в чем проблема.

Спустя 8 минут, 17 секунд (16.09.2009 - 19:04) Гость_hara написал(а):
alexandr kot если и это не верный вариант,
то более развернуто опиши что базе. один столбец в котором может быть одно значение(apple/banana/etc)?

а если верный то:
может тогда всё засунуть в while и убрать перменную $div? нафига собирать массив а потом его перебирать.

Спустя 44 секунды (16.09.2009 - 19:05) Kuliev написал(а):
glock18
wink.gif

Спустя 1 час, 58 минут, 12 секунд (16.09.2009 - 21:03) alexandr kot написал(а):
Гость_hara
получается так.. вот пример кода:
PHP
foreach($key as $val)
{
    $sess_kw = trim($_SESSION['kw']);
    foreach($key2 as $val2)
    {
        $bl = '';
        if($sess_kw == $val2)
        {
            $bl = 'block';
        }
        else
        
{
            $bl = 'none';
        }
    }
    $div = '<div style="display:'. $bl .';">';
    echo $div;
    echo '</div>';
}

тоесть дивы выводятся в первом цикле а второй использую для того чтобы достать данные которые потом выводятся внутри дива.. тоесть на выводе происходит примерно так:
<div style="display:...">
Apple
Orange
Banna
</div>
<div style="display:...">
Apple
Orange
</div>
Каждый из элементов уникальный, тоесть массив примерно такой:
$arr = array('Orange','Apple','Banana');
а для дивов другой массив используется.. так вот получается если бы все выводить в одном цикле то ваш код отлично подходит.. а вот для такой головоломки как у меня не подходит sad.gif
--------------
P.S. Спсибо всем кто откликнулся мне в помощь! Но проблема так и не решена sad.gif

Спустя 23 минуты, 8 секунд (16.09.2009 - 21:27) alexandr kot написал(а):
Спасибо задачу решил вот такми вот нехитрым путем
PHP
foreach($key as $val)
{
    
$sess_kw trim($_SESSION['kw']);
    
$bs 'none';
    foreach(
$key as $val2)
    {
        if(
$sess_kw == $val2)
        {
            
$b[] = 'block';
            if(
count(in_array('block',$b) == 1))
            {
                
$bs 'block';
            }
        }
    }
    
$div '<div style="display:'$bs .';">';
    echo 
$div;
}

Спасибо вам всем за то что дали мне хороший толчок! Спасибо большое wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.