За последние 24 часа нас посетили 56784 программиста и 1750 роботов. Сейчас ищет 871 программист ...

Не пойму, из-за чего ошибка?

Тема в разделе "PHP для новичков", создана пользователем _virus_, 28 фев 2010.

  1. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Вот писал скрипт, вроде всё правильно сделал, но почемуто выдаёт ошибку:

    Parse error: syntax error, unexpected '}' in F:\city-chat\data\engine\files\item_actions\zags\frontend.php on line 76

    frontend.php:
    PHP:
    1. <?
    2. $file = $data_path."zags.dat";
    3. $data = file($file);
    4. $count_data = sizeof ($data);
    5. for ($i=0;$i<$count_data;$i++)
    6.     {
    7.     $current_data = explode("\t",$data[$i]);
    8.     if ($current_data[0]==$user_id)
    9.         {
    10. $zen1 = 1;
    11. $zen2 = $current_data[2];
    12.         break;
    13.         }
    14.     }
    15. if($zen1 = 1){?>
    16. <table>
    17. <form action="act_submit.php" method="post" name="del_zen">
    18.         <input type="Hidden" name="action_name" value="zags">
    19.         <input type="Hidden" name="is_regist" value="<? echo $is_regist; ?>">
    20.         <input type="Hidden" name="param[set]" value="1">
    21.         <input type="Hidden" name="session" value="<?=$session?>">
    22.         <tr>
    23.                 <td>Вы сделали предложение </td>
    24.                 <td><b><? echo $zen; ?></b></td>
    25.                 <td>ждите согласия</td>
    26.                 <Td><input type="Submit" class="input_button" value="Отказаться от свадьбы"></TD>
    27.         </tr>
    28. </form>
    29. </table>
    30. <? } else { ?>
    31. if($_POST['search']){
    32. set_variable("look_for");
    33. include($engine_path."users_get_list.php");
    34. $u_ids = array();
    35. $u_names = array();
    36. $tmp_body = "";
    37. $tmp_subject = "";
    38.  
    39. $info_message = "";
    40.  
    41. if (count($u_ids)) {
    42.     $user_to_search = $look_for;
    43.     include($ld_engine_path."users_search.php");
    44.     if (!count($u_ids)) $info_message = "<b>".str_replace("~","&quot;<b>".htmlspecialchars($look_for)."</b>&quot;",$w_search_no_found)."</b><br>"; ?>
    45.  
    46. <table>
    47. <form action="act_submit.php" method="post" name="zags">
    48.         <input type="Hidden" name="action_name" value="zags">
    49.         <input type="Hidden" name="is_regist" value="<? echo $is_regist; ?>">
    50.         <input type="Hidden" name="param[set]" value="1">
    51.         <input type="Hidden" name="session" value="<?=$session?>">
    52.         <tr>
    53.                 <td>Сделать предложение: </td>
    54.                 <td><select name="zen" style="{width:100px;height: 20px;}">
    55. <? for($i=0;$i<count($u_ids);$i++)
    56. {
    57.         echo "<option value=\"$u_ids[$i]\">";
    58.         echo $u_names[$i]."</option>\n";
    59. } ?></select></td>
    60.                 <Td><input type="Submit" class="input_button" value="Предложить"></TD>
    61.         </tr>
    62. </form>
    63. </table>
    64. <? } if (!count($u_ids)) { ?>
    65. <table>
    66. <form action="user_info.php" method="post" name="search">
    67.         <input type="Hidden" name="session" value="<?=$session?>">
    68.         <tr>
    69.                 <td>Сделать предложение: </td>
    70.                 <td><input type="text" name="look_for" value="" size=50></td>
    71.                 <Td><input type="Submit" class="input_button" value="Ok"></TD>
    72.         </tr>
    73. </form>
    74. </table>
    75. <? }
    76. }
    77. else { ?>
    78. <table>
    79. <form action="user_info.php" method="post" name="search">
    80.         <input type="Hidden" name="session" value="<?=$session?>">
    81.         <tr>
    82.                 <td>Сделать предложение: </td>
    83.                 <td><input type="text" name="look_for" value="" size=50></td>
    84.                 <Td><input type="Submit" class="input_button" value="Ok"></TD>
    85.         </tr>
    86. </form>
    87. </table><? } }?>
    88.  
     
  2. agent669212

    agent669212 Активный пользователь

    С нами с:
    15 дек 2009
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Новосибирск
    на линии 76 лишняя скобка
     
  3. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Эта скобка открывается на 31 строке: if($_POST['search']){
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    ?> тут не нужен.
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а php на той строчке отрабатывает? <? забыл. или на 30 зря ?> закрыл
     
  6. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Всё заработало, спасибо)
     
  7. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Подскажите пожалуйсто, почему у меня тут переменные: $zen2 и $info_user не ставятся?
    PHP:
    1.  
    2. $file = $data_path."zags.dat";
    3. $data = file($file);
    4. $count_data = sizeof ($data);
    5.     $fp = fopen ("$file","a+b");
    6.     flock ($fp,LOCK_EX);
    7.     fwrite($fp,$user_id.":".$current_user->nickname.":".$zen."\n");
    8.     flock ($fp,LOCK_UN);
    9.     fclose($fp);
    10. for ($i=0;$i<$count_data;$i++)
    11.     {
    12.     $current_data = explode(":",$data[$i]);
    13.     if ($current_data[0]==$user_id)
    14.         {
    15. $zen2 = "$current_data[3]";
    16. $info_user = "$current_data[1]";
    17. break;
    18.         }
    19.     }
    20. $mess = "Вы сделали предложение для $zen2";
    21. $flood_protection = 0;
    22. $w_rob_name = "Администрация";
    23. $messages_to_show[] = array(
    24. MESG_TIME=>my_time(),
    25. MESG_ROOM=>"1",
    26. MESG_FROM=>$w_rob_name,
    27. MESG_FROMWOTAGS=>$w_rob_name,
    28. MESG_FROMSESSION=>"",
    29. MESG_FROMID=>0,
    30. MESG_TO=>$info_user,
    31. MESG_TOSESSION=>"",
    32. MESG_TOID=>$is_regist,
    33. MESG_BODY=>$mess);
    34. include($engine_path."messages_put.php");
    35.  
     
  8. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    $zen2 = "$current_data[3]";
    $info_user = "$current_data[1]";

    какой сакральный смысл оборачивать в кавычки ???
    судя по логике кода, выполнение просто не заходит в эту ветку. то есть условие $current_data[0]==$user_id никогда не выполняется.
     
  9. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Ну в файле,значее $current_data[0] записанно как ид пользователя, а $user_id это собственный ид.
    Проверил echo $user_id; показывает норм
     
  10. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Ну вот весь код
    PHP:
    1.  
    2. <?
    3. set_variable("is_regist");
    4. $user_id = $is_regist;
    5. set_variable("zen");
    6. if($_POST['del_zen']){
    7. $file = $data_path."zags.dat";
    8. $data = file($file);
    9. $count_data = sizeof ($data);
    10. for ($i=0;$i<$count_data;$i++)
    11.     {
    12.     $current_data = explode(":",$data[$i]);
    13.     if ($current_data[0]==$user_id)
    14.         {
    15.         unset ($data[$i]);
    16.         $fp = fopen ("$file","a");
    17.         flock ($fp,LOCK_EX);
    18.         ftruncate ($fp,0);
    19.         for ($j=0;$j<$count_data;$j++)
    20.                 {
    21.                 fputs($fp ,"$data[$j]");
    22.                 }
    23.         fflush ($fp);
    24.         flock ($fp,LOCK_UN);
    25.         fclose ($fp);
    26.         break;
    27.         }
    28.     }
    29. } else{
    30. $zen = htmlspecialchars(trim($zen));
    31. if(strlen($zen) > 0) {
    32. $file = $data_path."zags.dat";
    33. $data = file($file);
    34. $count_data = sizeof ($data);
    35.     $fp = fopen ("$file","a+b");
    36.     flock ($fp,LOCK_EX);
    37.     fwrite($fp,$user_id.":".$current_user->nickname.":".$zen."\n");
    38.     flock ($fp,LOCK_UN);
    39.     fclose($fp);
    40. for ($i=0;$i<$count_data;$i++)
    41.     {
    42.     $current_data = explode(":",$data[$i]);
    43.     if ($current_data[0]==$user_id)
    44.         {
    45. $zen2 = "$current_data[3]";
    46. $info_user = "$current_data[1]";
    47. break;
    48.         }
    49.     }
    50. $mess = "Вы сделали предложение для $zen2";
    51. $flood_protection = 0;
    52. $w_rob_name = "Администрация";
    53. $messages_to_show[] = array(
    54. MESG_TIME=>my_time(),
    55. MESG_ROOM=>"1",
    56. MESG_FROM=>$w_rob_name,
    57. MESG_FROMWOTAGS=>$w_rob_name,
    58. MESG_FROMSESSION=>"",
    59. MESG_FROMID=>0,
    60. MESG_TO=>$current_user->nickname,
    61. MESG_TOSESSION=>"",
    62. MESG_TOID=>$is_regist,
    63. MESG_BODY=>$mess);
    64. include($engine_path."messages_put.php");
    65. $action_items[$action_id]['Quantity']--;
    66. if($action_items[$action_id]['Quantity']<=0)
    67. unset($action_items[$action_id]);}}
    68. ?>
    69.  
    Всё работает, кроме
    PHP:
    1.  
    2. for ($i=0;$i<$count_data;$i++)
    3.     {
    4.     $current_data = explode(":",$data[$i]);
    5.     if ($current_data[0]==$user_id)
    6.         {
    7. $zen2 = "$current_data[3]";
    8. $info_user = "$current_data[1]";
    9. break;
    10.         }
    11.     }
    12. $mess = "Вы сделали предложение для $zen2";
    13. $flood_protection = 0;
    14. $w_rob_name = "Администрация";
    15. $messages_to_show[] = array(
    16. MESG_TIME=>my_time(),
    17. MESG_ROOM=>"1",
    18. MESG_FROM=>$w_rob_name,
    19. MESG_FROMWOTAGS=>$w_rob_name,
    20. MESG_FROMSESSION=>"",
    21. MESG_FROMID=>0,
    22. MESG_TO=>$current_user->nickname,
    23. MESG_TOSESSION=>"",
    24. MESG_TOID=>$is_regist,
    25. MESG_BODY=>$mess);
    26. include($engine_path."messages_put.php");
    27.  
     
  11. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Вот содержимое файла
    42:_virus_:248:Girl
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кто-то очень любит кавычки и не знает как ими пользоваться
     
  13. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    блин и где я опять неправильно их поставил?
     
  14. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
     
  15. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Я и без ковычек пробывал
     
  16. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Думаю я правильно понял что вы имеете в виду, просто я програмировать начал недавно, ещё много чего в этом не понимаю.
     
  17. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    set_variable("is_regist");
    $user_id = $is_regist;

    во-первых, что такое set_variable? вероятно, я ее уже не застал (deprecated), потому что в официальном мануале о ней нет упоминаний. тем не менее, могу предположить, что ее назначение в создании переменной и присвоении ей какого-то значения, которое, судя по всему, должно быть вторым параметром.
    вопрос: какое значение после вызова этой функции должна содержать переменная $is_regist и следовательно $user_id?
    попробуй поменять
    $user_id = $is_regist;
    на
    $user_id = 42;
     
  18. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    _virus_
    В кавычки оборачивают строки, когда их задают:
    $var = "string";
    Когда присваивают переменной другую переменную или её выводят, то кавычек не нужно:
    $var = "$var2"; - не верно
    echo "$var" - не верно
    echo "$var[2]" - не верно



    PHP:
    1. <?php
    2. echo '<xmp>';
    3.  
    4.  for ($i=0;$i<$count_data;$i++)
    5.       {
    6.  
    7.       $current_data = explode(":",$data[$i]);
    8.       echo $current_data[0]."\r\n".$user_id.."\r\n";
    9.       var_dump(($current_data[0]==$user_id));
    10.       echo "\r\n";
    11.       if ($current_data[0]==$user_id)
    12.           {
    13.   $zen2 = "$current_data[3]";
    14.   $info_user = "$current_data[1]";
    15.   break;
    16.           }
    17.       }
     
  19. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    $user_id и так присвоенно значение 42

    Проверял echo $user_id;
     
  20. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Kreker

    $zen2 = "$current_data[3]";
    $info_user = "$current_data[1]";
    Вот это я и без ковычек пробывал, всёравно не работает :(
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    _virus_
    Значит, есть ошибка еще где-то. Но кавычки надо убрать.
     
  22. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Как я понял он значение $current_data[0] не может опредилить?
     
  23. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    _virus_
    print_r ($current_data);
     
  24. _virus_

    _virus_ Активный пользователь

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Перед этим сценарием поставил ещё одну
    PHP:
    1.  
    2. $file = $data_path."zags.dat";
    3. $data = file($file);
    4. $count_data = sizeof ($data);
    5.  
    И всё заработало, только не пойму почему.