За последние 24 часа нас посетил 55751 программист и 1562 робота. Сейчас ищет 1291 программист ...

Включение и выключение новости

Тема в разделе "PHP для новичков", создана пользователем darkgod, 17 июл 2008.

  1. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Привет всем!
    Проблема вот в чем:
    Делаю включение и выключение новости... Но вот в чем загвоздка: само включение и выключение в базе происходит, но ссылки не меняются на включено или выключено, а всегда в одном положении (хотя повторюсь все действо в базе происходит нормально):

    Вот код:
    PHP:
    1.  
    2. $query = "SELECT hide FROM news";
    3. $new = mysql_query($query);
    4. if (mysql_num_rows($new))
    5. {
    6. while($news = mysql_fetch_array($new))
    7. {
    8. if($news['hide'] == 'hide') $strhide = "<a title=Отобразить href=news.php?lc=shownews&id-news=".$id."><b>Отображать</b></a>";
    9.    else $strhide = "<a title=Скрыть href=news.php?lc=hidenews&id-news=".$id."><b>Скрывать</b></a>";
    10.       }
    11.      }
    12.     echo '
    13.    <TR><TD COLSPAN=2>
    14.    ['.$strhide.']
    15.  
    16.    </TD></TR>
    17.  
    18.    ';
    19.  
    Думаю вся проблема в этом куске:
    PHP:
    1. if($news['hide'] == 'hide') $strhide = "<a title=Отобразить href=news.php?lc=shownews&id-news=".$id."><b>Отображать</b></a>";
    2.    else $strhide = "<a title=Скрыть href=news.php?lc=hidenews&id-news=".$id."><b>Скрывать</b></a>";
    Постоянно красуется ссылка скрывать новость, хотя в базе произошло переключение и должно бы уже быть отображать

    Помогите пожалста мне разобраться!
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    PHP:
    1.  
    2. <?php
    3. if ($news['hide'] == 'hide'){
    4. $strhide = "<a href='news.php?lc=shownews&id-news=" . $id . "' title='Показать'><b>Показать</b></a>";
    5. } else {
    6. $strhide = "<a href='news.php?lc=hidenews&id-news=" . $id . "' title='Скрыть'><b>Скрыть</b></a>";
    7. }
    8. ?>
    9.  
     
  3. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Тоже не решение, сейчас кнопки меняются на показать, скрыть, но сразу у всех ноостей... :(
     
  4. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    darkgod
    Почему переменная $strhide формируется внутри цикла, а используется за его пределами?
    И если уж на то пошло, нафиг текстовой ссылке title? :)
     
  5. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    титле ничему не мешает - это раз... два - я тока пишу код, дизайн и все прочее еще не делается, так что это вообще отношения не имеет... если я нуб в пхп - это не значит что я нуб в хтмл...
    Вот тут как раз возникает непонятная мне проблема... я и сам знаю что нужно внутри использовать, но когда использую внутри, то получается огромная куча ссылок скрыть и отобразить, которая формируется умножая общее колличество новостей на 5, и это мне не совсем ясно...

    Поэтому я и прошу помощи, или возможно есть другое какое то решение... А ваща критика мне тут совсем не нужна...
     
  6. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Не дождавшись рельной помощи, сам изучил весь алгоритм и починил... Теперь все работает как положено...

    А сделал та...

    вместо
    PHP:
    1. $query = "SELECT hide FROM news";
    2.  $new = mysql_query($query);
    3.  if (mysql_num_rows($new))
    4.  {
    5.  while($news = mysql_fetch_array($new))
    6.  {
    7.  if($news['hide'] == 'hide') $strhide = "<a title=Отобразить href=news.php?lc=shownews&id-news=".$id."><b>Отображать</b></a>";
    8.    else $strhide = "<a title=Скрыть href=news.php?lc=hidenews&id-news=".$id."><b>Скрывать</b></a>";
    9.        }
    10.      }
    11.      echo '
    12.     <TR><TD COLSPAN=2>
    13.     ['.$strhide.']
    14.  
    15.     </TD></TR>
    16.  
    17.     ';
    18.  
    Сделал так:
    PHP:
    1.  
    2. $sql = "SELECT * FROM news";
    3. $result=mysql_query($sql);
    4. $num_results=mysql_num_rows($result);
    5. for ($i=0; $i<$num_results; $i++)
    6.     {
    7.     $row=mysql_fetch_array($result);
    8.     $id=$row["id"];
    9.     $strhide=$row["hide"];
    10.  
    11.  
    12.  
    13. if($row['hide'] == 'hide') {$strhide = "<a title=Отобразить href=news.php?lc=shownews&id-news=".$id."><b>Отображать</b></a>";
    14.   } else  {$strhide = "<a title=Скрыть href=news.php?lc=hidenews&id-news=".$id."><b>Скрывать</b></a>"; }
    15.  
    16.  
    17. echo '    ['.$strhide.']    ';
    18.  
    19.    }
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    title кстати поисковики индексют...
     
  8. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Вообще да, но админке это не нужно... Потому что она все равно будет закрываться от сканирования...

    Для контента - согласен с тобой полностью