PHP для генерации радио-кнопок HTML

0

Хорошо, я не уверен, как объяснить, что я хочу (возможно, почему я не могу понять, как это сделать), но в основном у меня есть следующая форма html:

                <p class="ratingButtons">
                    <input type="radio" class="spacing" name="moRating1" value="1">1
                    <input type="radio" class="spacing" name="moRating1" value="2">2
                    <input type="radio" class="spacing" name="moRating1" value="3">3
                    <input type="radio" class="spacing" name="moRating1" value="4">4
                    <input type="radio" class="spacing" name="moRating1" value="5">5
                    <input type="radio" class="spacing" name="moRating1" value="6">6
                </p>

То, что я хочу сделать, это какой-то цикл PHP для печати в зависимости от того, какой из них выбран, а затем превратить его в функцию, чтобы я мог повторно использовать его для разных вопросов (например, ниже), поэтому сокращение количества HTML используется..

                    <p class="ratingButtons">
                    <input type="radio" class="spacing" name="moRating2" value="1">1
                    <input type="radio" class="spacing" name="moRating2" value="2">2
                    <input type="radio" class="spacing" name="moRating2" value="3">3
                    <input type="radio" class="spacing" name="moRating2" value="4">4
                    <input type="radio" class="spacing" name="moRating2" value="5">5
                    <input type="radio" class="spacing" name="moRating2" value="6">6
                </p>

Есть идеи? или подсказки, im довольно новый для php, так как новичок дружелюбный, насколько возможно, пожалуйста! Заранее спасибо!

Теги:
loops
forms
function

3 ответа

3
Лучший ответ

Ваша функция может выглядеть примерно так:

function generateRadioButtons($name, $values = 6) {
    $o = '<p class="ratingButtons">' . "\n";
    for ($v = 1; $v <= $values; $v++) {
        $selected = !empty($_POST[$name]) && $_POST[$name] == $v ? ' checked="checked"' : '';
        $o.= '<input type="radio" class="spacing" name="' . $name . '" value="' . $v . '"' . $selected . '>' . $v . "\n";
    }
    $o.= '</p>' . "\n";
    return $o;
}

И с помощью этой функции вы можете легко выводить свои параметры:

echo generateRadioButtons('moRating1');
echo generateRadioButtons('moRating2');

Демо.

  • 0
    Это именно то, что мне нужно, не могли бы вы рассказать мне, откуда вы получаете $ v и $ o? просто так я понимаю код немного лучше
  • 2
    $v - это переменная счетчика, используемая для цикла. $o - это переменная, в которой хранится HTML.
1

Это так просто:

<?php
function radio_selected($selected,$array){
$len=count($array);
for($i=0;$i < $len;++$i){
$num=$i+1;
$class=($selected==$array[$i])?'checked="checked"':'';
$a.='<input type="radio" class="spacing" name="moRating'.$num.'" value="'.$num.'"'.$class.'> '.$num;
}
return $a;
}
// --- And you can use it now
$array=Array('a','b','c');
$selected=$_POST['b']; // For example b
echo radio_selected($selected,$array);
?>
1

$options- Нет параметров, которые вы хотите

$sel_val- Выбранное значение голосования для его выбора

$ name - Название, из которого вы хотите, чтобы значения в сообщении

function rating_buttons($options,$sel_value,$name)
    {
        $output ='<p class="ratingButtons">';
        for($i=0;$i<$options;$i++)
        {
         $value=$i+1;   
         $output .= '<input type="radio" class="spacing" ';
            if($sel_value==$value)
                $output .='checked="Checked"';
            else
                $output .=''; 

                $output .='name="'.$name.'" value="'.$value.'">'.$value;
        }
        $output .='</p>';
        echo $output;
    }


    rating_buttons(5,3,'abc');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню