我对php和HTML都很陌生,并且过去几天一直试图绕过它们。我正在尝试使用长达56个问题的单选按钮创建调查问卷。
这是我现在的通用布局
<form action="index.php" name="My Form" method="POST">
<ol>
<li>
<p>Do you eat cheese?</p><br />
<input type="radio" name="Q1" value="0"/>Never<br />
<input type="radio" name="Q1" value="1"/>In the past<br />
<input type="radio" name="Q1" value="2"/>Sometimes<br />
<input type="radio" name="Q1" value="4"/>Often<br /><br />
</li>
<input type="submit" name="submit" value="Submit the questionnaire"></input>
</ol>
</form>
&#13;
现在,我需要在每个问题上使用4个按钮,但我不想在只更改名称的情况下将其写出56次(计划是将名称更改为&#34; Q1&#34;,& #34; Q2&#34;等)。所以,我想知道是否有办法创建一个能让我不得不经常重复它的功能。
我尝试过这个
的变体<html>
<body>
<?php
function inputs($counter)
$questions = array("Q1","Q2");
echo '
<input type="radio" name=.$questions[$counter]; value="0"
/>Never
<br />
<input type="radio" name=.$questions[$counter]; value="1" />In
the past
<br />
<input type="radio" name=.$questions[$counter]; value="2"
/>Sometimes
<br />
<input type="radio" name=.$questions[$counter]; value="4"
/>Often
<br />
<br /> ';
?>
</body>
</html>
目的是在列表项中使用
<p>Do you eat cheese?<p><br />
<?php inputs(0);?>
(包含已包含功能的文件)
并且曾经设法让它打印到页面(一切正确,但没有转移到index.php进行计算)。我怀疑我应该把输入(0)等于某事,但我不知道。
所以我的问题是 - &gt;
干杯
答案 0 :(得分:1)
使用此:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<?php
// Make sure you have 56 elements in the array
$questions = array("Do you always eat cheese?", "Are you human?",
"Do you have a dog?", "Mr. Murphy is funny?",
...);
for($i=1; $i < 57; $i++)
{
echo '<table>
<tr>
<td><p>'.$questions[$i-1].'</p></td>
</tr>
<tr>
<td><input type="radio" name="Q'.$i.'" value="0"/>Never</td>
</tr>
<tr>
<td><input type="radio" name="Q'.$i.'" value="1"/>In the past</td>
</tr>
<tr>
<td><input type="radio" name="Q'.$i.'" value="2"/>Sometimes</td>
</tr>
<tr>
<td><input type="radio" name="Q'.$i.'" value="4"/>Often</td>
</tr>
</table>';
}
?>
</body>
</html>
答案 1 :(得分:1)
我会把它写成答案而不是评论,因为它中的代码太多了。
你应该做什么(在这种学习状态下):
让函数返回以后要回显的东西。第二,让我们纠正一个小错误:
<?php
function inputs($question) { // you were missing these { here
// missing ' here and here + the dot
$html = '<input type="radio" name='.$question.' value="0"/>Never';
// add some more html // better with " around the string
$html += '<br/><input type="radio" name="'.$question.'" value="1" />In the past';
// add whatever you like to add to that...
// at the end let's return all we've got to use it later:
return $html;
}
// and now you can do:
$questions = array("Q1","Q2");
for($i=0;$i<count($questions);$i++) {
echo inputs($questions[$i]); // send only one question to the function
}
?>
答案 2 :(得分:1)
我应该咬紧牙关写下问题吗?
绝对不是!那太多代码太多了!
如果我正确理解了您的问题,您只需要为{56}个问题中的每个问题更改name
。当你使用数组在正确的轨道上时,我认为每次增加$i
会更容易,如下所示:
function inputs($counter) {
$i = 0
while($i < 57) {
echo'
<input type="radio" name="Q'.$i.'" value="0"
/>Never
<br />
<input type="radio" name="Q'.$i.'" value="1" />In
the past
<br />
<input type="radio" name="Q'.$i.'" value="2"
/>Sometimes
<br />
<input type="radio" name="Q'.$i.'" value="4"
/>Often
<br />
<br />
';
$i++
}
}
答案 3 :(得分:1)
你可以这样做:
function inputs( $i ){
$answers=array(
'Never','In the past','Sometimes','Often'
);
foreach( $answers as $key => $answer ) echo "<div><input type='radio' name='Q{$i}' value='{$key}' />{$answer}</div>";
}
<p>Do you eat cheese?<p>
<?php inputs(0);?>
<p>Do you eat bananas?<p>
<?php inputs(1);?>
假设分配给每个单选按钮的值很重要(0,1,2,4
),那么不像以前那样使用默认数字索引($key
)
function inputs( $i ){
$answers=array(
0 => 'Never',
1 => 'In the past',
2 => 'Sometimes',
4 => 'Often'
);
foreach( $answers as $key => $answer ) echo "<div><input type='radio' name='Q{$i}' value='{$key}' />{$answer}</div>";
}
答案 4 :(得分:1)
此功能可以满足您的需求。
<?php
function inputs($counter){
$labels = ['Never','In the past','Sometimes','Often'];
$questions = array("Q1","Q2");
for($n=0; $n < $counter; $n++){
echo '<input type="radio" name="'. $questions[0] .'" value="'. $n .'" /> '. $labels[$n] .' <br /> ';
}
}
?>
<!-- html -->
<p> Do you eat cheese? <p> <br />
<?php echo inputs(5); ?>
//where 5 is the number of inputs you need