表单混合PHP代码
通过不同的方式生成不一样的表单内容,达到其内容的多样化。
<?php
/* 表单混合PHP代码 */
include("form/register_include.php"); //使用include语句包含指定的文件,使用文件包含
?>
<html>
<head>
<title>表单混合PHP代码</title>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
</head>
<body>
<p>用户注册表单</p>
<form action="" method="post">
<p><label>用户名:<input name="username" type="text" value=""/></label></p>
<p><label>密码:<input name="pwd" type="password" value=""/></label></p>
<p><label>确认密码:<input name="confirm" type="password" value=""/></label></p>
<p>性别:
<label><input type="radio" name="sex" value="男"/>男</label>
<label><input type="radio" name="sex" value="女"/>女</label>
</p>
<p>生日:
<select name="year">
<!--使用一个循环进行输出-->
<?php for ($i = @date("Y"); $i > 1978; $i--): ?>
<option><?=$i?></option>
<?php endfor;?>
</select>年
<select name="month">
<?php for ($i = 1; $i <= 12; $i++) { ?>
<option><?=$i?></option>
<?php }?>
</select>月
<select name="day">
<?php for ($i = 1; $i <= 31; $i++) { ?>
<option><?=$i?></option>
<?php }?>
</select>日
</p>
<p>
<button type="submit">注册</button>
</p>
</form>
<hr/>
<form action="" method="post">
<p>用户注册表单,动态修改版,将上一个表单复制过来进行相应的修改,可以看到,当上一个进行提交之后,下一个表单会变化</p>
<p><label>用户名:<input name="username" type="text" value="<?php echo post_value("username");?>"/></label></p><!--这里使用一个PHP标签来获取,是否提交过该值,如果有输出出来-->
<p><label>密码:<input name="pwd" type="password" value=""/></label><strong>
<?php
if (post_value("pwd") == post_value("confirm")) {
// 首先判断密码是否相等,相等后判断是否为空
if (post_value("pwd") !== "") {
echo "两次密码输入一致";
} else {
echo "当前密码为空,或者未设置";
}
} else {
echo "两次密码输入不一致,请重新输入";
}
?></strong></p><!--无论何种情况密码默认为空-->
<p><label>确认密码:<input name="confirm" type="password" value=""/></label></p>
<p>性别:
<!--判断输入的性别是男是女进行死否选中操作-->
<label><input type="radio" name="sex" value="男"<?php if (post_value("sex") == "男") echo ' checked="true"';?> />男</label>
<label><input type="radio" name="sex" value="女"<?php if (post_value("sex") == "女") echo ' checked="true"';?> />女</label>
</p>
<p>生日:
<!--在循环中判断当前值是否相等,相等就输出一个选中操作-->
<select name="year">
<?php for ($i = @date("Y"); $i > 1978; $i--): ?>
<option<?php if (post_value("year") == $i) echo ' selected="true"'?>><?=$i?></option>
<?php endfor;?>
</select>年
<select name="month">
<?php for ($i = 1; $i <= 12; $i++) { ?>
<option<?php if (post_value("month") == $i) echo ' selected="true"'?>><?=$i?></option>
<?php }?>
</select>月
<select name="day">
<?php for ($i = 1; $i <= 31; $i++) { ?>
<option<?php if (post_value("day") == $i) echo ' selected="true"'?>><?=$i?></option>
<?php }?>
</select>日
</p>
<p>
<button type="submit">注册</button>
</p>
</form>
</body>
</html>
/* 表单混合PHP代码 */
include("form/register_include.php"); //使用include语句包含指定的文件,使用文件包含
?>
<html>
<head>
<title>表单混合PHP代码</title>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
</head>
<body>
<p>用户注册表单</p>
<form action="" method="post">
<p><label>用户名:<input name="username" type="text" value=""/></label></p>
<p><label>密码:<input name="pwd" type="password" value=""/></label></p>
<p><label>确认密码:<input name="confirm" type="password" value=""/></label></p>
<p>性别:
<label><input type="radio" name="sex" value="男"/>男</label>
<label><input type="radio" name="sex" value="女"/>女</label>
</p>
<p>生日:
<select name="year">
<!--使用一个循环进行输出-->
<?php for ($i = @date("Y"); $i > 1978; $i--): ?>
<option><?=$i?></option>
<?php endfor;?>
</select>年
<select name="month">
<?php for ($i = 1; $i <= 12; $i++) { ?>
<option><?=$i?></option>
<?php }?>
</select>月
<select name="day">
<?php for ($i = 1; $i <= 31; $i++) { ?>
<option><?=$i?></option>
<?php }?>
</select>日
</p>
<p>
<button type="submit">注册</button>
</p>
</form>
<hr/>
<form action="" method="post">
<p>用户注册表单,动态修改版,将上一个表单复制过来进行相应的修改,可以看到,当上一个进行提交之后,下一个表单会变化</p>
<p><label>用户名:<input name="username" type="text" value="<?php echo post_value("username");?>"/></label></p><!--这里使用一个PHP标签来获取,是否提交过该值,如果有输出出来-->
<p><label>密码:<input name="pwd" type="password" value=""/></label><strong>
<?php
if (post_value("pwd") == post_value("confirm")) {
// 首先判断密码是否相等,相等后判断是否为空
if (post_value("pwd") !== "") {
echo "两次密码输入一致";
} else {
echo "当前密码为空,或者未设置";
}
} else {
echo "两次密码输入不一致,请重新输入";
}
?></strong></p><!--无论何种情况密码默认为空-->
<p><label>确认密码:<input name="confirm" type="password" value=""/></label></p>
<p>性别:
<!--判断输入的性别是男是女进行死否选中操作-->
<label><input type="radio" name="sex" value="男"<?php if (post_value("sex") == "男") echo ' checked="true"';?> />男</label>
<label><input type="radio" name="sex" value="女"<?php if (post_value("sex") == "女") echo ' checked="true"';?> />女</label>
</p>
<p>生日:
<!--在循环中判断当前值是否相等,相等就输出一个选中操作-->
<select name="year">
<?php for ($i = @date("Y"); $i > 1978; $i--): ?>
<option<?php if (post_value("year") == $i) echo ' selected="true"'?>><?=$i?></option>
<?php endfor;?>
</select>年
<select name="month">
<?php for ($i = 1; $i <= 12; $i++) { ?>
<option<?php if (post_value("month") == $i) echo ' selected="true"'?>><?=$i?></option>
<?php }?>
</select>月
<select name="day">
<?php for ($i = 1; $i <= 31; $i++) { ?>
<option<?php if (post_value("day") == $i) echo ' selected="true"'?>><?=$i?></option>
<?php }?>
</select>日
</p>
<p>
<button type="submit">注册</button>
</p>
</form>
</body>
</html>
混合表单包含文件 file:form/register_include.php
某种情形下,使用一长串的表达式来判断一个变量值是很不靠谱的,有些折中的办法可以考虑,这就是封装函数。
<?php
/* 混合表单包含文件 */
function post_value($name){
//定义一个函数,使用function开头即可,之后是函数名,括号中是参数名
//函数功能,判断是否存在POST表单的相应值,有就返回,没有就返回空
if(isset($_POST[$name]))//判断是否有定义$_POST[$name]
return $_POST[$name];
return "";
}
?>
/* 混合表单包含文件 */
function post_value($name){
//定义一个函数,使用function开头即可,之后是函数名,括号中是参数名
//函数功能,判断是否存在POST表单的相应值,有就返回,没有就返回空
if(isset($_POST[$name]))//判断是否有定义$_POST[$name]
return $_POST[$name];
return "";
}
?>
创建表单的数组内容 file:form/array_form.php
这里创建了一个多维数组,含义非常明显,只是这些内容该如何输错,怎样进行提交,试着创建一个复杂的表单。
<?php
/* 创建表单的数组内容 */
$form_array = array(
//这是一个多维数组表,分别有两个系统选项,每个系统选项中有好几个列表,每一个列表有多个参数,可以看做是网页中的html层层嵌套,我们要利用这个生成一个表单
'系统选项' => array(
array(
'type'=>'text',
'title'=>'名称',
'name'=>'nameText',
'desc'=>'描述',
'value'=>'应用'
),
array(
'type'=>'checkbox',
'title'=>'名称',
'name'=>'nameCheckbox',
'desc'=>'描述',
'value'=>'选中',
'checked'=>true
),
array(
'type'=>'select',
'title'=>'名称',
'name'=>'nameSelect',
//'desc'=>'描述', //此处注释仅仅为了测试,可以发现05例子出现一个警告,二06没有
'list'=>array(
'one'=>'1',
'tow'=>'2',
'three'=>'3'
)
)
),
//下面的代码为上一部分复制过来进行简单修改
'系统选项二' => array(
array(
'type'=>'text',
'title'=>'名称',
'name'=>'nameText2',
'desc'=>'描述',
'value'=>'应用'
),
array(
'type'=>'checkbox',
'title'=>'名称',
'name'=>'nameCheckbox2',
'desc'=>'描述',
'value'=>'选中',
'checked'=>true
),
array(
'type'=>'select',
'title'=>'名称',
'name'=>'nameSelect2',
'desc'=>'描述',
'list'=>array(
'one'=>'1',
'tow'=>'2',
'three'=>'3'
)
)
),
);
if($_SERVER['REQUEST_METHOD'] == "POST"){
header("Content-Type: text/plain; charset=utf-8");
echo "输出\$_POST内容列表:\n";
print_r($_POST);
die();
}
if($_SERVER['SCRIPT_FILENAME'] == str_replace("\","/",__FILE__)){ //$_SERVER['SCRIPT_FILENAME']判断当前执行的脚本路径,而__FILE__常量指的是被包含文件的路径,判断相等就可以发现是不是直接访问当前文件
//str_replace("\","/",....)表示搜索到\进行替换为/,由于此次斜杠为转义符,因此需要再次转义
header("Content-Type: text/plain; charset=utf-8");
echo "你当前的访问模式为直接访问该被包含文件,此时会打印数组信息。\n";
echo "执行路径为:",$_SERVER['SCRIPT_FILENAME'] ,"\n被包含文件路径为:", __FILE__."(在windows下你会发现不同)\n";
print_r($form_array);
}
?>
/* 创建表单的数组内容 */
$form_array = array(
//这是一个多维数组表,分别有两个系统选项,每个系统选项中有好几个列表,每一个列表有多个参数,可以看做是网页中的html层层嵌套,我们要利用这个生成一个表单
'系统选项' => array(
array(
'type'=>'text',
'title'=>'名称',
'name'=>'nameText',
'desc'=>'描述',
'value'=>'应用'
),
array(
'type'=>'checkbox',
'title'=>'名称',
'name'=>'nameCheckbox',
'desc'=>'描述',
'value'=>'选中',
'checked'=>true
),
array(
'type'=>'select',
'title'=>'名称',
'name'=>'nameSelect',
//'desc'=>'描述', //此处注释仅仅为了测试,可以发现05例子出现一个警告,二06没有
'list'=>array(
'one'=>'1',
'tow'=>'2',
'three'=>'3'
)
)
),
//下面的代码为上一部分复制过来进行简单修改
'系统选项二' => array(
array(
'type'=>'text',
'title'=>'名称',
'name'=>'nameText2',
'desc'=>'描述',
'value'=>'应用'
),
array(
'type'=>'checkbox',
'title'=>'名称',
'name'=>'nameCheckbox2',
'desc'=>'描述',
'value'=>'选中',
'checked'=>true
),
array(
'type'=>'select',
'title'=>'名称',
'name'=>'nameSelect2',
'desc'=>'描述',
'list'=>array(
'one'=>'1',
'tow'=>'2',
'three'=>'3'
)
)
),
);
if($_SERVER['REQUEST_METHOD'] == "POST"){
header("Content-Type: text/plain; charset=utf-8");
echo "输出\$_POST内容列表:\n";
print_r($_POST);
die();
}
if($_SERVER['SCRIPT_FILENAME'] == str_replace("\","/",__FILE__)){ //$_SERVER['SCRIPT_FILENAME']判断当前执行的脚本路径,而__FILE__常量指的是被包含文件的路径,判断相等就可以发现是不是直接访问当前文件
//str_replace("\","/",....)表示搜索到\进行替换为/,由于此次斜杠为转义符,因此需要再次转义
header("Content-Type: text/plain; charset=utf-8");
echo "你当前的访问模式为直接访问该被包含文件,此时会打印数组信息。\n";
echo "执行路径为:",$_SERVER['SCRIPT_FILENAME'] ,"\n被包含文件路径为:", __FILE__."(在windows下你会发现不同)\n";
print_r($form_array);
}
?>
表单与数组的结合
在复杂的表单也是由N个基础的语句构成,在大量使用循环的基础上,实现一个多样化的表单是很容易的。
<?php
/* 表单与数组的结合 */
include_once("form/array_form.php");
header("Content-Type: text/html; charset=utf-8");
?>
<html>
<head>
<title>表单数组结合</title>
</head>
<body>
<h1>更新选项</h1>
<form action="" method="post">
<?php
foreach ($form_array as $option_name => $option_list) {
echo "<h2>$option_name</h2>\n";
foreach ($option_list as $option) {
switch ($option['type']) {
case "text":
echo '<p><label>', $option['title'], ':<input type="text" value="', $option['value'], '" name="', $option['name'], '" /><label><span>', $option['desc'], '</span></p>' . "\n";
break;
case "checkbox":
echo '<p><label>', $option['title'], ':<input type="checkbox" value="', $option['value'], '" name="', $option['name'], '" checked="', ($option['checked'] ? "true" : "false"), '" /><label><span>', $option['desc'], '</span></p>' . "\n";
break;
case "select":
echo '<p><label>', $option['title'], ":<select name='", $option['name'], "'>";
foreach ($option['list'] as $name => $value)
echo "<option name='$value'>$name</option>";
echo "</select><span>", $option['desc'], '</span></p>' . "\n";
break;
}
}
}
?>
<button type="submit">更新</button>
</form>
</body>
</html>
/* 表单与数组的结合 */
include_once("form/array_form.php");
header("Content-Type: text/html; charset=utf-8");
?>
<html>
<head>
<title>表单数组结合</title>
</head>
<body>
<h1>更新选项</h1>
<form action="" method="post">
<?php
foreach ($form_array as $option_name => $option_list) {
echo "<h2>$option_name</h2>\n";
foreach ($option_list as $option) {
switch ($option['type']) {
case "text":
echo '<p><label>', $option['title'], ':<input type="text" value="', $option['value'], '" name="', $option['name'], '" /><label><span>', $option['desc'], '</span></p>' . "\n";
break;
case "checkbox":
echo '<p><label>', $option['title'], ':<input type="checkbox" value="', $option['value'], '" name="', $option['name'], '" checked="', ($option['checked'] ? "true" : "false"), '" /><label><span>', $option['desc'], '</span></p>' . "\n";
break;
case "select":
echo '<p><label>', $option['title'], ":<select name='", $option['name'], "'>";
foreach ($option['list'] as $name => $value)
echo "<option name='$value'>$name</option>";
echo "</select><span>", $option['desc'], '</span></p>' . "\n";
break;
}
}
}
?>
<button type="submit">更新</button>
</form>
</body>
</html>
PHP听说很难学
不会啊,挺简单的,应该算是入门最快的WEB开发语言了
终于看完了。
还真有雅兴,不过献丑了
还看不懂,正在学习PHP呢。
继续努力
这种效果貌似在PHP中很少用到。
确实不多,只是可以这样用