За последние 24 часа нас посетили 18846 программистов и 1630 роботов. Сейчас ищут 947 программистов ...

голосование

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

  1. mihai

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

    С нами с:
    17 мар 2009
    Сообщения:
    40
    Симпатии:
    0
    срисовал с книжки скрипт голосования
    но
    что то не работает

    при первом запуске-голосовании
    выдаёт ошибку

    чисто интуитивно понимаю, что не может создать и записать в файл,
    но вот почему

    пожалуйста помогите исправить

    Warning: fopen(ocenka/.txt) [function.fopen]: failed to open stream: No error in Z:\home\localhost\www\golosxxx\ocenka.php on line 42

    Warning: fwrite(): supplied argument is not a valid stream resource in Z:\home\localhost\www\golosxxx\ocenka.php on line 43

    Warning: fclose(): supplied argument is not a valid stream resource in Z:\home\localhost\www\golosxxx\ocenka.php on line 44

    PHP:
    1.  
    2. <?
    3. $dir="ocenka";
    4. $ocenka=$ind.".txt";
    5. $way="$dir/$ocenka";
    6. if
    7. (!isset($_POST['ball']))
    8. {
    9. if
    10. (file_exists($way)==true)
    11. {
    12. $file=file($way);
    13. $vsego=(int)$file[0];
    14. $srednee=(float)$file[1];
    15. echo "колличество оценок этой статьи:$vsego";
    16. echo "Средняя оценка статьи:$srednee";
    17. }
    18. echo"<form method=POST action=ocenka.php>
    19. <input name=ind type=hidden value=$ind>
    20.     <select name=ball>
    21.     <option value=5>5 отлично</option>
    22.     <option value=4>4 четыре</option>
    23.     <option value=3>3 троечка</option>
    24.     <option value=2>2 двоечка</option>
    25.     <option value=1>1 еданичка</option>
    26.  </select>
    27.     <input name=submit type=submit value=оценить>
    28. </form>";
    29. }
    30. else
    31. {
    32. $ball=$_POST['ball'];
    33. $ind=$_POST['ind'];
    34. $ocenka=$ind.".txt";
    35. $way="$dir/$ocenka";
    36.  
    37. if(file_exists($way)!==true)
    38. {
    39. $vsego=1;
    40. $srednee=$ball;
    41. $count=$vsego."\n".$srednee;
    42. $open=fopen($way, "W+");
    43. fwrite($open, $count);
    44. fclose($open);
    45. }
    46. else
    47. {
    48.  
    49. $file=file($way);
    50. $vsego=(int)$file[0];
    51. $srednee=(float)$file[1];
    52. $vsego++;
    53. $srednee=($srednee*($vsego-1)+$ball)/$vsego;
    54. $srednee=round($srednee,2);
    55. $count=$vsego."\n".$srednee;
    56. $open=fopen($way, "r+");
    57. flock($open, LOCK_EX);
    58. fwrite($open, $count);
    59. flock($open, LOCK_UN);
    60. fclose($open);
    61. }
    62. echo "спасибо за ваш голос<br>";
    63. echo "вернуться";
    64. }
    65. ?>
    66.  
    67.  
    68.  
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Да и предыдущий код не заработал.
    Читайте, что пишет PHP.
     
  3. 45L

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

    С нами с:
    27 фев 2009
    Сообщения:
    12
    Симпатии:
    0
    поставь CHMOD 777
     
  4. 45L, пшел вон отсюда.
     
  5. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    $open=fopen($way, "W+");

    --
    я поставил так,
    $open=fopen($way, "a+");

    ошибки нет, этот параметр означат создание файла или добавление к существующему, но может это не все, что тебе нужно...
     
  6. mihai

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

    С нами с:
    17 мар 2009
    Сообщения:
    40
    Симпатии:
    0
    alexeurodnepr
    умница молодец
    СПАСИБО
    заработало
     
  7. mihai

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

    С нами с:
    17 мар 2009
    Сообщения:
    40
    Симпатии:
    0
    ещё проблема
    после голосования если обновить страницу то значение голосования увеличивается и так постоянно

    как остновить работу скрипта что бы при перезагрузке страницы значения не увеличиавались
     
  8. alexeurodnepr

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

    С нами с:
    18 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    mihai
    не надо похвал, тебе б первый ответивший на вопрос сказал бы тоже самое, если не больше) просто он хотел шо б ты сам подумал) а я... а... а мне пох...)
     
  9. mihai

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

    С нами с:
    17 мар 2009
    Сообщения:
    40
    Симпатии:
    0
    alexeurodnepr
    не скажи
    я эту свою проблему на трёх форумах выставил,
    за два дня никто не чего толкового не сказал,
    а уж если тебе так пох... тогда подскажи
    как остновить работу скрипта что бы при перезагрузке страницы значения не увеличиавались
    а то
    после голосования если обновить страницу то значение голосования увеличивается и так постоянно
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    автору книжки самому не помешалоб литературку почитать
     
  11. alexander.pro

    alexander.pro Активный пользователь

    С нами с:
    11 июл 2008
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Г. Кострома
    Да блин, я вообще думаю на форуме стоит организовать тему - "Рекомендуемая литература", а то иногда в печать такое запускают!
     
  12. mihai

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

    С нами с:
    17 мар 2009
    Сообщения:
    40
    Симпатии:
    0
    Вот видишь, а ты говоришь.
    - Каждай смог бы ответить.

    как видно не каждый знает ответ то
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    это он типа на понт берёт? :)
    mihai
    http://php.net/header
    После добавления данных редиректь на нужную тебе страницу.

    *в сторону. как же надоело про это писать
     
  14. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Есть у нас такая http://www.php.ru/forum/viewtopic.php?t=4537

    На экзамене в институте то же самое преподавателям говорили?
    Я уверяю Вас, что каждый отписавшийся знает ответ, но все хотят, чтобы Вы соображали сами. Это лучше для Вас и для нас. И мы не на работе и Вы нам не платите, поэтому мы ничем не обязаны.

    В предыдущем Вашем топике я дал ответ, но осталось такое впечатление, как будто он был проигнорирован. Почему я должен и дальше помогать (даже не помогать, а делать за ВАС) бесплатно?
    ;)
     
  15. mihai

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

    С нами с:
    17 мар 2009
    Сообщения:
    40
    Симпатии:
    0
    Luge
    ОК спасибо