Форма отправки PHP RadioButton

Я создаю веб-сайт, чтобы пользователи могли оценивать изображение, загруженное другим пользователем. У меня мой код отлично работает. Пользователю предоставляется изображение, кнопка для отметки изображения, 10 переключателей для выбора своего рейтинга и кнопка отправки (все в одной форме).

Моя проблема в том, что я хотел бы удалить кнопку отправки и обрабатывать форму, когда пользователь нажимает переключатель. Проблема в том, что кнопка с флажком (кнопка с изображением) также отправляет форму. Мой код ниже:

HTML

<form name="ratebox" action="Box.php?bid=<?php echo $boxId ?>" method="post">
    <table style="margin: 0 auto;">
        <tr>
            <td colspan="2"><img src="img/boxes/<?php echo $boxId ?>.png" title="<?php echo $boxName ?>" height="350" width="350"></td>
        </tr>
    <tr>
    <input
        type="image"
        name="flag_submit"
        src="img/Flag.png"
        onmouseover="this.src='img/Flag_Click.png'"
        onmouseout="this.src='img/Flag.png'"
        height="30"
        width="30"
        />
        </td>
    </tr>
    <tr>
        <td colspan="2" style="text-align:center;">
            1<input type="radio" name="rdoRate" value="1" >
            2<input type="radio" name="rdoRate" value="2" >
            3<input type="radio" name="rdoRate" value="3" >
            4<input type="radio" name="rdoRate" value="4" >
            5<input type="radio" name="rdoRate" value="5" >
            6<input type="radio" name="rdoRate" value="6" >
            7<input type="radio" name="rdoRate" value="7" >
            8<input type="radio" name="rdoRate" value="8" >
            9<input type="radio" name="rdoRate" value="9" >
            10<input type="radio" name="rdoRate" value="10" > 
        </td>
    </tr>
    <tr><td colspan='4' align='center'><input type='submit' name='rate_submit' value='Rate'></td></tr>
</table>
</form>

PHP

if (isset($_POST['flag_submit_x']))
{
        //Code to process the flagged image
}

if (!empty($_POST['rate_submit']))
{
        //Code to process the rated image
}

Есть ли способ отправить форму при нажатии радиокнопки и получить значение нажатой радиокнопки?


person Glen Robson    schedule 06.02.2013    source источник
comment
В html вам нужна кнопка для отправки данных. Для этого вам нужно использовать js   -  person nowhere    schedule 06.02.2013
comment
Я использую PHP вместе с HTML.   -  person Glen Robson    schedule 06.02.2013


Ответы (3)


Да, для этого нужно использовать Javascript. Используя jQuery,

$('input[type=submit]').click(function(){
     return false;
});

$('input[type=radio]').click(function(){
    $('form').submit();
});

Вам нужно научиться использовать $ .ajax () для передачи информации в PHP и обратно. Прочтите это.

person Zevi Sternlicht    schedule 06.02.2013
comment
Как мне обработать и получить значения, отправляемые в коде PHP? - person Glen Robson; 06.02.2013
comment
Я пробовал этот метод, и мне не удалось заставить его работать. Не могли бы вы привести пример? - person Glen Robson; 06.02.2013

Конечно, есть, почему бы не прикрепить js-функцию к каждой кнопке и не отправить значение на сервер либо ajax, либо обычным способом.

function submitRate(image_id, rating){
//here you would do the magic:)
//maybe grab other form fields or just the rating
}

и в ваших кнопках onclick="submitRate()"

person phpalix    schedule 06.02.2013
comment
Как мне отправить информацию из js в PHP и как обработать и получить значения в PHP? - person Glen Robson; 06.02.2013
comment
в вашем submitRate () отправьте вызов ajax на серверный php-скрипт и верните результат - person phpalix; 06.02.2013

1) удалить ввод для отправки.

2) сделайте отправку формы ложной:

<form id="ratebox" name="ratebox" action="" method="" onSubmit="return false;">

3) Поместите почтовый индекс на страницу отправки:

$.post("Box.php?bid=<?php echo $boxId ?>", $("#ratebox").serialize());
person George SEDRA    schedule 06.02.2013
comment
Это не сработает, поскольку я использую кнопку с изображением (отмеченную кнопку) в той же форме для отправки запроса. - person Glen Robson; 06.02.2013