Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   оператор If... Else (http://forum.oszone.net/showthread.php?t=52023)

Pandora 25-07-2005 16:53 343480

оператор If... Else
 
Здравствуйте. Сеществует файл index.php
PHP код:

<?php
//....другие новости вида n04 или какого-либо другого
$n04="новость 4";
$n03="новость 3";
$n02="новость 2";
$n01="новость 1";

$default="<h2>Новости</h2>
$n04
$n03
$n02
<br><a href=\"index.php?id=archive\" title=\"Архив\">Архив</a>"
;

$archive="<h2>Архив</h2>
$n04
$n03
$n02
$n01
"
;

if(!
array_key_exists('id',$_GET)) //Проверка переменной, если нет, то default
{$_GET['id']='default';}

switch (
$_GET['id']) {
case 
'archive': echo "$archive"; break;

default: 
//если переменная name не задана
echo "$default"; break;}
?>

Как сделать, чтобы по умолчанию по ссылке http://www.my_syte/index.php
грузились только последние 3 новости, а по сслылке
http://www.my_syte/index.php?id=archive все новости, которые есть, для того
чтобы не вписывать постоянно в $default и $archive новые переменные.
Заранее благодарен.

vadimiron 25-07-2005 19:20 343495

Есть такая конструкция: isset($var), возвращает TRUE, если переменная установлена, то есть
PHP код:

if (isset($_GET['id'])) echo "все новости";
else echo 
"только 3"

Я бы посоветовал бы более конкретные переменные передовать, например $news_number, то есть кол-во новостей на вывод
Если переменная не установлена (!isset($var)), то стандартный случай, если же да, то только определённое кол-во новостей, если же -1, то все новости из базы

Pandora 27-07-2005 07:01 343808

Более читабельный первоначальный код:
PHP код:

<?php
$news_05
="новость 5";
$news_04="новость 4";
$news_03="новость 3";
$news_02="новость 2";
$news_01="новость 1";

if(!
array_key_exists('id',$_GET)) {$_GET['id']='default';}

switch (
$_GET['id']) {

case 
'archive': echo "<h2>Архив</h2>$news_04 $news_03 $news_02 $news_01"
break;

default: echo 
"<h2>Новости</h2> $news_04 $news_03 $news_02

<br><a href=\"index.php?id=archive\" title=\"Архив\">Архив</a>"

break; 
}
?>

vadimiron
Код:

Есть такая конструкция: isset($var), возвращает TRUE, если переменная установлена
Это существует и работает нормально.
Самая большая проблема - как определить последние 3 новости или последнюю новость,
она ведь может быть и news_05 и news_06 и т.д.
Как я понимаю, необходимо задать max, возможно через массив новостей и получить что-то вроде:
PHP код:

<?php
$news_05
="новость 5";
$news_04="новость 4";
$news_03="новость 3";
$news_02="новость 2";
$news_01="новость 1";

if(!
array_key_exists('id',$_GET)) {$_GET['id']='default';}

switch (
$_GET['id']) {

case 
'archive': echo "<h2>Архив</h2>$news_max.....$news_00"
break;

default: echo 
"<h2>Новости</h2> 3 последних переменных, т.е. $news_(max) $news_(max-1) $news_(max-2)

<br><a href=\"index.php?id=archive\" title=\"Архив\">Архив</a>"

break; 
}
?>


XCodeR 27-07-2005 10:52 343861

Если новости берутся из БД MYSQL использую LIMIT и ORDER BY DESC.
или новости хранить в массиве(списке)... тогда переворачиваем массив и выводим первые 3 элемента.

vadimiron 27-07-2005 13:04 343897

Цитата:

Самая большая проблема - как определить последние 3 новости или последнюю новость,
она ведь может быть и news_05 и news_06 и т.д.
Я не очень понимаю, как Вы управляете нововстями?? То есть где текст новости сохранён, и как вы их получаете в скрипт из сохраннёного вида?? Почему текст новостей у вас в отдельных переменных???

XCodeR 27-07-2005 17:11 343953

Цитата:

if (isset($_GET['id']))
можно обойтись и без isset
PHP код:

if(@$var

вернет true если переменная определена и содержит любое значение отличное от 0.

Pandora 28-07-2005 20:04 344234

Нужна была примерно такая конструкция. Правда тема топика получилась
немного не в тему. Сорри. Тогда еще было непонятно как реализовать.
PHP код:

<?php
Error_Reporting
(E_ALL & ~E_NOTICE); //Денвер 
$news[1122452295] = "новость 5"
$news[1122452294] = "новость 4"
$news[1122452293] = "новость 3"
$news[1122452292] = "новость 2"
$news[1122452291] = "новость 1";
$conunt 0;
  if(!isset(
$_GET['arhive'])) 
  { 
     foreach(
$news as $line
     {  
        if(
$count>=3) break;
        echo 
$line."<br>"
        
$count++;
     }                
  } 
  else 
  {
     foreach(
$news as $line
     { 
        echo 
$line."<br>"
     }  
  }
?>

теперь другая проблема.
Как можно сделать так, чтобы выводило на той странице, где 3 новости под
ними ссылку на архив. Примерного такого вида:
<a href="index.php?archive" title="Архив">Архив</a>
Чтобы получить:
index.php
Код:

новость 5
новость 4
новость 3
Архив

index.php?archive
Код:

новость 5
новость 4
новость 3
новость 2
новость 1

А то куда не поставлю - всегда ссылка либо копируется несколько раз либо
"выскакивает" на странице index.php?archive

XCodeR 28-07-2005 22:17 344257

не понял вопроса...
а просто в конец кода добавить echo, никак?
зачем ссылку в цикл пихать?

Pandora 29-07-2005 07:42 344326

Цитата:

а просто в конец кода добавить echo, никак?
зачем ссылку в цикл пихать?
Так тогда эта ссылка появится и на index.php?archive и будет указывать на свою же страницу.

Pandora 29-07-2005 08:43 344329

PHP код:

Такая конструкция, при которой ссылка не появляется на  index.php?archive
<?php 
Error_Reporting
(E_ALL & ~E_NOTICE);
$news[1122452295] = "новость 5"
$news[1122452294] = "новость 4"
$news[1122452293] = "новость 3"
$news[1122452292] = "новость 2"
$news[1122452291] = "новость 1";
  
$conunt 0
  if(!isset(
$_GET['arhive'])) 
  { 
     foreach(
$news as $line
     { 
        if(
$count>=3) break;
        echo 
$line."<br>"
        
$count++; 
     } 
     echo 
"<a href=\"index.php?arhive\" title=\"Архив\">Архив</a>"
   }
  else 
  { 
     
// Выводим все новости 
     
foreach($news as $line
     { 
        echo 
$line."<br>"
     } 
  }
?>

Другой вопрос: возможно ли модернизировать данный скрипт под несколько страниц. например index.php?archive, index.php?megnew и т.д.


Время: 23:37.

Время: 23:37.
© OSzone.net 2001-