POST到同一个页面的显示问题

来源:2-12 作业题

Raaaaaaay

2017-08-15 01:03:26

两个图形的显示已经完成了,但是每次在打开到这个页面的时候,会在提交按钮下面自动输出一句话:请输入数值(这个是我在代码段里面写到的),请问怎么解决?代码如下:

<html>

<head>

<meta charset='utf-8'>

<title></title>

</head>

<body>

<form action="#" method="POST">

<input type="text" name="row" placeholder="请输入要打印的行数"><br>

<input type="submit" value="金字塔" name="pyramid">

<input type="submit" value="空心菱形" name="hollowDiamond">

</form>

<?php

//隐藏notice级信息提示

error_reporting(E_ALL&~E_NOTICE);

//接收表单POST形式发送的参数并赋值给变量

$num1=$_POST['pyramid'];

$num2=$_POST['hollowDiamond'];

$row=$_POST['row'];

//判断用户输入的内容是否为数值型

if (is_numeric($row)){

//判断用户提交按钮是否为金字塔

if ($num1){

//外循环次数等于用户输入的的层数

for ($i=1; $i<=$row; $i++) { 

//每一层的输出内容分为三部分,(总层数-行数的个数的空格)+(总层数*2-1的个数的*)+(总层数-行数的个数的空格)

for ($j=1; $j<=$row-$i; $j++) { 

echo "<span style='color:#FFF'>*</span>";

}

for ($k=1; $k<=$i*2-1; $k++) { 

echo "*";

}

for ($m=1; $m<=$row-$i; $m++) { 

echo "<span style='color:#FFF'>*</span>";

}

echo "<br/>";

}

}

//判断用户提交按钮是否为空心菱形

if ($num2){

//空心菱形的上半部(包含中间一行)循环

for ($i=1;$i<=$row;$i++) {

for ($j=1;$j<=$row-$i;$j++) { 

echo "<span style='color:#FFF'>*</span>";

}

for ($k=1;$k<=$i*2-1;$k++) { 

if($k==1||$k==$i*2-1){

echo "*";

}else{

echo "<span style='color:#FFF'>*</span>";

}

}

echo "<br/>";

}

//下半部循环

for ($i=1;$i<=$row-1;$i++) { 

for ($j=1;$j<=$i;$j++){ 

echo "<span style='color:#FFF'>*</span>";

}

for ($k=1;$k<=($row-$i)*2-1;$k++) { 

if($k==1||$k==($row-$i)*2-1){

echo "*";

}else{

echo "<span style='color:#FFF'>*</span>";

}

}

echo "<br/>";

}

}

}else{

echo "请输入数值";

}

?>

</body>

</html>


写回答

1回答

imooc_澈

2017-08-15

您好,进入页面,判断$row是否是数字的控制语句执行,此时因为我们还没有任何输入,is_number($row)的返回结果为false,程序就会走else流程,输出“请输入数值”,应该在最外层添加$row这个变量是否存在或者是否为空的判断,包裹住整个php执行代码,$row存在或者不为空,才能走下面的php代码。在你的代码基础上添加结果如下:

http://climg.mukewang.com/599265d00001573003450209.jpg

或者:

http://climg.mukewang.com/59926617000147db04500275.jpg

如果解决了您的问题,请采纳,祝学习愉快~

0
haaaaaaay
h 非常感谢!
h017-08-15
共1条回复

0 学习 · 2569 问题

查看课程