За последние 24 часа нас посетили 17483 программиста и 1690 роботов. Сейчас ищут 965 программистов ...

Как исправить ошибку?

Тема в разделе "PHP и базы данных", создана пользователем KOMn1992, 13 янв 2015.

  1. KOMn1992

    KOMn1992 Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    18
    Симпатии:
    0
    Выводит вот такие ошибки:
    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):
    1.  if ($if>0) { // проверка
    2.          //Есть ли новый эпизода  в диалоге
    3.          if (isset($dialog[$dialog[$status[talk][epicid]][variants][$_GET[select]]["to"]])) {
    4.             $status[talk][epicid]= $dialog[$status[talk][epicid]][variants][$_GET[select]]["to"];
    5.             $reply=$dialog[$status[talk][epicid]][reply];
    6.             $zagolovok=$obj_list[$status[talk][objid]][name];
    7.             if  ($status[talk][epicid]=="end") {$status[talk]="no";$end=1;}
    8.             $tmp=serialize($status);
    9.             $sql=mysql_query("UPDATE users SET status='$tmp' WHERE id='$player[id]' LIMIT 1");
    10.             eval($dialog[$status[talk][epicid]][on_enter]); // выполнение кода ВОТ ТУТ ОШИБКА
    11.          }
    2-ая ошибка.
    Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 69
    Код (Text):
    1. if  ($status[talk][epicid]=="trade") //вот тут ошибка
    2. {       $page.="<br/><a href='./?trade=buy&amp;npc=".$status[talk][objid]."'>Купить</a>";
    3.     $page.="<br/><a href='./?trade=sell&amp;npc=".$status[talk][objid]."'>Продать</a>";
    4.     $status[talk]="no";
    5.     $tmp=serialize($status);
    6.     $sql=mysql_query("UPDATE users SET status='$tmp' WHERE id='$player[id]' LIMIT 1");
    7.     $end=1;
    8.    }
    Ну и 3-яя
    Warning: Illegal string offset 'epicid' in /home/virtwww/w_tstra-ru_4e5f0a2d/http/gamefiles1704/talk.php on line 77
    Код (Text):
    1. elseif  ($status[talk][epicid]=="bank") //вот тут ошибка
    2. {       $page.="<br/><a href='./?bank=from'>Забрать</a>";
    3.     $page.="<br/><a href='./?bank=to'>Положить</a>";
    4.     $status[talk]="no";
    5.     $tmp=serialize($status);
    6.     $sql=mysql_query("UPDATE users SET status='$tmp' WHERE id='$player[id]' LIMIT 1");
    7.     $end=1;
    8.    }
    Ребят как исправить????
    Заранее огромное спасибо!!!
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    попробую предположить, что весь косяк от этих переменных где не хватает $ - [$status[talk][epicid]][variants]

    видимо должно быть так - [$status[$talk][$epicid]][$variants]
     
  3. KOMn1992

    KOMn1992 Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    18
    Симпатии:
    0
    Не не помогло:(
    И кстати забыл отметить что на локальном сервере всё норм а на хосте выдаёт ошибку:((
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    а чему равны эти переменные? можно код откуда они берутся - $talk, $epicid, $variants
     
  5. KOMn1992

    KOMn1992 Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    18
    Симпатии:
    0
    Ну вот например вроде отсюды:)

    Код (Text):
    1. if (isset($_POST[epicid])) {
    2.             $dialog[$_POST[epicid]]=array("on_enter"=>$_POST[on_enter],"reply"=>$_POST[reply]);
    3.             $tmp=serialize($dialog);
    4.             $sql=mysql_query("UPDATE talk SET dialog='$tmp' WHERE talkid='$_GET[redact]' LIMIT 1");
    5.             $page.=mysql_error()."<br/>Эпизод $_POST[epicid] добавлен";
    6.             $_GET["var"]=$_POST[epicid];
    7.          }
    И вот
    Код (Text):
    1. else {
    2.          $page.="<form action='$link&amp;var=$_GET[var]' method='post'>
    3.             <br/><b>Episode ID: </b> $_GET[var]<br/>
    4.             <br/>ON_ENTER<br/><textarea name='on_enter' rows='4' cols='30' >".$dialog[$_GET["var"]][on_enter]."</textarea>
    5.             <br/>Reply<br/><textarea name='reply' rows='4' cols='30' >".$dialog[$_GET["var"]][reply]."</textarea>
    6.             <br/><input type='submit' value='Изменить' />
    7.             </form>";
    8.             if (!is_array($dialog[$_GET["var"]][variants])) {$page.="<br/>Реплик нет!";}
    9.             else {
    10.                 $variants=$dialog[$_GET["var"]][variants];
    11.                 for ($i=0;$i<sizeof($variants);$i++) {
    12.                     $page.="<br/>IF (".$variants[$i]["if"].")";
    13.                     $page.="<br/><a href='$link&amp;var=$_GET[var]&amp;id=$i'>{".$variants[$i]["text"]."}</a>=><a href='$link&amp;var=".$variants[$i]["to"]."'>".$variants[$i]["to"]."</a>";
    14.                 }
    15.             }
    16.         }
    17.         $page.="<br/><br/><a href='$link&amp;var=$_GET[var]&amp;id=new'>Новая реплика</a><br/>";
    18.      }
    19.  
    20.  
    21.     }
    22.     if (is_array($dialog )){
    23.      foreach ($dialog as $key=>$value) {
    24.             $page.="<br/><a href='$link&amp;var=$key'>".$key."</a>
    25.             <a href='$link&amp;delvar=$key'>[X]</a>";
    26.         }
    27.         }
    28.        $page.="<br/>";
    29.  
    30.  
    31.  
    32.     $page.="<br/><a href='$link&amp;tmp=new'>Добавить новый эпизод</a>";
    33.     $page.="<br/><a href='./?do=admin&amp;mod=dialog'>К списку диалогов</a>";
    34.  }
    И вот:) talk это таблица в БД

    Код (Text):
    1. if (!empty($_POST[talkid])) {
    2.      $dialog["end"][reply]="byi";
    3.      $dialog["begin"][reply]="hi";
    4.      $dialog=serialize($dialog);
    5.      $sql=mysql_query("INSERT INTO talk (talkid,name,dialog) VALUES ('$_POST[talkid]','$_POST[name]','$dialog');");
    6.      $page.="<br/>Диалог $_POST[name] добавлен<br/>";
    7.  
    8.     }
    9.     else {
    10.         $page.="<br/><form action='./?do=admin&amp;mod=dialog&amp;tmp=new' method='post'>
    11.         <br />TALK ID<br /><input type='text' name='talkid'  value='' />
    12.         <br />Имя<br /><input type='text' name='name'  value='' />
    13.         <br /><input type='submit' value='Добавить' /><br />
    14.         </form><br />";
    15.     }
    16.     $page.="<br/><a href='./?do=admin&amp;mod=dialog'>К списку диалогов</a>";
    17.  }
    Добавлено спустя 2 минуты 1 секунду:

    Я новичёк:) Может что не то написал:) Скрипт модернизирую и попадаются бывает места где нуплю:)
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    не то...

    нужно то место где они инициируются... что то типа - talk = ??? , epicid = ??? , variants = ???
     
  7. KOMn1992

    KOMn1992 Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    18
    Симпатии:
    0
    Вот это всё что есть со знаком равно после epicid:))
    Код (Text):
    1. $tmp=array("objid"=>$_GET[talk],"talkid"=>$obj_list[$_GET[talk]][status][talkid],"epicid"=>"begin");
    Код (Text):
    1. $status[talk][epicid]= $dialog[$status[talk][epicid]][variants][$_GET[select]]["to"];
    Код (Text):
    1. if  ($status[talk][epicid]=="end") {$status[talk]="no";$end=1;}
    Код (Text):
    1. if  ($status[talk][epicid]=="trade")
    Код (Text):
    1. elseif  ($status[talk][epicid]=="bank")
    Код (Text):
    1. if  ($end==1 or $status[talk][epicid]=="end")
     
  8. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    по коду очень много синтаксических ошибок...
    например, $_POST[talkid] - это не правильно....Правильно будет - $_POST['talkid']
    тоже самое и с $_GET[talk] - не верно, $_GET['talk'] - правильно...

    Возможно отсюда и лезут косяки.... И по этому запись которую я уже говорил выше " $status[$talk][$epicid]][$variants] " - это правильная запись..
    Нужно почистить код от мусора в общем ;)
     
  9. KOMn1992

    KOMn1992 Новичок

    С нами с:
    8 янв 2015
    Сообщения:
    18
    Симпатии:
    0
    Пошевилил извилинами и разобрался:)
    p@R@dox спасобо в чём то и ты помог:)