PHP零散小项目

瞎鼓捣的录入和回显

主要灵感来源于之前在搞python时,要固定一个永恒变量(把变量的值另外找一个文件存起来),防止变量变成程序执行完成就销毁的临时变量。

想要存储和读取数据我知道的有两种,一种是我这种直接写入文件的,另外一种是数据库。

数据库暂且不说,毕竟还没鼓捣,最近还得考试嘛……

鼓捣下文件存储变量的,具体如下:

  1. 准备1个php文件和1个txt文件,放在同一个目录下
  2. php文件取名为“file.php”,txt文件取名为“file.txt”

PHP文件内容如下

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>小东西</title>
<style>
* {
margin: 0;
padding: 0;
}

table {
border: 1px solid red;
margin: 10px 30px;
}

table tr td {
border: 1px solid black;
}

form {
margin: 10px 30px;
}
</style>
</head>

<body>
<form action="file.php" method="post">
填写表格录入信息:<br>
班级:<input type="text" name="Sclass"><br>
姓名:<input type="text" name="Sname"><br>
座号:<input type="text" name="Sid"><br>
<input type="submit" value="提交" name="submit">

<?php
// 录入数据
if (isset($_POST['submit'])) {
$file = fopen('file.txt', 'a+');
$str = $_POST['Sclass'] . ',' . $_POST['Sname'] . ',' . $_POST['Sid'] . "\r\n";
fwrite($file, $str);
echo $str;
fclose($file);
}
?>
</form>
<form action="y.php" method="post">
<input type="submit" name="zhanshi" value="点击展示数据">
</form>
<table>
<tr>
<td><strong>id</strong></td>
<td><strong>班级</strong></td>
<td><strong>姓名</strong></td>
<td><strong>座位号</strong></td>
</tr>
<?php
// 如果点击按钮,则展示数据
if (isset($_POST["zhanshi"])) {
$file_r = fopen('file.txt', 'r');
$xs = 0;
while (!feof($file_r)) {
global $xs;
echo '<tr>';
$x = fgets($file_r);
$y = explode(',', $x);
$xs += 1;
echo "<td>{$xs}</td>";
for ($i = 0; $i < count($y); $i++) {
echo "<td>{$y[$i]}</td>";
}
echo '</tr>';
}
fclose($file_r);
}
?>
</table>
</body>
</html>

txt文件内容留空就行,毕竟本身就是存储数据的容器。

下面是效果:
录入数据和展示数据
录入数据和展示数据

排序的小作业

emmmmm……行吧,这东西还真……简单。

题目本意是这样的:展示一个二维数组,并且成绩部分要进行降序排序。

具体什么的也没啥好说的,看下面展示吧。勉强算好玩……

<!DOCTYPE html>
<html lang="zh-CN">

<head>
<meta charset="utf-8">
<title>站点创建成功-phpstudy for windows</title>
<style>
table,
table tr td {
border: solid 1px red;
}
</style>
</head>

<body>
<table>
<tr>
<td><b>座位号</b></td>
<td><b>名字</b></td>
<td><b>性别</b></td>
<td><b>分数</b></td>
</tr>
<?php
$arr = array(
array(11, "tom", "man", 334),
array(12, "sasa", "wman", 336),
array(13, "jack", "man", 339),
array(14, "lisa", "wman", 335),
array(15, "tmx", "man", 360)
);
$x = array();
for ($i = 0; $i < count($arr); $i++) {
$x[$i] = $arr[$i][3];
}
rsort($x);
$y = array();
for ($i = 0; $i < 5; $i++) {
for ($j = 0; $j < 5; $j++) {
if ($x[$i] == $arr[$j][3]) {
$y[$i] = $arr[$j];
}
}
}
for ($i = 0; $i < count($y); $i++) {
echo "<tr>";
for ($j = 0; $j < count($y[1]); $j++) {
echo "<td>{$y[$i][$j]}</td>";
}
echo "</tr>";
}
?>
</table>
</body>
</html>

成绩降序排序

质数判断器

壳部分的逻辑:

  • 输入两个值,通过post传参得到php处理程序
  • 如果两值不输入,默认为1和5
  • 对比两值大小,保证恒为前小后大
  • 调用函数对范围内的数字挨个进行判断
  • 回显所有判断的结果,且一行仅限输出8个结果

质数的判断函数遵循的逻辑:

  • 传入数值,如果为1时,恒返回1(为质数)
  • 传入数值大于1,会取这个数前面的所有数字与之相余
    • 余数为0:恒返回0,为非质数
    • 余数非0:退出循环时返回1,为质数
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>质数判断器</title>
<style>
* {
margin: 0;
padding: 0;
}

body {
background-color: orange;
}

form {
margin: 50px auto;
background-color: #e3b4b8;
width: 300px;
text-align: center;
}

.word {
width: 200px;
height: auto;
text-align: left;
}
</style>
</head>

<body>
<form action="x2.php" method="post">
<h1>质数判断器</h1>
请输入俩值进行质数判断:
<br>值1:<input type="number" name="val1" value="1">
<br>值2:<input type="number" name="val2" value="5">
<br><input type="submit" value="提交" name="submit">&nbsp;&nbsp;&nbsp;
<input type="reset" value="重置" name="reset"><br>
<?php
if (isset($_POST["submit"])) {
// 质数判断器
function prenum($num)
{
$n = 1;
if ($num == 1) {
return 1;
}
for ($i = 2; $i < $num; $i++) {
if ($num % $i == 0) {
$n = 0;
break;
}
}
return $n;
}
$num1 = $_POST['val1'];
$num2 = $_POST['val2'];
// 确保值的范围无误
if ($num1 > $num2) {
$x = $num1;
$num1 = $num2;
$num2 = $x;
}
echo "您所输入的从{$num1}{$num2}范围的质数有:<br>";
$arr = array();
for (; $num1 <= $num2; $num1++) {
$n = prenum($num1);
if ($n == 1) {
array_push($arr, $num1);
}
}
echo '<div class="word">';
for ($i = 0; $i < count($arr); $i++) {
if (($i + 1) % 8 != 0) {
echo "{$arr[$i]},";
} else {
echo "{$arr[$i]}<br>";
}
}
echo '</div>';
} ?>
</form>

</body>

</html>

输入的判断