За последние 24 часа нас посетили 64089 программистов и 1741 робот. Сейчас ищут 839 программистов ...

Почему не работает

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

  1. Vyacheslav

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

    С нами с:
    13 дек 2009
    Сообщения:
    17
    Симпатии:
    0
    fopm.htm
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Голосование</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>

    <body>
    <form action=golos.php method=post>
    <table cellspacing cellpadding=0 border=0>
    <tr><td align=center colspan=2><B>Голосование:</B></td></tr>
    <tr><td align=center colspan=2><B>Как вы считаете смертная казнь нужна России?</B></td></tr>
    <tr><td><input type=radio name=otv value=1 checked></td>
    <td>Да</td></tr>
    <tr><td><input type=radio name=otv value=2></td>
    <td>Нет</td></tr>
    <tr><td><input type=radio name=otv value=3></td>
    <td>Затрудняюсь ответить</td></tr>

    <tr><td colspan=2 align=center>
    <input type=submit name=golos value="Голосовать"></td></tr>
    </table></form>

    </body>

    </html>

    golos.php
    <html>
    <head>
    <title>Обработка голосования</title>
    </head>
    <body>
    <?
    if(@$golos) {
    // Здесь мы запускаем обработку данных только если
    // была нажата клавиша Голосовать
    $file_name="golos.txt";
    // Переменная $file_name задает имя файла с результатами
    $file=file($file_name);
    // Записываем файл с данными в массив $file
    $file_len=count($file);
    // $file_len - количество строк в файле golos.txt
    for($i=1,$n=0;$i<$file_len;$i++) {
    $file[$i]=trim($file[$i]);
    $n=$n+$file[$i];
    };
    // В этом цикле мы убираем символы перевода строки и записываем в
    // переменную $n сколько человек уже проголосовало
    echo "<center><h2>Спасибо, Ваше мнение учтено!</h2></center>";
    $file[$otv]++;
    $n++;
    // Здесь мы учитываем номер ответа, который пришел к нам из формы,
    // увеличив соответствующее значение в массиве и число проголосовавших на 1
    $rez="Результаты голосования:\n";
    // Переменная $rez будет содержать данные о голосовании,
    // которые затем запишем обратно в файл
    for($i=1;$i<$file_len;$i++) $rez.=$file[$i]."\n";
    $rez=trim($rez);
    $file_rec=@fopen($file_name,"w");
    // Здесь мы создаем новый файл, в который затем запишем обновленные данные
    if($file_rec) {
    $counter=fputs($file_rec,$rez);
    // Запись обновленных данных в файл golos.txt
    fclose($file_rec);
    }
    else echo "Произошла ошибка записи результатов!";
    for($i=1;$i<$file_len;$i++) $pr[$i]=round(($file[$i]/$n)*100);
    // Записали в массив $pr, сколько процентов от общего числа голосовавших
    // занимает каждый ответ
    // Далее идет кусок HTML-кода, который
    // отвечает за вывод наших данных на экран
    ?>
    <center><h2>Как вы считаете смертная казнь нужна России?</h2></center><BR>
    <table border=1 align=center>
    <tr><td>
    <B>Да(<?echo $file[1];?>):</B>
    </td><td>
    <img src="img.php?pr=<?echo $pr[1];?>" height=15>
    </td></tr>
    <tr><td>
    <B>Нет(<?echo $file[2];?>):</B>
    </td><td>
    <img src="img.php?pr=<?echo $pr[2];?>" height=15>
    </td></tr>
    <tr><td>
    <B>Затрудняюсь ответить(<?echo $file[3];?>):</B>
    </td><td>
    <img src="img.php?pr=<?echo $pr[3];?>" height=15>
    </td></tr>
    </table>
    <table border=1 align=center>
    <tr><td align=center><B>Всего проголосовало:</B></td></tr>
    <tr><td align=center><?echo $n." человек";?></td></tr>
    </table>
    <?
    };
    ?>
    </body>
    </html>

    img.php
    <?
    $otstup=35;
    // $otstup - задает отступ, в прелелах которого
    // в картинку впишем процентное значение
    $string=$pr."%";
    // $string - содержит значение процентов плюс знак процента
    $im=imageCreate($pr*2+$otstup,15);
    // Здесь создаем идентификатор, при помощи
    // которого мы будем работать с картинкой
    $fon=imageColorAllocate($im,220,20,60);
    $fon1=imageColorAllocate($im,255,20,147);
    // Задаем цвет фона
    $col_b=imageColorAllocate($im,0,0,0);
    // Задаем цвет обводки
    $shrift=imageColorAllocate($im,255,255,255);
    // Цвет вывода процентного значения
    imageFill($im,2,2,$fon);
    // Заполнили наш прямоугольник основным фоном
    $x1=0;$x2=$pr*2+$otstup-1;
    $y1=0;$y2=14;
    // Формирование улов для обводки контуром
    imageLine($im,$x1,$y1,$x2,$y1,$col_b);
    imageLine($im,$x2,$y1,$x2,$y2,$col_b);
    imageLine($im,$x2,$y2,$x1,$y2,$col_b);
    imageLine($im,$x1,$y1,$x1,$y2,$col_b);
    imageLine($im,$x1+$otstup,$y1,$x1+$otstup,$y2,$col_b);
    // Создание контура и разделяющей полосы
    if($pr!=0) imageFill($im,$otstup+1,2,$fon1);
    // Если значение процента не равно 0, то заполняем
    // правую часть цветом $fon1
    imageString($im,3,5,1,$string,$shrift);
    // Пишем в правую часть картинки процентное значение
    header("Content-type: image/png");
    imagePng($im);
    imageDestroy($im);
    // Здесь производим вывод полученной картинки в
    // стандартный поток вывода и уничтожаем идентификатор
    ?>
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Аллах на пенсии, что конкретно не работает?
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Думается мне, что register globals отключен.
    Напиши в файле golos.php (сразу после <? ):
    PHP:
    1. <?
    2. if(isset($_POST['golos'])) $golos = $_POST['golos'];
    3. if(isset($_POST['otv'])) $otv = $_POST['otv'];
    и в файле img.php (тоже сразу после <? )
    PHP:
    1. <?
    2. if(isset($_GET['pr'])) $pr = $_GET['pr'];
    Ну и, может быть, короткие теги <? отключены?