За последние 24 часа нас посетили 16443 программиста и 1676 роботов. Сейчас ищут 868 программистов ...

Ошибка Parse error

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

  1. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    Добрый день. Написал небольшой скрипт для изменения данных базы сайта, а он выдает ошибку, как не круче, как не изменяю код, ошибку убрать не могу -



    PHP:
    1. <?PHP
    2.  $conn = mysql_connect ("localhost:3306", "*****", "*****") or die ("Соединение не установлено!");
    3.    mysql_select_db ("*****", $conn);
    4.    mysql_query ("set character_set_client='cp1251'");  
    5.    mysql_query ("set character_set_results='cp1251'");  
    6.    mysql_query ("set collation_connection='cp1251_general_ci'");  
    7.    
    8.    $sql = 'SELECT * FROM `dle_post` WHERE `short_story` LIKE "%http%" AND `autor` LIKE "wolf"';
    9.    $result = mysql_query($sql);
    10.  
    11.     for ($j=1;$j<208;$j++)
    12.    {
    13.    $rw = mysql_fetch_array($result, MYSQL_BOTH);
    14.    echo "id={$rw['id']}";
    15.    while ($i=strpos($rw['short_story'],"http"))
    16.     {
    17.      $k=strpos($rw['short_story'],"<br",$i);
    18.      $rw['short_story']=substr($rw['short_story'],0,$i).substr($rw['short_story'],$k);
    19.      }
    20.    $sql=" UPDATE `dle_post` SET `short_story` = '".$rw[short_story]."' WHERE `dle_post`.`id` =".$rw[id];
    21.    if (mysql_query ($sql)) echo (" Занесено в базу<br>");
    22.    else echo ("Invalid query: " . mysql_error());
    23.       }  
    24. ?>
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home2/wolfston/public_html/runcib.ru/nolink.php on line 20

    20 строку переписывал раз 10, менял " на ' , переносил переменные внутрь, выносил за скобки, окружал их фигурными скобками, не помогает :cry:[/php]
     
  2. $rw['short_story']
    $rw['id']
     
  3. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    не помогло
     
  4. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    $k=strpost($rw['short_story'],"<br",$i);

    <br>

    и концовка разве можно так делать.... $sql на 20-й строке ... какае-то...
     
  5. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2.   $conn = mysql_connect ("localhost:3306", "*****", "*****") or die ("Соединение не установлено!");
    3.    mysql_select_db ("*****", $conn);
    4.    mysql_query ("set character_set_client='cp1251'");  
    5.    mysql_query ("set character_set_results='cp1251'");  
    6.    mysql_query ("set collation_connection='cp1251_general_ci'");  
    7.    
    8.    $sql = 'SELECT * FROM `dle_post` WHERE `short_story` LIKE "%http%" AND `autor` LIKE "wolf" LIMIT 208';
    9.    $result = mysql_query($sql);
    10.  
    11.    while ($rw = mysql_fetch_array($result)) {
    12.         if ( strpos($rw['short_story'], 'http')!==false)  {
    13.             $k=strpost($rw['short_story'],"<br",$i);
    14.             $rw['short_story']=substr($rw['short_story'],0,$i).substr($rw['short_story'],$k);
    15.            
    16.             $sql=" UPDATE `dle_post` SET `short_story` = '".$rw['short_story']."' WHERE `dle_post`.`id` =".$rw['id'];
    17.             if (mysql_query ($sql)) echo (" Занесено в базу<br>");
    18.             else echo ("Invalid query: " . mysql_error());
    19.         }
    20.    }
    21.  
    22.  
    на мой взгляд это должно выглядеть както так
     
  6. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    alexeurodnepr BR бывают такие <br> и такие <br />, но ваше замечание не втему.

    Frozen спасибо за попытку оптимизировать программу путем ее уродства и приведения ее в неробочий вариант, мне нужна помощь только по одной строке, а вы на досуге подумайте, где в том что вы написали присваивается значение переменной $i и как ваш код отреагирует если в в переменной $rw['short_story'] будет 2 или больше строчек начинающихся http?

    Ребята, мне не надо оптимизировать код, который я буду один раз запускать, не надо пытаться менять алгоритм, смысл которого вам не понятен, мне нужна всего лишь помощь в ошибке.
    Такое впечатление что в этом разделе для нубов сидят одни нубы, и не кто не может помочь с проблемой, видимо надо было постить в другой раздел.
     
  7. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    DukeNukem вызывающе, но пока по делу.
    в какой строчке говорит ошибку сейчас и что за функция strpost? ты что-то не показал и заставляешь нас гадать.
     
  8. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    там опечатка, имелась в виду функция strpos
    ошибка в 20 строке, как я не менял формат этой строки, ошибка не менялась
     
  9. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    Только что проверил, работает, по всей видимости проблема была у хостера, судя по новостям они вчера сервак переносили, и видимо php криво работал сейчас эта ошибка не выпадает
     
  10. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    DukeNukem, проблема была не на серваке, а у ВАС В КОДЕ !!!

    PHP:
    1. <?php
    2. $rw['short_story'] = "Тест";
    3. $rw['id'] = 5;
    4. $sql="UPDATE `dle_post` SET `short_story` = '$rw['short_story']' WHERE `dle_post`.`id` =$rw['id']";
    5. echo $sql;
    6. ?>
    Выведет ошибку
    Просто интерпретатор запутался в апостофах !!!

    С самого начала в вашем коде, опубликованном здесь, было другое сообщение об ошибке!!!

    А в показанном коде флоппик еще в первом ответе описал проблему в строке !!!
     
  11. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    PHP:
    1. <?PHP
    2.  $conn = mysql_connect ("localhost:3306", "******", "******") or die ("Соединение не установлено!");
    3.    mysql_select_db ("*****", $conn);
    4.    mysql_query ("set character_set_client='cp1251'");  
    5.    mysql_query ("set character_set_results='cp1251'");  
    6.    mysql_query ("set collation_connection='cp1251_general_ci'");  
    7.    
    8.    $sql = 'SELECT * FROM `dle_post` WHERE `short_story` LIKE "%http%" AND `autor` LIKE "wolf"';
    9.    $result = mysql_query($sql);
    10.  
    11.     for ($j=1;$j<208;$j++)
    12.    {
    13.    $rw = mysql_fetch_array($result, MYSQL_BOTH);
    14.    echo "id={$rw['id']}";
    15.    while ($i=strpos($rw['short_story'],"http"))
    16.     {
    17.      $k=strpos($rw['short_story'],"<br",$i);
    18.      if ($k>0) $rw['short_story']=substr($rw['short_story'],0,$i).substr($rw['short_story'],$k);
    19.      else $rw['short_story']=substr($rw['short_story'],0,$i);
    20.      }
    21.    $sql=" UPDATE `dle_post` SET `short_story` = '".$rw[short_story]."' WHERE `dle_post`.`id` =".$rw[id];
    22.    if (mysql_query ($sql)) echo (" Занесено в базу<br>");
    23.    else echo ("Invalid query: " . mysql_error());
    24.       }  
    25. ?>
    Вот вобщемто скрипт который уже отработал и выполнил то ради чего задумывался, учитывая что строка на которую ругался php не изменилась, так и хочется кинуть чемто тяжолым в своего хостера :)

    Вобщем мораль сей басни такова - видимо, если не можешь найти ошибку, особенно в случае ее отсутствия, нужно попробывать на другой версии php :)
     
  12. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    DukeNukem Читайте выше!!!
     
  13. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    unicross
    специально для вас напишу, прежде чем написать сюда я эту строку писал так -

    PHP:
    1. $sql=" UPDATE `dle_post` SET `short_story` = '".$rw['short_story']."' WHERE `dle_post`.`id` =".$rw['id'];
    и так
    PHP:
    1. $sql=" UPDATE `dle_post` SET `short_story` = '{$rw['short_story']}' WHERE `dle_post`.`id` ={$rw['id']}";
    и так
    PHP:
    1. $sql=' UPDATE `dle_post` SET `short_story` = "'.$rw['short_story'].'" WHERE `dle_post`.`id` ='.$rw['id'];
    и еще многими другими способами
    и каждый раз была одна и таже ошибка.
    У меня уже мозги плавились, но результат не менялся, так что виноват интерпритатор php
     
  14. Вы уж изаините его. Он просто слегка прихуел от вашего интеллекта, вот так и получилось. Он нечаянно, правда...
     
  15. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    торможу)
     
  16. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    DukeNukem, объясните мне глупому ПОЧЕМУ эта строка до сих пор выглядет так:
    Нашли чем гордиться. Написали с ошибкой и вините PHP во всем...
    После изменений загружать файл на сайт по FTP не пробовали??? :wink:
     
  17. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    Код (Text):
    1.  $sql=" UPDATE `dle_post` SET `short_story` = '".$rw[short_story]."' WHERE `dle_post`.`id` =".$rw[id];
    Потому что, если не ошибаюсь синтаксис PHP это допускает.

    Хз, вначале загружал через файл менеджер с-панели, сегодня через фтп, это что имеет значение?

    А вобще, скрипт отработал, данный вопрос уже значения не имеет, разве что чисто риторическое :)
     
  18. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Ошибаетесь... Привыкли работать с отключенными предупреждениями...
    PHP:
    1. <?php
    2. $rw['short_story'] = "Тест";
    3. $rw['id'] = 5;
    4. $sql="UPDATE `dle_post` SET `short_story` = '" . $rw[short_story] . "' WHERE `dle_post`.`id` =" . $rw[id];
    5. echo $sql;
    6. ?>
    Выведет:

    Код (Text):
    1. Notice: Use of undefined constant short_story - assumed 'short_story' in C:\Apache\htdocs\test.php on line 5
    2. Notice: Use of undefined constant id - assumed 'id' in C:\Apache\htdocs\test.php on line 5
    Важно чтобы новый файл попал на сервер... У вас он не обновлялся...
     
  19. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    Думаю обновлялся, я его сегодня слил по фтп, потому как писал на другом компьютере, поменял strpost на strpos, залил обратно и запустил, он конечно выдал ошибку, переполнения памяти, так как в алгоритме был косяк, я подправил и он заработал.

    Нечего я не изменял с того момента как он ругался на 20 строчку. Я сам понять не могу.
    Изначально я писал скобки в $rw['short_story'], но после того как он начал ругатся на эту строчку я их и убирал и добавлял и переиначивал, как только мог.

    Я лично грешу на это -

    12.02.2009
    После переноса некоторых аккаунов вам необходимо сменить NS сервера.
    Делается это так:
    1. Проверяем в CPanel слева (где вся инфа о аккаунте) пункт Server Name и если там написано s4 то вам необходимо выполнить следующее:
    2. В панели управления доменом в разделе "изменить именной сервер" для:
    ****
    Если вы не указывали ip, а указывали только наши ns, то вам этого делать не нужно. Все перенесется само собой.
    Новость продублирована в рассылке. Рекомендуем подписаться всем клиентам.

    Само собой мой сайт перехал :)
    Других обьяснений не вижу
     
  20. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    б..ять пипец
     
  21. neyr00n

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

    С нами с:
    29 ноя 2007
    Сообщения:
    106
    Симпатии:
    0
    DukeNukem, и этот скрипт работает как надо и как было задумано .. т.е. правильно ? именно с той самой ошибкой, на которую вам на протяжении всего треда указывает unicross ? и это ведь та самая 20 строчка ^_^
     
  22. DukeNukem

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

    С нами с:
    12 фев 2009
    Сообщения:
    15
    Симпатии:
    0
    PHP:
    1.  <?PHP
    2.    $conn = mysql_connect ("localhost:3306", "******", "******") or die ("Соединение не установлено!");
    3.     mysql_select_db ("*****", $conn);
    4.     mysql_query ("set character_set_client='cp1251'");
    5.     mysql_query ("set character_set_results='cp1251'");
    6.     mysql_query ("set collation_connection='cp1251_general_ci'");
    7.    
    8.     $sql = 'SELECT * FROM `dle_post` WHERE `short_story` LIKE "%http%" AND `autor` LIKE "wolf"';
    9.     $result = mysql_query($sql);
    10.  
    11.       for ($j=1;$j<208;$j++)
    12.     {
    13.     $rw = mysql_fetch_array($result, MYSQL_BOTH);
    14.     echo "id={$rw['id']}";
    15.     while ($i=strpos($rw['short_story'],"http"))
    16.       {
    17.       $k=strpos($rw['short_story'],"<br",$i);
    18.       if ($k>0) $rw['short_story']=substr($rw['short_story'],0,$i).substr($rw['short_story'],$k);
    19.       else $rw['short_story']=substr($rw['short_story'],0,$i);
    20.       }
    21.     $sql=" UPDATE `dle_post` SET `short_story` = '".$rw[short_story]."' WHERE `dle_post`.`id` =".$rw[id];
    22.     if (mysql_query ($sql)) echo (" Занесено в базу<br>");
    23.     else echo ("Invalid query: " . mysql_error());
    24.         }
    25.   ?>
    neyr00n вышеописанный скрипт отработал без ошибок, конечно можно $rw[short_story] заменить $rw['short_story'] а $rw[id] на $rw['id'], но большой разницы нету, кроме полного соблюдения синтаксиса и пары предупреждений, не влияющийх на общую работу скрипта. В данном скрипте 20 строка сместилась на 21, так как я правил алгоритм. Почему тогда выпадала ошибка, я так и не понял. Думаю те кто прикалывались тоже особо не поняли почему, подозревается что в этот момент сайт пирехал на новый сервер и на нем могла стоять сначала очень старая версия PHP и спустя день хостер ее обновил, но точных данных и доказательств что так и было у меня нету. На локал хосте не запускал так как база была на сервере.
     
  23. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    При строке $rw[short_story] будет всего лишь предупреждение, а не фатальная ошибка... Скрипт все равно выполнит свою работу. PHP ведь умный...

    Это кто здесь прикалывался? Прикалывались вы - загружали на один сервер, а запускали со второго... :p