-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
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 |
можно обойтись и без isset
вернет 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.
© OSzone.net 2001-