Выводит вот такие ошибки: Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 51 Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 69 Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 77 Вот куски кода: 1-ая ошибка. Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 51 Код (Text): if ($if>0) { // проверка //Есть ли новый эпизода в диалоге if (isset($dialog[$dialog[$status[talk][epicid]][variants][$_GET[select]]["to"]])) { $status[talk][epicid]= $dialog[$status[talk][epicid]][variants][$_GET[select]]["to"]; $reply=$dialog[$status[talk][epicid]][reply]; $zagolovok=$obj_list[$status[talk][objid]][name]; if ($status[talk][epicid]=="end") {$status[talk]="no";$end=1;} $tmp=serialize($status); $sql=mysql_query("UPDATE users SET status='$tmp' WHERE id='$player[id]' LIMIT 1"); eval($dialog[$status[talk][epicid]][on_enter]); // выполнение кода ВОТ ТУТ ОШИБКА } 2-ая ошибка. Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 69 Код (Text): if ($status[talk][epicid]=="trade") //вот тут ошибка { $page.="<br/><a href='./?trade=buy&npc=".$status[talk][objid]."'>Купить</a>"; $page.="<br/><a href='./?trade=sell&npc=".$status[talk][objid]."'>Продать</a>"; $status[talk]="no"; $tmp=serialize($status); $sql=mysql_query("UPDATE users SET status='$tmp' WHERE id='$player[id]' LIMIT 1"); $end=1; } Ну и 3-яя Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 77 Код (Text): elseif ($status[talk][epicid]=="bank") //вот тут ошибка { $page.="<br/><a href='./?bank=from'>Забрать</a>"; $page.="<br/><a href='./?bank=to'>Положить</a>"; $status[talk]="no"; $tmp=serialize($status); $sql=mysql_query("UPDATE users SET status='$tmp' WHERE id='$player[id]' LIMIT 1"); $end=1; } Ребят как исправить???? Заранее огромное спасибо!!!
попробую предположить, что весь косяк от этих переменных где не хватает $ - [$status[talk][epicid]][variants] видимо должно быть так - [$status[$talk][$epicid]][$variants]
Ну вот например вроде отсюды Код (Text): if (isset($_POST[epicid])) { $dialog[$_POST[epicid]]=array("on_enter"=>$_POST[on_enter],"reply"=>$_POST[reply]); $tmp=serialize($dialog); $sql=mysql_query("UPDATE talk SET dialog='$tmp' WHERE talkid='$_GET[redact]' LIMIT 1"); $page.=mysql_error()."<br/>Эпизод $_POST[epicid] добавлен"; $_GET["var"]=$_POST[epicid]; } И вот Код (Text): else { $page.="<form action='$link&var=$_GET[var]' method='post'> <br/><b>Episode ID: </b> $_GET[var]<br/> <br/>ON_ENTER<br/><textarea name='on_enter' rows='4' cols='30' >".$dialog[$_GET["var"]][on_enter]."</textarea> <br/>Reply<br/><textarea name='reply' rows='4' cols='30' >".$dialog[$_GET["var"]][reply]."</textarea> <br/><input type='submit' value='Изменить' /> </form>"; if (!is_array($dialog[$_GET["var"]][variants])) {$page.="<br/>Реплик нет!";} else { $variants=$dialog[$_GET["var"]][variants]; for ($i=0;$i<sizeof($variants);$i++) { $page.="<br/>IF (".$variants[$i]["if"].")"; $page.="<br/><a href='$link&var=$_GET[var]&id=$i'>{".$variants[$i]["text"]."}</a>=><a href='$link&var=".$variants[$i]["to"]."'>".$variants[$i]["to"]."</a>"; } } } $page.="<br/><br/><a href='$link&var=$_GET[var]&id=new'>Новая реплика</a><br/>"; } } if (is_array($dialog )){ foreach ($dialog as $key=>$value) { $page.="<br/><a href='$link&var=$key'>".$key."</a> <a href='$link&delvar=$key'>[X]</a>"; } } $page.="<br/>"; $page.="<br/><a href='$link&tmp=new'>Добавить новый эпизод</a>"; $page.="<br/><a href='./?do=admin&mod=dialog'>К списку диалогов</a>"; } И вот talk это таблица в БД Код (Text): if (!empty($_POST[talkid])) { $dialog["end"][reply]="byi"; $dialog["begin"][reply]="hi"; $dialog=serialize($dialog); $sql=mysql_query("INSERT INTO talk (talkid,name,dialog) VALUES ('$_POST[talkid]','$_POST[name]','$dialog');"); $page.="<br/>Диалог $_POST[name] добавлен<br/>"; } else { $page.="<br/><form action='./?do=admin&mod=dialog&tmp=new' method='post'> <br />TALK ID<br /><input type='text' name='talkid' value='' /> <br />Имя<br /><input type='text' name='name' value='' /> <br /><input type='submit' value='Добавить' /><br /> </form><br />"; } $page.="<br/><a href='./?do=admin&mod=dialog'>К списку диалогов</a>"; } Добавлено спустя 2 минуты 1 секунду: Я новичёк Может что не то написал Скрипт модернизирую и попадаются бывает места где нуплю
не то... нужно то место где они инициируются... что то типа - talk = ??? , epicid = ??? , variants = ???
Вот это всё что есть со знаком равно после epicid) Код (Text): $tmp=array("objid"=>$_GET[talk],"talkid"=>$obj_list[$_GET[talk]][status][talkid],"epicid"=>"begin"); Код (Text): $status[talk][epicid]= $dialog[$status[talk][epicid]][variants][$_GET[select]]["to"]; Код (Text): if ($status[talk][epicid]=="end") {$status[talk]="no";$end=1;} Код (Text): if ($status[talk][epicid]=="trade") Код (Text): elseif ($status[talk][epicid]=="bank") Код (Text): if ($end==1 or $status[talk][epicid]=="end")
по коду очень много синтаксических ошибок... например, $_POST[talkid] - это не правильно....Правильно будет - $_POST['talkid'] тоже самое и с $_GET[talk] - не верно, $_GET['talk'] - правильно... Возможно отсюда и лезут косяки.... И по этому запись которую я уже говорил выше " $status[$talk][$epicid]][$variants] " - это правильная запись.. Нужно почистить код от мусора в общем