【问题标题】:PHP Getting value from a function by formPHP 通过表单从函数中获取值
【发布时间】:2021-08-13 09:41:58
【问题描述】:

我想通过表单作为用户输入的函数获得一个值,但我认为我做得不对,谁能帮助我。

代码就像在表单中输入数字 1 然后它会在星期天这样的日子输出。

输出:-

Enter days values between (0-6): 1
The day is Monday.

我的代码:-

<?php
        function day_of_week($week){
           $week = $_POST['week'];
           $week = array(0 => Sunday, 1 => Monday, 2 => Tuesday, 3 => Wednesday, 4 => Thursday, 5 => Friday, 6 => Saturday);

            return $week;
        }

        if(isset($_POST['submit'])){
            $value = $_POST['value'];
            echo "The day is " . day_of_week($value);
        }
    ?>

    <form method="POST" action="">
        <label>Enter days value between (0-6):</label>
        <input type="text" name="value">
        <input type="submit">
    </form>

我搜索了一些代码和一些可以分配星期的代码

date('w'); 

if(date('w') == 1){
    echo "its monday baby";
}

或者在案例代码中。但是我不太确定如何正确调用该值并进行分配。哪个更适合赋值,array 或 date() 或 case 进行赋值?

请帮我解释一下为什么我的价值也没有正确显示。

感谢任何人的帮助,非常感谢。

【问题讨论】:

  • 你的函数 day_of_week($week)s 错了。

标签: php arrays forms function


【解决方案1】:

把函数改成

function day_of_week($x){
    $week = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    return $week[$x];
}

别忘了填写表单中的action部分。

<form method="post" action='<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>'>

【讨论】:

  • 嗨,它实际上并没有显示输出,这是为什么?我确实写了回声
  • 您的表单操作为空。
    ">
  • 我仍然无法得到答案,但&lt;?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?&gt; 究竟做了什么?
  • 这意味着您的表单数据将在同一个文件中进行 PHP 处理。您的提交按钮设计不正确(缺少 name 以触发 POST 调用*。将其替换为
  • 哦,我学到了一些新东西,谢谢,这意味着如果我想在同一个文件中处理某些内容,我使用&lt;?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?&gt;
【解决方案2】:

您需要为键值对中的字符串添加双引号,然后返回日期及其位置

<?php 
function day_of_week($day){
           $week = array(0 => "Sunday", 1 => "Monday", 2 => "Tuesday", 3 => "Wednesday", 4 => "Thursday", 5 => "Friday", 6 => "Saturday");

            return $week[$day];
        }

if(isset($_POST['submit'])){
            $value = $_POST['value'];
            echo "The day is " . day_of_week($value);
        }
?>
 <form method="POST" action="">
        <label>Enter days value between (0-6):</label>
        <input type="text" name="value">
        <input type="submit">
    </form>

【讨论】:

  • 哦,好吧,但是双引号和单引号之间有什么区别,因为有时我会遇到只使用单引号的整个代码,有时还会混合使用单引号和双引号。这是为什么呢?
  • 嗨,它实际上并没有显示输出,这是为什么?我确实写过回声。
【解决方案3】:

使用内置函数 date 的 for 循环动态生成星期几,格式为 l,表示星期几。

$weekdays = [];
for($i=0;$i<7;$i++){
    $weekdays[$i] = date('l', strtotime("Sunday this week +$i days"));
}

所以数组 $weekdays 将包含从索引 0 开始的日期,即 星期日星期六

print_r($weekdays);

打印:

Array
(
    [0] => Sunday
    [1] => Monday
    [2] => Tuesday
    [3] => Wednesday
    [4] => Thursday
    [5] => Friday
    [6] => Saturday
)

最好使用type="number"而不是text,并使用startmax等一些属性。

<input type="number" name="value" start='0' value="2" max="6">

【讨论】:

  • 感谢您给我一些提示,并且 start 和 max 就像告诉它不能超过这个数字,对吧?
  • 没问题!是的,我的意思是,因为它是数字,实际上它可以被强制超过最大6的范围,但你需要在后端用PHP控制它。
  • 哦,好的,我明白了,非常感谢,我会注意这一点。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 2016-05-21
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多