Форум сетевых администраторов
Показаны 33 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Срочно помогите!!! (http://netadmin.ws/forum/showthread.php?threadid=5482)


Помещено Димка 14-05-2003 в 12:27:

Срочно помогите!!!

-------------------------
ПОЖАЛУЙСТА ПОМОГИТЕ!!!!!
-------------------------


index.php
Вот такой скрипт:

....
<?
if ($id == news) { ?>
АÐ_хив новостей.... и т.д.

<?
if ($news == may) { ?>
Новости на 11 мая... и т.д.
<?
}
}
?>
....

при переходе по ссылке http://myserver.ru/index.php?id=news&news=may
браузер Выведет такое:

АÐ_хив новостей.... и т.д. Новости на 11 мая... и т.д.

А как сделать так, чтобы броузер вывел только:

Новости на 11 мая... и т.д.

?????????????????????

----------------------------------------
Помогите кто чем может!!!!!!!!!!!!!!!!!!
----------------------------------------


Помещено blacki 14-05-2003 в 14:01:

....
<?php
if ($news == may) { ?>
Новости на 11 мая... и т.д.

<?php
}

if (($id == news) && ($news != may) ) { ?>
АÐ_хив новостей.... и т.д.

<?php
}
?>
....

__________________
Национальность - русский, вероисповедание - программист.


Помещено polo 15-05-2003 в 00:34:

blacki в твоем случае тоже будут выполнятся оба условия.
должно быть:
if ($id=='news' AND (!$news OR !isset($news) OR $news == '' /*хотя это уже лишнее*/))

__________________
Всегда есть решение.


Помещено blacki 15-05-2003 в 15:25:

polo ок понял

__________________
Национальность - русский, вероисповедание - программист.


Помещено Димка 15-05-2003 в 15:47:

Так как мне сделать?


Помещено blacki 16-05-2003 в 08:27:

как polo написал

__________________
Национальность - русский, вероисповедание - программист.


Помещено Димка 16-05-2003 в 20:03:

Сделал так:
<?php
if($id == 'news'){
?>
Архив новостей!
<?php
}
if ($id=='news' AND (!$news OR !isset($news) OR $news == 'may' /*хотя это уже лишнее*/)){ ?>
Архив за май
<?php
}
?>
Когда вызываю ссылку: http://server/index.php?id=news
то появляется в окне:
Архив новостей! Архив за май (а мне надо, чтобы при вызове этой ссылке показывало только Архив новостей)

Когда вызываю ссылку: http://server/index.php?id=news&news=may
то появляется в окне:
Архив за май (что и надо было), т.к. сделать так чтобы при переходе на ссылку http://server/index.php?id=news показывало только надпись: Архив новостей. ???


Помещено polo 16-05-2003 в 20:11:

наоборот нужно сделать:
<?php
if ($id=='news' AND (!$news OR !isset($news))){ ?>
?>
Архив новостей!
<?php
}
else {
?>
Архив за май
<?php
а лучше всего так
if ($news) {
// показываем архив за месяц
} else {
// показываем архив новостей
}
?>

__________________
Всегда есть решение.


Помещено Димка 16-05-2003 в 20:27:

что-то я не понял: как мне теперь это все сделать так, чтобы работали сслыки:

http://server/index.php?id=news
http://server/index.php?id=news&news=januar
http://server/index.php?id=news&news=februar
http://server/index.php?id=news&news=mart
http://server/index.php?id=news&news=april
http://server/index.php?id=news&news=may
http://server/index.php?id=news&news=june
http://server/index.php?id=news&news=jule
http://server/index.php?id=news&news=august
http://server/index.php?id=news&news=september
http://server/index.php?id=news&news=november
http://server/index.php?id=news&news=december

и в каждой ссылке все было разное..


Помещено polo 16-05-2003 в 20:44:

if ($id === 'news') {
if (isset($news)) {
// показываем за месяц
} else {
// показываем архив
}
}

__________________
Всегда есть решение.


Помещено Димка 16-05-2003 в 20:48:

а почему три знака '='?
что такое isset?
--------------------------------
Если вам не трудно напишите для пару-тройку ссылок пример..


Помещено Rumata 16-05-2003 в 22:42:

Димка, на оба своих вопроса ты найдешь ответ по адресу www.php.net !


Помещено Димка 16-05-2003 в 23:21:

но там все по-английски, а я его не очень знаю..., поэтому мне трудно это будет найти, именно поэтому я здесь задаю вопросы...


Помещено Denveroid 16-05-2003 в 23:26:

Димка
if ($id === 'news')
=== возвращает TRUE, если значение одной переменной идентично значению другой, при условии, что обе сравнимые переменные одного типа.
isset() возвращает TRUE, если переменная имеет какое-либо значение. На замечательном сайте php.net есть действительно все ответы на вопросы начинающих. Не ленитесь, ищите, изучайте, познавайте.

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено he][es 17-05-2003 в 08:39:

Denveroid
А разве не "==" - идентичность значений?

__________________
Админ - вождь Апачей...


Помещено Denveroid 17-05-2003 в 11:38:

he][es
ага, но только он вернет TRUE и в таком случае:

PHP:


$a 
= "1"; // это стринг
$b = 1; // это integer
if($a==$b)
... 
// вернет TRUE
if($a===$b)
... 
// вернет FALSE

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено Димка 17-05-2003 в 11:47:

что такое string и что такое integer?

Димка добавил 17-05-2003 в 11:48:57:
и чем отличается:
if($name == test){}
от
if($name == 'test'){}
??


Помещено Rumata 17-05-2003 в 15:37:

quote:
Первоначальное сообщение от Димка
что такое string и что такое integer?

string и integer - типы данных вообще, в частности относится к переменным. В нормальных языках программирования (не php) нельзя переменной типа integer присвоить значение типа string. Кроме того, очевидно, переменные разных типов бессмысленно сравнивать, поэтому переменные разных типов сравнивать запрещено. В php все не так. Каждая переменная вообще-то имеет некий тип, но по большому счету, это никого не интересует. Например переменная $a = '1' имеет тип string, однако, можно написать $b = $a + 1; и в $b будет лежать значение 2. Все это вызывает некоторые затруднения при сравнении переменных. Например равно ли '2' просто 2? Для разрешения таких проблем приняты следующие операторы сравнения:
== проверяет совпадают ли значения "вообще". Т.е. 2 == '2' - истина.
=== проверяет еще и тип. Т.е. 2 === '2' это ложь.
quote:
Первоначальное сообщение от Димка
и чем отличается:
if($name == test){}
от
if($name == 'test'){}
?? [/B]

первое - вызовет ошибку, т.к. в php не сможет определить, что такое test - это не переменная, т.к. нет $, это не функция, т.к. на конце нет (), это не строка, т.к. все строки заключены в кавычки, это не число, т.к. в записи числа не может быть буквы t и т.д.


Помещено Димка 17-05-2003 в 16:42:

у меня дома на компе стоит сервер и php версии 4.2
и у меня работает хоть написано так:
if($name == test){}
хоть так:
if($name == 'test'){}

Димка добавил 17-05-2003 в 16:43:30:
почему?


Помещено Rumata 17-05-2003 в 19:21:

Просто пхп шибко умный. Попробуй написать так:

error_reporting(2047);
if($_GET['name'] == test){print 'ok';}

ты увидишь такое сообщение:
Notice: Use of undefined constant test - assumed 'test' in /home/rumata/public_html/test.php on line 3

Т.е. пхп увидел незнакомую строчку, понял, что это плохой программист =)) забыл поставить кавычки и фактически поставил их сам.


