За последние 24 часа нас посетили 20239 программистов и 1608 роботов. Сейчас ищут 1960 программистов ...

Помогите дороботать код

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

  1. klesh1504

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

    С нами с:
    28 мар 2010
    Сообщения:
    4
    Симпатии:
    0
    Помогите пожалуйста доработать код, вообщем нужно сделать так, чтобы при заполнении анкеты ,если отвечено не на все вопросы теста , то там будет писаться. что ответьте на все вопросы
    ( выводилось бы кол-во отвеченных вопросов например: отвечено на 5 вопросов из 9)чтобы закончить тест ,и происходило бы автоматическое пере направление назад на страницу 1, где собственно он и находится

    <title>Анкета</title>
    <body bgcolor="orange">
    <center>


    <font size="15"
    face="arial"
    color="green">Анкета о приеме на работу</font>
    </center>
    <FORM ACTION="k.php" method="POST">


    <h2>Имя</h2>
    <br><input type=text name='first_name' value='Кирилл'><br>
    <h2>Отчество</h2>
    <br><input type=text name='last_name' value='Анатольевич'><br>
    <h2>Фамилия</h2>
    <br><input type=text name='last_name' value='Поляк'><br>
    <h2>email</h2>
    <br><input type=text name='email' value='kursant@yandex.ru'><br>
    <h2>Возраст</h2>
    <br><input type=text name='vozrast' value='22'><br>

    <br>
    <br>
    <SELECT NAME="zaved">
    <OPTION VALUE="1" SELECTED>Учебное заведение:
    <OPTION VALUE="ПТУ">ПТУ
    <OPTION VALUE="Школа">Школа
    <OPTION VALUE="Институт">Институт
    <OPTION VALUE="Колледж">Колледж
    </SELECT>

    <SELECT NAME="god">
    <OPTION VALUE="1" SELECTED>Год выпуска:
    <OPTION VALUE="2007">2007
    <OPTION VALUE="2008">2008
    <OPTION VALUE="2009">2009
    <OPTION VALUE="2010">2010
    </SELECT>
    <SELECT NAME="fakultet">
    <OPTION VALUE="4" SELECTED>Факультет
    <OPTION VALUE="1">1
    <OPTION VALUE="2">2
    <OPTION VALUE="3">3
    </SELECT>
    <SELECT NAME="gruppa">
    <OPTION VALUE="4" SELECTED>Курс
    <OPTION VALUE="1">1
    <OPTION VALUE="2">2
    <OPTION VALUE="3">3
    <OPTION VALUE="4">4
    <OPTION VALUE="5">5
    </SELECT>
    <br>
    <br>
    <center>
    <font size="6"
    face="arial"
    color="red">Тест на профессиональную пригодность</font>
    </center>


    <p> 1) Вы служили в армии ? <br>
    <br><input id="10_0" name="name[10]" type="radio" value="5" />
    <label for="10_0">Да</label><br>

    <input id="10_1" name="name[10]" type="radio" value="3" />
    <label for="10_1">Нет</label><br>


    <p> 2) Вы занимаетесь спортом ? <br>


    <br><input id="11_0" name="name[11]" type="radio" value="6" />
    <label for="11_0">Да</label><br>

    <input id="11_1" name="name[11]" type="radio" value="2" />
    <label for="11_1">Нет</label><br>


    <p> 3) Вы хотя бы раз чинили компьютер ? <br>

    <br><input id="12_0" name="name[12]" type="radio" value="5" />
    <label for="12_0">Да</label><br>

    <input id="12_1" name="name[12]" type="radio" value="3" />
    <label for="12_1">Нет</label><br>


    <p> 4) Есть ли у вас водительские права? <br>

    <br><input id="13_0" name="name[13]" type="radio" value="5" />
    <label for="13_0">Да</label><br>

    <input id="13_1" name="name[13]" type="radio" value="3" />
    <label for="13_1">Нет</label><br>


    <p> 5) Есть ли у вас личный автомобиль? <br>

    <br><input id="14_0" name="name[14]" type="radio" value="5" />
    <label for="14_0">Да</label><br>

    <input id="14_1" name="name[14]" type="radio" value="3" />
    <label for="14_1">Нет</label><br>


    <p> 6) Женаты (замужем) ли вы ? <br>

    <br><input id="15_0" name="name[15]" type="radio" value="3" />
    <label for="15_0">Да</label><br>

    <input id="15_1" name="name[15]" type="radio" value="5" />
    <label for="15_1">Нет</label><br>


    <p> 7) Имеете ли вы опыт работы ? <br>

    <br><input id="16_0" name="name[16]" type="radio" value="5" />
    <label for="16_0">Да</label><br>

    <input id="16_1" name="name[16]" type="radio" value="3" />
    <label for="16_1">Нет</label><br>


    <p> 8) Хорошо ли вы владеете П.К. ? <br>

    <br><input id="17_0" name="name[17]" type="radio" value="5" />
    <label for="17_0">Да</label><br>

    <input id="17_1" name="name[17]" type="radio" value="3" />
    <label for="17_1">Нет</label><br>


    <p> 9) Есть ли у вас опыт работы в компьютерной сфере ? <br>

    <br><input id="18_0" name="name[18]" type="radio" value="5" />
    <label for="18_0">Да</label><br>

    <input id="18_1" name="name[18]" type="radio" value="3" />
    <label for="18_1">Нет</label><br>

    <p class="test">
    <input id="mytest_submit" name="commit" type="submit" value="Отправить" />
    <input type=reset value='Отменить'>
    </form>




    (K.php)

    <title>Анкета 2</title>
    <body bgcolor="yellow">

    <FORM ACTION="cf.php" method="POST">

    <font size="6"
    color="red"
    <center>
    <font size="15"
    face="arial"
    color="darkblue">Результаты теста</font>

    </center>
    <br>
    <center>
    <font size="6.5"
    face="arial"
    color="blue">Критерии баллов для получения работы:</font>

    </center>
    <br>

    <font size="6.5"
    face="arial"
    color="brown"><p> 1) От 0 до 35 баллов - к сожаленью ВЫ не подходите на эту должность <br>

    <br>
    <p> 2) От 35 и более - ВЫ подходите на эту должность, ждите письмо на ваш email адрес</font>
    <br>

    <?php
    //extract($_POST);
    //var_dump($_POST);

    $name = $_POST['name'];
    echo count($name);

    foreach ($name as $key => $value) {
    $summ+=$value;
    }
    echo "<br />Сумма,набранных Вами баллов:<br />$summ";

    <input id="mytest_submit" name="commit" type="submit" value="Отправить" />
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Это можно сделать на JavaScript на стороне клиента. http://yandex.ru/yandsearch?text=%D0%BF ... ipt&lr=213

    Это можно сделать на php на стороне сервера.

    У вас есть форич. Там кей - это цифра, $value - значение.
    Навскидку, сделать массив, выставить его весь в '-1'. После проходить по всем переданным значениям, и выставлять их в да/нет = true/false. Те, что останутся равны -1 значит не отвечены.

    ЗЫ: Если анкета вся состоит из данеток, рекомендую выполнить ее в виде таблицы на три колонки: вопрос, да, нет.
     
  3. klesh1504

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

    С нами с:
    28 мар 2010
    Сообщения:
    4
    Симпатии:
    0
    Можете, если не сложно показать как это будет выглядеть в коде..
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я не проверял. это идея. я не знаю, что будет в $value для нетронутых элементов. Будут ли они вобще. Вот это вам надо выяснить. Если они не существуют, либо принимают некое значение, отличное от ваших да/нет, то все просто.

    делаем массив
    $result = array();

    проходите по нему и присваиваете некое значение, которое будет означать, что это нетронутый результат.
    Например:
    PHP:
    1. <?php
    2. for ($i = 10; $i < 19; $i++) { //c 10 по 18 или сколько у вас там их.
    3.   $result[$i] = -1;
    4. }
    5.  
    6. foreach ($name as $key => $value) {
    7.   $result[$key] = $value;
    8. }
    9. ?>
    И вот у вас массив забитый вашими значениями, и -1 на те места, где нет ответа.

    Еще раз. Это если пропущеные радиобоксы не будут генерить никаких элементов в вашем массиве. Я не знаю. Посмотреть можно перед этим всем делом и после по функции var_dump($name).


    После в цикле, таком же как первый, проходите, и смотрите где остались -1.

    PHP:
    1. <?php
    2. for ($i = 10; $i < 19; $i++) { //c 10 по 18 или сколько у вас там их.
    3.   if ($result[$i] == -1) {
    4.      // это пропущеный элемент. В $i скрывается его номер. Например 17 это у вас будет про владение ПК вопрос.
    5.   } else {
    6.     // тут подсчитываете баллы.
    7.   $total++; //такой строкой можно подсчитать всего сколько было ответов.
    8.   }
    9. }
    10. ?>
     
  5. klesh1504

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

    С нами с:
    28 мар 2010
    Сообщения:
    4
    Симпатии:
    0
    Спасибо igordata за помощь!