Вот писал скрипт, вроде всё правильно сделал, но почемуто выдаёт ошибку: Parse error: syntax error, unexpected '}' in F:\city-chat\data\engine\files\item_actions\zags\frontend.php on line 76 frontend.php: PHP: <? $file = $data_path."zags.dat"; $data = file($file); $count_data = sizeof ($data); for ($i=0;$i<$count_data;$i++) { $current_data = explode("\t",$data[$i]); if ($current_data[0]==$user_id) { $zen1 = 1; $zen2 = $current_data[2]; break; } } if($zen1 = 1){?> <table> <form action="act_submit.php" method="post" name="del_zen"> <input type="Hidden" name="action_name" value="zags"> <input type="Hidden" name="is_regist" value="<? echo $is_regist; ?>"> <input type="Hidden" name="param[set]" value="1"> <input type="Hidden" name="session" value="<?=$session?>"> <tr> <td>Вы сделали предложение </td> <td><b><? echo $zen; ?></b></td> <td>ждите согласия</td> <Td><input type="Submit" class="input_button" value="Отказаться от свадьбы"></TD> </tr> </form> </table> <? } else { ?> if($_POST['search']){ set_variable("look_for"); include($engine_path."users_get_list.php"); $u_ids = array(); $u_names = array(); $tmp_body = ""; $tmp_subject = ""; $info_message = ""; if (count($u_ids)) { $user_to_search = $look_for; include($ld_engine_path."users_search.php"); if (!count($u_ids)) $info_message = "<b>".str_replace("~",""<b>".htmlspecialchars($look_for)."</b>"",$w_search_no_found)."</b><br>"; ?> <table> <form action="act_submit.php" method="post" name="zags"> <input type="Hidden" name="action_name" value="zags"> <input type="Hidden" name="is_regist" value="<? echo $is_regist; ?>"> <input type="Hidden" name="param[set]" value="1"> <input type="Hidden" name="session" value="<?=$session?>"> <tr> <td>Сделать предложение: </td> <td><select name="zen" style="{width:100px;height: 20px;}"> <? for($i=0;$i<count($u_ids);$i++) { echo "<option value=\"$u_ids[$i]\">"; echo $u_names[$i]."</option>\n"; } ?></select></td> <Td><input type="Submit" class="input_button" value="Предложить"></TD> </tr> </form> </table> <? } if (!count($u_ids)) { ?> <table> <form action="user_info.php" method="post" name="search"> <input type="Hidden" name="session" value="<?=$session?>"> <tr> <td>Сделать предложение: </td> <td><input type="text" name="look_for" value="" size=50></td> <Td><input type="Submit" class="input_button" value="Ok"></TD> </tr> </form> </table> <? } } else { ?> <table> <form action="user_info.php" method="post" name="search"> <input type="Hidden" name="session" value="<?=$session?>"> <tr> <td>Сделать предложение: </td> <td><input type="text" name="look_for" value="" size=50></td> <Td><input type="Submit" class="input_button" value="Ok"></TD> </tr> </form> </table><? } }?>
Подскажите пожалуйсто, почему у меня тут переменные: $zen2 и $info_user не ставятся? PHP: $file = $data_path."zags.dat"; $data = file($file); $count_data = sizeof ($data); $fp = fopen ("$file","a+b"); flock ($fp,LOCK_EX); fwrite($fp,$user_id.":".$current_user->nickname.":".$zen."\n"); flock ($fp,LOCK_UN); fclose($fp); for ($i=0;$i<$count_data;$i++) { $current_data = explode(":",$data[$i]); if ($current_data[0]==$user_id) { $zen2 = "$current_data[3]"; $info_user = "$current_data[1]"; break; } } $mess = "Вы сделали предложение для $zen2"; $flood_protection = 0; $w_rob_name = "Администрация"; $messages_to_show[] = array( MESG_TIME=>my_time(), MESG_ROOM=>"1", MESG_FROM=>$w_rob_name, MESG_FROMWOTAGS=>$w_rob_name, MESG_FROMSESSION=>"", MESG_FROMID=>0, MESG_TO=>$info_user, MESG_TOSESSION=>"", MESG_TOID=>$is_regist, MESG_BODY=>$mess); include($engine_path."messages_put.php");
$zen2 = "$current_data[3]"; $info_user = "$current_data[1]"; какой сакральный смысл оборачивать в кавычки ??? судя по логике кода, выполнение просто не заходит в эту ветку. то есть условие $current_data[0]==$user_id никогда не выполняется.
Ну в файле,значее $current_data[0] записанно как ид пользователя, а $user_id это собственный ид. Проверил echo $user_id; показывает норм
Ну вот весь код PHP: <? set_variable("is_regist"); $user_id = $is_regist; set_variable("zen"); if($_POST['del_zen']){ $file = $data_path."zags.dat"; $data = file($file); $count_data = sizeof ($data); for ($i=0;$i<$count_data;$i++) { $current_data = explode(":",$data[$i]); if ($current_data[0]==$user_id) { unset ($data[$i]); $fp = fopen ("$file","a"); flock ($fp,LOCK_EX); ftruncate ($fp,0); for ($j=0;$j<$count_data;$j++) { fputs($fp ,"$data[$j]"); } fflush ($fp); flock ($fp,LOCK_UN); fclose ($fp); break; } } } else{ $zen = htmlspecialchars(trim($zen)); if(strlen($zen) > 0) { $file = $data_path."zags.dat"; $data = file($file); $count_data = sizeof ($data); $fp = fopen ("$file","a+b"); flock ($fp,LOCK_EX); fwrite($fp,$user_id.":".$current_user->nickname.":".$zen."\n"); flock ($fp,LOCK_UN); fclose($fp); for ($i=0;$i<$count_data;$i++) { $current_data = explode(":",$data[$i]); if ($current_data[0]==$user_id) { $zen2 = "$current_data[3]"; $info_user = "$current_data[1]"; break; } } $mess = "Вы сделали предложение для $zen2"; $flood_protection = 0; $w_rob_name = "Администрация"; $messages_to_show[] = array( MESG_TIME=>my_time(), MESG_ROOM=>"1", MESG_FROM=>$w_rob_name, MESG_FROMWOTAGS=>$w_rob_name, MESG_FROMSESSION=>"", MESG_FROMID=>0, MESG_TO=>$current_user->nickname, MESG_TOSESSION=>"", MESG_TOID=>$is_regist, MESG_BODY=>$mess); include($engine_path."messages_put.php"); $action_items[$action_id]['Quantity']--; if($action_items[$action_id]['Quantity']<=0) unset($action_items[$action_id]);}} ?> Всё работает, кроме PHP: for ($i=0;$i<$count_data;$i++) { $current_data = explode(":",$data[$i]); if ($current_data[0]==$user_id) { $zen2 = "$current_data[3]"; $info_user = "$current_data[1]"; break; } } $mess = "Вы сделали предложение для $zen2"; $flood_protection = 0; $w_rob_name = "Администрация"; $messages_to_show[] = array( MESG_TIME=>my_time(), MESG_ROOM=>"1", MESG_FROM=>$w_rob_name, MESG_FROMWOTAGS=>$w_rob_name, MESG_FROMSESSION=>"", MESG_FROMID=>0, MESG_TO=>$current_user->nickname, MESG_TOSESSION=>"", MESG_TOID=>$is_regist, MESG_BODY=>$mess); include($engine_path."messages_put.php");
Думаю я правильно понял что вы имеете в виду, просто я програмировать начал недавно, ещё много чего в этом не понимаю.
set_variable("is_regist"); $user_id = $is_regist; во-первых, что такое set_variable? вероятно, я ее уже не застал (deprecated), потому что в официальном мануале о ней нет упоминаний. тем не менее, могу предположить, что ее назначение в создании переменной и присвоении ей какого-то значения, которое, судя по всему, должно быть вторым параметром. вопрос: какое значение после вызова этой функции должна содержать переменная $is_regist и следовательно $user_id? попробуй поменять $user_id = $is_regist; на $user_id = 42;
_virus_ В кавычки оборачивают строки, когда их задают: $var = "string"; Когда присваивают переменной другую переменную или её выводят, то кавычек не нужно: $var = "$var2"; - не верно echo "$var" - не верно echo "$var[2]" - не верно PHP: <?php echo '<xmp>'; for ($i=0;$i<$count_data;$i++) { $current_data = explode(":",$data[$i]); echo $current_data[0]."\r\n".$user_id.."\r\n"; var_dump(($current_data[0]==$user_id)); echo "\r\n"; if ($current_data[0]==$user_id) { $zen2 = "$current_data[3]"; $info_user = "$current_data[1]"; break; } }
Kreker $zen2 = "$current_data[3]"; $info_user = "$current_data[1]"; Вот это я и без ковычек пробывал, всёравно не работает
Перед этим сценарием поставил ещё одну PHP: $file = $data_path."zags.dat"; $data = file($file); $count_data = sizeof ($data); И всё заработало, только не пойму почему.