Помещено polo 17-05-2003 в 21:57:

если test еще и будет работать но вот te st никогда.

__________________
Всегда есть решение.


Помещено Silencer 18-05-2003 в 05:49:

А помоему Димка подразумевал вот это:

if ($id=='news' && $news='may') {
if ($id=='news' && $news='june') {

И так далее

__________________
Типа спициялист по елехтронной комэрцыи. Крут не по децки.


Помещено polo 18-05-2003 в 11:36:

quote:
А помоему Димка подразумевал вот это:

if ($id=='news' && $news='may') {
if ($id=='news' && $news='june') {

И так далее

полный изврат.

__________________
Всегда есть решение.


Помещено Silencer 18-05-2003 в 12:37:

There is more than one way to do it

switch($news) {
case 'may':
блабла;
break;
case 'jun':
юлаюла;
break;
}

Так лучше?

__________________
Типа спициялист по елехтронной комэрцыи. Крут не по децки.


Помещено polo 18-05-2003 в 14:33:

гораздо. Но всеравно нужно будет делать 12 одинаковых запросов к базе или откуда берутся данные. Я бы сделал так:
1. Проверить что $news содержит правильной значение.
2. Другие операции над $news.
3. Получение данных
Да и вообще этот параметр с месяцами не правилен. Тут можно полагаться только на один год, а если года два или больше? Имхо, $news должно содержать что-то типа 200305 или 2003-05 (год и месяц). При помощи регулярки получить параметры.

__________________
Всегда есть решение.


Помещено Rumata 18-05-2003 в 14:52:

Если уж улучшать, так надо просто писать запрос к базе данных вида SELECT bla bla bla WHERE time <= $t1 AND time >= $t2
это решит все проблемы =)


Помещено Denveroid 18-05-2003 в 19:25:

Rumata
SELECT bla bla bla WHERE time BETWEEN $t1 AND $t2
если уж на то пошло.
А вообще я вопроса не понял в первом сообщении. Задачу не понял...

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено Димка 18-05-2003 в 19:52:

НЕ, я подразумевал вот что:
<?php
if ($id == "news") {
if ($news == "jan"){ ?>
Новости за январь <?php }
elseif ($news == "feb"){ ?>
Новости за февраль <?php }
elseif ($news == "mar"){ ?>
Новости за март <?php }
elseif ($news == apr"){ ?>
Новости за апрель <?php }
elseif ($news == "may"){ ?>
Новости за май <?php }
elseif ($news == "jun"){ ?>
Новости за июнь <?php }
elseif ($news == "jul"){ ?>
Новости за июль <?php }
elseif ($news == "aug"){ ?>
Новости за август <?php }
elseif ($news == "sep"){ ?>
Новости за сентябрь <?php }
elseif ($news == "oct"){ ?>
Новости за октябрь <?php }
elseif ($news == "nov"){ ?>
Новости за ноябрь <?php }
elseif ($news == "dec"){ ?>
Новости за декабрь <?php }
else{ ?>
Выберите месяц (и естессно ссылки на file.php?id=news&new s=jan/feb/ и тд)
<?php
}
}
?>


Помещено Denveroid 18-05-2003 в 21:28:

Димка
тогда нужно делать примерно так, как посоветовал Polo.
То есть, передаешь скрипту параметры: file.php?year=2003&month=5&day=18 или file.php?2003/5/18 ну и т.д...
ну и тут уже сам бог велел разобраться Делай с этими параметрами все что хочешь.

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено Димка 18-05-2003 в 22:03:

Люди, а как сделать так, чтобы на странице показывало только 5 новостей, а внизу страницы были ссылки на 2, 3 и т.д. страницы...?


Помещено polo 18-05-2003 в 22:05:

http://netadmin.ws/forum/showthread...44266#post44266

__________________
Всегда есть решение.


Помещено SCHIZO 19-05-2003 в 10:07:

И не надоело вам условные выражения в таком количестве писать?

$months= Array('jan','feb', ....);

if (!empty($_GET['news']))
{
if (in_array($_GET['news']))
{
define('NEWS_MONTH',$_GET['news']);
# выводим новость
}
}

if (!defined('NEWS_MONTH'))
{
# вывод содежания
}

__________________
FAQ OFF


Помещено polo 20-05-2003 в 00:44:

да тема вообще непонятная, како-то пустяк на 2 страницы расстянули. Закрываем.

__________________
Всегда есть решение.


Формат времени GMT. Текущее время 04:52.
Показаны 33 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.