post未定义

来源:2-13 作业题

weixin_慕沐1378591

2020-04-15 15:36:47

<!doctype html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport"
         content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
<!--
步骤一:在这个PHP文件中混编html代码,实现输入行数的input框以及“金字塔”和“空心菱形”的button按钮。
注意:
button按钮需设置value值,方便区分页面点击button按钮出现对应的图案。
form表单的提交地址是当前页面。

步骤二:金字塔实现步骤:

1、在PHP部分,首先接受表单POST方式的传参,判断参数是否是金字塔,如果是金字塔参数,那么就执行实现金字塔的循环。
2、实现每行相对前一行多2个*的规律。
首先,接受页面传过来的层数n,循环n,在这个循环中先打印一个由空格组成的倒直角三角形,注意可能有些浏览器对 &nbsp 与 * 的大小解析不相等,所以这里可以输出隐藏样式(style=”color:#FFF;”)的*来保证在浏览器页面呈现的是一个完全的倒三角。
其次,在层循环中打印一个由星号组成的等腰三角形,三角形星星的个数=2*层数-1。
最后,输出换行即可。

步骤三:空心菱形实现步骤:
1、在PHP部分,首先接受表单POST方法的传参,判断参数是否是空心菱形,如果是空心菱形参数,那么就执行实现空心菱形的循环。
2、用循环实现一个第一行和最后一行是一颗星星,其余中间每一行是行头,行尾各一颗星星的菱形的形状。

参考实现思路:
实现菱形的上半部分(想象一个空心的无底边三角形)。
首先,接受页面传过来的层数,循环这个层数。
其次,在层数的循环中,先打印一个空的倒直角三角,然后打印一个实心型三角,判断输出行首行尾的星星,中间部分直接打印出空。
最后,给每层打印换行。

实现菱形的下半部分(想象成一个空心的无底边的倒三角形)。
首先,在层数的循环中,先打印一个空的倒三角,然后打印一个实心型三角,同样判断输出行首行尾的星星,中间部分直接打印出空。
(注意循环层数的条件的变化)。
其次,给每层打印换行
-->
<form action="homework20200415.php" method="post">
   <input type="number" name="text" placeholder="请输入要打印的行数">
   <input type="submit" name="act1" value="金字塔">
   <input type="submit" name="act2" value="空心菱形">
</form>

<?php
$act1=$_POST['act1'];
$act2=$_POST['act2'];
// 判断用户是否点击了三角形按钮
if ($act1){
   // 判断是否数据正确
   $num=$_POST['num'];
   if (($num)<=0){
       for ($i=1;$i<=$num;$i++){
           for ($k=1;$k<=$num-$i;$k++){
               echo ' ';
           }
           for ($j=1;$j<=($i-1)*2+1;$j++){
               echo '*';
           }
           echo "\n";
       }


   }
}
// 判断用户是否点击了菱形按钮
if ($act2){
   // 判断是否数据正确
   $num=$_POST['num'];
   if (is_numeric($num)){
       for($i=1;$i<=$num;$i++){
           for($s=1;$s<=$num-$i;$s++){//输出空格
               echo ' ';

           }
           for($j=1;$j<=2*$i-1;$j++){
               if($j==1||$j==2*$i-1){//输出星号
                   echo '*';
               }else{//输出星号里的空格
                   echo ' ';
               }
           }
           echo "\n";
       }
       for ($i=$num-1; $i>=1 ; $i--) {
           for($s=0;$s<=$num-1-$i;$s++){
               echo ' ';
           }
           for($j=1;$j<=2*$i-1;$j++){
               if($j==1||$j==2*$i-1){
                   echo '*';
               }else{
                   echo ' ';
               }
           }
           echo "\n";
       }
   }else{
       echo '请输入正整数';
   }
}

?>
</body>
</html>

感觉没问题唉,但是就是报错

写回答

1回答

guly

2020-04-15

你好,需要注意的是html 和php混编,请求PHP应该放在文件头部,建议参考代码如下:

<?php
$act1=$_POST['act1'];
$act2=$_POST['act2'];
// 判断用户是否点击了三角形按钮
if ($act1){
 // 判断是否数据正确
//    $num=$_POST['num'];
 $num=$_POST['text'];
//    if (($num)<=0){
 if (($num)>=0){
 for ($i=1;$i<=$num;$i++){
 for ($k=1;$k<=$num-$i;$k++){
//                echo '';
 echo "&nbsp";
            }
 for ($j=1;$j<=($i-1)*2+1;$j++){
 echo '*';
            }
//            echo "\n";
 echo '<br/>';
        }
    }
}
// 判断用户是否点击了菱形按钮
if ($act2){
 // 判断是否数据正确
//    $num=$_POST['num'];
 $num=$_POST['text'];
 if (is_numeric($num)){
 for($i=1;$i<=$num;$i++){
 for($s=1;$s<=$num-$i;$s++){//输出空格
//                echo ' ';
 echo "&nbsp";
            }
 for($j=1;$j<=2*$i-1;$j++){
 if($j==1||$j==2*$i-1){//输出星号
 echo '*';
                }else{//输出星号里的空格
//                    echo ' ';
 echo "&nbsp";
                }
            }
//            echo "\n";
 echo '<br/>';
        }
 for ($i=$num-1; $i>=1 ; $i--) {
 for($s=0;$s<=$num-1-$i;$s++){
//                echo ' ';
 echo "&nbsp";
            }
 for($j=1;$j<=2*$i-1;$j++){
 if($j==1||$j==2*$i-1){
 echo '*';
                }else{
//                    echo ' ';
 echo "&nbsp";
                }
            }
//            echo "\n";
 echo '<br/>';
        }
    }else{
 echo '请输入正整数';
    }
}
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<!--
步骤一:在这个PHP文件中混编html代码,实现输入行数的input框以及“金字塔”和“空心菱形”的button按钮。
注意:
button按钮需设置value值,方便区分页面点击button按钮出现对应的图案。
form表单的提交地址是当前页面。

步骤二:金字塔实现步骤:

 1、在PHP部分,首先接受表单POST方式的传参,判断参数是否是金字塔,如果是金字塔参数,那么就执行实现金字塔的循环。
 2、实现每行相对前一行多2个*的规律。
首先,接受页面传过来的层数n,循环n,在这个循环中先打印一个由空格组成的倒直角三角形,注意可能有些浏览器对 &nbsp 与 * 的大小解析不相等,所以这里可以输出隐藏样式(style=”color:#FFF;”)的*来保证在浏览器页面呈现的是一个完全的倒三角。
其次,在层循环中打印一个由星号组成的等腰三角形,三角形星星的个数=2*层数-1。
最后,输出换行即可。

步骤三:空心菱形实现步骤:
1、在PHP部分,首先接受表单POST方法的传参,判断参数是否是空心菱形,如果是空心菱形参数,那么就执行实现空心菱形的循环。
2、用循环实现一个第一行和最后一行是一颗星星,其余中间每一行是行头,行尾各一颗星星的菱形的形状。

参考实现思路:
实现菱形的上半部分(想象一个空心的无底边三角形)。
首先,接受页面传过来的层数,循环这个层数。
其次,在层数的循环中,先打印一个空的倒直角三角,然后打印一个实心型三角,判断输出行首行尾的星星,中间部分直接打印出空。
最后,给每层打印换行。

实现菱形的下半部分(想象成一个空心的无底边的倒三角形)。
首先,在层数的循环中,先打印一个空的倒三角,然后打印一个实心型三角,同样判断输出行首行尾的星星,中间部分直接打印出空。
(注意循环层数的条件的变化)。
其次,给每层打印换行
-->
<form action="test.php" method="post" >
    <input type="number" name="text" placeholder="请输入要打印的行数">
    <input type="submit" name="act1" value="金字塔">
    <input type="submit" name="act2" value="空心菱形">
</form>

</body>
</html>

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

0
heixin_慕沐1378591
回复
huly
h 谢谢老师,之前在phpstorm测试的时候忘记改了...
h020-04-16
共3条回复

0 学习 · 4928 问题

查看课程

相似问题

回答 2

未定义指数

回答 1

回答 1

回答 1

回答 1