每日练习
1.POST,GET
一个页面中有一个表单:可以输入年龄,并进行判断:
如果大于18岁,可以上网吧,
否则不可以!
<?php
$result = "";
$age = "";
if(isset($_POST['age'])){
$age = $_POST['age'];
if(empty($age)||$age<18){
$result = "不可以上网";
}else{
$result = "可以上网了";
}
}
?>
<body>
<form action="" method = "post">
请输入你的年龄:<input type="number" name="age">
<button type="submit">提交</button>
<text style="width:300px"><?php
echo $result;
?></text>
</form>
</body>
2.数据库连接
<?php
const server = "localhost";//主机
const db_username = "root";//你的数据库用户名
$con = mysqli_connect(server, db_username, "","test");//链接数据库
if (!$con) {
die("can't connect" . mysqli_error($con));//如果链接失败输出错误
}
?>
在页面login.php中显示一个表单,可以输入用户名和密码。在login_save.php页面输出获取的用户名和密码的值。
login.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
?>
<body>
<form action="login_save.php" method = "POST">
账号:<input type="text" name="user">
密码:<input type="password" name="psd">
<button type="submit">登录</button>
</form>
</body>
login_save.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
$username = $_POST['user'];
$password = $_POST['psd'];
?>
<body>
<?php echo $username;echo $password;?>
</body>
</html>
写一个页面server.php,在页面中以表格的形式输出至少5个$_SERVER变量中的元素信息,并有每个元素的含义。
多写几行没啥意义,一行了事。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
$var1 = 'HTTP_HOST';
$type1 = '$_SERVER[ \'HTTP_HOST\']';
$arr1 = array($var1,'$_SERVER[ \'' . $var1 . '\']',$_SERVER[$var1],"端口号");
?>
<body>
<table border="1" width="60%" bgcolor="#e9faff" cellpadding="2">
<tr>
<td>元素名称</td>
<td>使用形式</td>
<td>结果</td>
<td>含义</td>
</tr>
<tr>
<td><?php echo $arr1[0]; ?></td>
<td><?php echo $arr1[1]; ?></td>
<td><?php echo $arr1[2]; ?></td>
<td><?php echo $arr1[3]; ?></td>
</tr>
</table>
</body>
</html>
请设计一个表单,该表单可以输入一个4位的整数(代表年份数字)。表单提交后可以判断用户输入的年份是否是一个闰年。如果是闰年,就输出“xxxx年是闰年”,否则就输出“xxxx不是闰年”。(能被4整除,且不能被100整除的闰年)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
$result = "";
$year = $_POST['year'];
if (!empty($year)) {
if ($year % 4 != 0) {
$result = "不是闰年";
}else if($year % 100 !=0){
$result = "不是闰年";
}else{
$result = "是闰年";
}
}
?>
<body>
<form action="" method="post">
请输入年份: <input type="number" maxlength="4" name="year">
<button type="submit">提交</button>
<?php echo $result;?>
</form>
</body>
</html>
请实现一个简单计算器,前面的输入框和后面的输入框进行运算(注意:下拉列表中的符号包括: + - * / %)
点击“计算”后,可以根据选中的运算符,对两个数进行指定计算,并输出结果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<?php
$result = 0;
$num1 = 0;
$num2 = 0;
if ($_POST){
if(!isset($_POST['num1'])&&!isset($_POST['num2'])){
$result = "请输入正确的参数";
return;
}
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
switch ($_POST['type']){
case 0:
$result = $num1+$num2;
break;
case 1:
$result = $num1-$num2;
break;
case 2:
$result = $num1*$num2;
break;
case 4:
$result = $num1/$num2;
break;
}
}
?>
<form action="" method="post">
<input type="number" name="num1">
<select name="type">
<option value="0" >+</option>
<option value="1" >-</option>
<option value="2" >*</option>
<option value="3">/</option>
</select>
<input type="number" name="num2">
<button type="submit">计算</button>
<?php echo $result;?>
</form>
</body>
</html>
一个小球从空中掉下来,请根据给定的条件,以及相关的自由落体规律,解决如下问题:
a)如果已知小球掉落时的初始高度为1000m,求其触地瞬间的速度;
b)如果已知小球落地瞬间的速度为1000m/s,求其掉落时的初始高度。
附自由落体公式:
自由落体的速度规律为:v=gt,
自由落体的位移规律为:h=gt*t/2。
其中g是重力加速度,在地球上g≈9.8m/s2;v是速度(米/秒),h高度(米),t是时间(秒)
<?php
$h = 1000;
$g = 9.8;
$t = sqrt($h*2/9.8);
$v = 9.8*$t;
echo "a)落地瞬时速度".$v."m/s<br>";
$v = 1000;
$t = $v/$g;
$h = $g*$t*$t/2;
echo "b)初始高度为".$h."m"
?>
已知某校某年级的一次阶段考试情况是这样的:总人数接近500,总平均分80分,男生平均分79分,女生平均分84.3分。请使用所学知识(循环,穷举算法),求出男生女生各多少人。
php
for($i=450;$i<550;$i++){
$female = $i/5.3;
$male = $female*4.3;
if(isInt($female)&&isInt($male)){
echo '最终结果男生'.$male.'人,女生'.$female.'人<br>';
}
}
function isInt($n){
if(floor($n)==$n){
return true;
}else{
return false;
}
}
echo "算完了";
?>
请使用循环逻辑语法,以及相应的规律提示信息,在网页上输出如下各个图案(其中的行数可以由一个变量$n来控制,以下图案为假设$n = 4的结果。)。
<?php
$row = 7;
$column = 4;
$nulln = 3;
$rowStar = 1;
$nulls = " ";
$stars = "*";
for($i=0;$i<4;$i++) {
if($i>0){
$rowStar = 2;
}
$nullStr = "";
$str = "";
for($j=0;$j<$nulln-$i;$j++){
$nullStr = $nullStr . $nulls;
}
$str = $nullStr.$stars;
for($k=0;$k<($row-$rowStar-$nulln*2+$i*2);$k++) {
$str = $str . $nulls;
}
if($rowStar>1){
$str = $str.$stars;
}
$str = $str.$nullStr;
echo $str.'<br>';
}
定义一个函数,该函数可以接收一个数据(即实参)。该函数的功能是判断该数据是否是一个整数或整数字符串。如果是,则返回true,否则返回false
测试用例:1, 1.23, 0, -1, “123”, “1.23”, “-1.23”, “abc”, “”;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
function isNum($num)
{
return is_numeric($num);
}
if ($_POST) {
if (isNum($_POST['num'])) {
echo '是数字';
} else {
echo '不是数字';
}
}
?>
<body>
<form action="" method="POST">
请输入:<input type="text" name="num">
<button type="submit">提交</button>
</form>
</body>
定义一个函数,该函数能够判断一个数字是否是一个素数(也叫质数),是就返回true,否则就返回false。并利用该函数的功能,输出2-200之间的所有素数。
注:素数就是只能被1和它本身整除的数。——即只有两个可以整除的数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
getNum();
function getNum()
{
$total = 0;
for($i =2;$i<201;$i++){
$count = 0;
for($j=1;$j<$i;$j++){
if($i%$j==0){
$count++;
}
}
if($count == 1){
$total++;
echo "质数为".$i."<br>";
}
}
echo "总质数".$total;
}
?>
<body>
</body>
- 递归
有如下一个数列:1, 2, 3, 5, 8, 13, 21,....... 其规则是:前两个已知(即1和2),从第3个开始,其值为其左边两个值的和(此数列称为斐波那契数列)。定义一个函数,该函数可以求出该数列的任意第n个数的值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
getNum(8);
function getNum($n)
{
$arr = array(1,2,);
for($i=2;$i<$n;$i++){
$arr[$i] = $arr[$i-1] + $arr[$i-2];
}
echo $arr[$n-1];
}
?>
<body>
</body>
- 逻辑运算符
定义一个函数,该函数可以求两个正数的最小公倍数。——倍数就是能被一个数整除的数,最小公倍数就是能同时被这两个数整除的最小的那个。比如6和8的最小公倍数是24,15和20的最小公倍数是60。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
getNum(24,26);
function getNum($n, $m)
{
if ($n > $m) {
$max = $n;
$min = $m;
} else {
$max = $m;
$min = $n;
}
$a = 0;
for($i = 1;$i<$min+1;$i++){
if($max%$i==0&&$min%$i==0){
$a = $i;
}
}
echo $n/$a*$m;
}
?>
<body>
</body>
- 递归使用
计算5的阶层;
分析:
数学上阶乘可以这样来描述:一个数n的阶乘,是n-1的阶乘,乘以n的结果!
假设,我们有一个函数 jieceng(),它可以计算任意正整数n的阶乘,类似这样:
$n = 5; //或等于10, 13,等等都无所谓。
$result = jiecheng($n);
<?php
$result = jiecheng(5);
echo $result;
function jiecheng($n)
{
if($n<2){
return 1;
}
return jiecheng($n -1)*$n;
}
?>
15.随机数
写一个函数,可以随机输出10-25之间的6个不重复的整数——取得随机数函数为rand();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
$result = getRand();
function getRand()
{
$arr = array();
$count = 0;
while($count<6){
$a = rand(10,25);
echo $a.'<br>';
if(!hasA($a,$arr)){
$arr[$count] = $a;
$count++;
}
}
echo $arr;
return $arr;
}
function hasA($a,$arr){
$len = sizeof($arr);
if($len==0){
return false;
}
for($i=0;$i<$len;$i++){
if($a == $arr[$i]){
return true;
}
}
return false;
}
?>
<body>
</body>
</html>
- 二位数组
某旅游团有来自多个省市的旅客,每个省市分做一个小组,每个小组的人数和年龄都有所不同,如下所示:
北京市3人:25岁,28岁,23岁
河北省5人:22岁,23岁,30岁,25岁,20岁
山东省4人:25岁,32岁,33岁,20岁
请设计适当的数据类型以保存这些年龄数据,并求出整个旅游团的整体平均年龄。
<?php
$arr = Array(
'北京市' => Array(25,28,23),
'河北省' => Array(22,23,30,25,20),
'山东省' => Array(25,32,33,20)
);
$up = 0;
$down = 0;
foreach($arr as $value){
$down += sizeof($value);
foreach ($value as $v){
$up += $v;
}
}
echo $up/$down;
- 数组合并打乱
请设计一个登录页面,包括用户名、密码和验证码3个输入框。验证码框右边显示验证码文字
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<?php
$result = "";
$range1 = range('0','9');
$range2 = range('a','z');
$range3 = range('A','Z');
$arr = array_merge($range1,$range2,$range3);
shuffle($arr);
$result = $arr[0]. $arr[1]. $arr[2]. $arr[3];
?>
<body>
<form action="" method = "GET">
用户名:<input type="text" name="user"><br>
密码:<input type="password" name="psd"><br>
验证码:<input type="text" name="num"><?php echo $result?><br>
<button type="submit">登录</button>
</form>
</body>
- 数组排序
以下数据为某班的某次考试成绩,请使用任意一种排序算法对其进行排序后,按从高到低的顺序输出。
$score = [82, 88, 67, 71, 92, 66, 78, 83, 85, 75, 76, 63, 55, 68, 71, 88, 90];
<?php
$score = [82, 88, 67, 71, 92, 66, 78, 83, 85, 75, 76, 63, 55, 68, 71, 88, 90];
asort($score);
var_dump($score);
echo '<br>';
arsort($score);
var_dump($score);
19.sql训练
第1题:
题型:实操题
难度:1级
题干: 合肥创仁元有限制公司信息部门准备做一个企业内部新闻管理系统,假如由你来负责这个项目.请在命令行下创建一个数据库db_news,并选择使用之.
<?php
//(1)数据库配置信息
$db_host = "localhost"; //主机名 localhost:3306
$db_port = "3306"; //端口号
$db_user = "root"; //用户名
$db_pass = ""; //密码
$db_name = "db_news"; //数据库名
$charset = "utf8"; //字符集
//(2)PHP连接MySQL服务器
if(!$link = @mysqli_connect($db_host.":".$db_port,$db_user,$db_pass))
{
echo "<h2>PHP连接MySQL服务器失败!</h2>";
echo "系统错误信息:".mysqli_connect_error();
die(); //中止程序向下运行
}
$sql = "CREATE DATABASE ".$db_name;
//(3)创建数据库
if($link->query($sql)==true){
echo "Database created";
}else{
echo "Error creating database: " .$link->error;
die();//中止程序向下运行
}
//(3)选中数据库
if(!mysqli_select_db($link,$db_name))
{
echo "<h2>选择数据库{$db_name}失败!</h2>";
die();
}else{
echo "<h2>选择数据库{$db_name}成功!</h2>";
}
//(4)设置数据库返回数据字符集
mysqli_set_charset($link,$charset);
//(5)关闭连接
$link->close();
第2题:
题型:实操题
难度:2级
题干:陕西康鑫绿色食品有限公司,市场销售部,准备开发一个在线产品销售管理系统 ,通过需求分析,设计数据库名及表名,如下参数: 数据库名为db_goods,商品表tb_goods,商品表字段分别为,商品编号(id),名称(name),型号(type),产地(address),价格(price).商品编号自动增长并为主键.
<?php
//(1)数据库配置信息
$db_host = "localhost"; //主机名 localhost:3306
$db_port = "3306"; //端口号
$db_user = "root"; //用户名
$db_pass = ""; //密码
$db_name = "db_goods"; //数据库名
$tb_name = "tb_goods"; //表
$charset = "utf8"; //字符集
//(2)PHP连接MySQL服务器
if(!$link = @mysqli_connect($db_host.":".$db_port,$db_user,$db_pass))
{
echo "<h2>PHP连接MySQL服务器失败!</h2>";
echo "系统错误信息:".mysqli_connect_error();
die(); //中止程序向下运行
}
$sql_cb = "CREATE DATABASE ".$db_name;
//(3)选中数据库
if(!mysqli_select_db($link,$db_name))
{
echo "<h2>选择数据库{$db_name}失败!</h2>";
//(4)创建数据库
if($link->query($sql_cb)==true){
echo "Database created";
}else{
echo "Error creating database: " .$link->error;
die();//中止程序向下运行
}
}else{
echo "<h2>选择数据库{$db_name}成功!</h2>";
}
//(4)设置数据库返回数据字符集
mysqli_set_charset($link,$charset);
//(5)创建表
$sql_ctable = "CREATE TABLE ".$tb_name."(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
address VARCHAR(50),
price FLOAT
)";
if(mysqli_num_rows(mysqli_query($link,"SHOW TABLES LIKE '". $tb_name."'"))==1) {
echo "Table exists";
} else {
echo "Table does not exist";
if($link->query($sql_ctable)==true){
echo "table created";
}else{
echo "Error creating table: " .$link->error;
die();//中止程序向下运行
}
}
//(5)关闭连接
$link->close();
第3题:
题型:实操题
难度:2级
题干: 开发一个就业学生管理系统,来统计哪些专业相对容易就业.初步设计数据库及表如下: 数据库名job_db_student,表名job_tb_student。字段:学生编号,姓名,性别,年龄,在校所学专业及毕业时间。表创建好的之后,要求再增加两个字段,一是专业后增加联系方式,二是毕业时间后面增加一个籍贯.