Jump to content
  • 0

Что то не так с переменными, в чем дело может быть ?


horsethe
 Share

Question

Я немного помогаю на собственной инициативе в доработке игры. В общем задача была доработать файл помощи. что я собственно и сделала. Но пришлось немного изменить файл - добавить еще одну переменную. Итог: из трех переменных работает только 1. При ссылке на остальные переменные выводится пустая страница с одним только заглавием . Что из этого получилось можно посмотреть на http://rem-sot.ru/bot/faq.php (для теста заливала к себе на сайт)

http://www.188.ru/39749 тут скрипт сам .

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

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Мне кажется, что надо переделать вообще всё. Это же ужас какой-то, а не код.

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

Link to comment
Share on other sites

  • 0

Жесть... руки бы оторвать тому кто это изначально писал =))))

1) Организовать хранилище данных, не важно что это будет, хотя бы простейшим массивом в отдельном файле как нибудь так:


<?
$content["m"]["zdaniya"] = "текст";
$content["m"]["zdaniya2"] = "текст";

$content["n"]["zdaniya"] = "текст";
$content["n"]["zdaniya2"] = "текст";

$content["z"]["zdaniya"] = "текст";
$content["z"]["zdaniya2"] = "текст";
//и т.д.
?>

2) В вашем файле подключаем это хранилище:


<?

if (isset($_REQUEST['m'])) $m = $_REQUEST['m'];
if (isset($_REQUEST['n'])) $n = $_REQUEST['n'];
if (isset($_REQUEST['z'])) $z = $_REQUEST['z'];

require_once("content.php");//подключаем файл с массивом.

if(!isset($m)){
echo $content["m"][$m];//так выводим контент элемента массива
}
//далее вся ваша логическая структура
?>

Так вы хотя бы сможете править логическую структуру if...elseif...else , а с такой мешаниной как сейчас, там сам черт ногу сломит.

3) Некоторые условия вооще убрать из кода, ибо они станут ненужны к примеру вот такие моменты:


if(isset($z)){
if($z==1){
echo $content["z"][$z];
}elseif($z==2){
echo $content["z"][$z];
}elseif($z==3){
echo $content["z"][$z];
}
}

заменяются просто обращением к элементу массива по ключу, сравнение будет уже ненужно если переменная $z установлена и элеиент с нужным ключем существует в массиве:


if(isset($z)){
echo $content["z"][$z];
}

ЗЫ Конечно есть способы намного лучше этого, ну это будет хотя бы что-то, по сравнению с тем что есть сейчас )))

Edited by wwt
Link to comment
Share on other sites

  • 0

wwt,

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

Link to comment
Share on other sites

  • 0

wwt,

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

ну как вариант можно хранилище не массивом, а файлами, и инклюдить. Тагда не будет геморроя с кавычками у контента в массиве.

Link to comment
Share on other sites

  • 0

if(!isset($m)){
echo $content["m"][$m];//так выводим контент элемента массива
}
//далее вся ваша логическая структура
?>

Чего-то ты не то написал-то

А я мельком тот код просмотрел и вообще не увидел, где переменные передаются. По ссылкам потыкал, все открылись, текст есть.

М, так надо было в здания заходить.

А может быть, чтобы сервер не дёргать без дела, сделать эти разделы разворачивающимися через яваскрипт?

if (!isset($m))
{
print ("");
}
elseif ($m=="zdaniya")
{
if(!isset($n))
{
print("");
}
} //Вроде бы вот это вот косяк, эта скобка должна быть далеко внизу
elseif ($n=="ratusha")
{
if(!isset($z))
{
print("");
}
elseif($z=='spy')
{
print("");
}
elseif ($z=='grabber')
{
}
elseif ($z=…
}

Второй elseif не после той скобки воткнут, после какой надо. Я полагаю.

Может быть, переписать на switch-case? А то мозг сломать можно. Да и половина скобок лишняя. Хотя сейчас начнут кричать, что это эстетика

switch ($m)
{
case 'zdaniya':
switch($n)
{
case 'ratusha': require('ratusha.txt'); break;

}
break;
}

А вложенности внутри $n делать уже яваскриптом, например.

Ну и вместо

if (!isset($m))

проще делать так:

if (!isset($m)) $m = 'defalut';

switch($m)
{



default: require('default_m.txt');
}

Edited by Int
Link to comment
Share on other sites

  • 0

if(!isset($m)){
echo $content["m"][$m];//так выводим контент элемента массива
}
//далее вся ваша логическая структура
?>

Чего-то ты не то написал-то

та это просто пример был )) вообще занятно вышло согласен.

Link to comment
Share on other sites

  • 0

Всем спасибо. С if'ами косяк был . нашла исправила . все работает. ну почти все, только res_print обособлять двойными кавычками - появляется ошибка синтаксиса . Ну там думаю можно просто текстом заменить.. хотя и халтурка получится наверное ))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy