【问题标题】:How to access value of a label in php?如何在php中访问标签的值?
【发布时间】:2011-10-24 03:50:04
【问题描述】:

我正在尝试为一个网站创建一个数学问题集,用户将在其中得到一个方程式,他们必须在表格中写下答案。

我的 HTML 标记如下所示

    <p> Please write the sum of these two numbers </p>
    <label for="num1">Number1: <?php echo rand(2,200)?> 
    <label for="num2">Number2: <?php echo rand(2,200)?> 
    <input name="sum" type="text" />

我希望能够检查输入的两个值的总和是否正确。这只是通用的。它最终会为问题提供更多变量和不同的数学运算符

如何使用 PHP 服务器端脚本执行以下操作:

a) 标签的值来自 echo rand() 函数和 b) 如何获取代码以将它们存储为变量并输出到屏幕?

PS:我必须在 php 端做这件事,我知道这可以用 Javascript/Jquery 做。

提前感谢您的帮助。

瓦伦

【问题讨论】:

    标签: php html math random label


    【解决方案1】:

    你不能。您需要将随机值放入隐藏字段:

    <p> Please write the sum of these two numbers </p>
    <?php
      $Value1 = rand(2, 200);
      $Value2 = rand(2, 200);
    ?>
    Number1: <?php echo $Value1; ?> 
    Number2: <?php echo $Value2; ?>
    <input type="hidden" name="Value1" value="<?php echo $Value1; ?>" />
    <input type="hidden" name="Value2" value="<?php echo $Value2; ?>" />
    <input name="sum" type="text" />
    

    另外,我不认为你想在这里使用标签元素。 HTML 中的标签与 UI 系统中的标签不同:在 HTML 中,它们必须附加到控件。

    【讨论】:

      【解决方案2】:

      除了Javascript,您无法访问与&lt;label&gt; 相关的任何内容,最简单的方法(除了使用会话数据)是使用&lt;input&gt;

      您需要声明该值一次,因此不会向用户显示与输入中存储的值不同的值。快速示例:

      <?php
      $num1 = rand(2,200);
      $num2 = rand(2,200);
      ?>
      
      <p> Please write the sum of these two numbers </p>
      <label for="num1">
          Number1: <?php echo $num1; ?>
          <input name="num1" type="hidden" value="<?php echo $num1; ?>" />
      </label>
      <label for="num2">
          Number2: <?php echo $num2; ?>
          <input name="num2" type="hidden" value="<?php echo $num2; ?>" />
      </label>
      <input name="sum" type="text" />
      

      【讨论】:

        【解决方案3】:

        使用变量存储随机值和隐藏字段以将它们与表单一起发送。

        <form action="results.php" method="get">
            <p> Please write the sum of these two numbers </p>
            <? $var1 = rand(2,200);
            $var2 = rand(2,200); ?>
            <input type="hidden" name="operand1" value="<?= $var1 ?>" />
            <input type="hidden" name="operand2" value="<?= $var2 ?>" />
            <label for="num1">Number1: <?=$var1?> </label>
            <label for="num2">Number2: <?=$var2?> </label>
            <input name="sum" type="text" />
            <input type="submit" value="submit" />
        </form>
        

        是的,我使用的是短标签。不行的话就换一个

        【讨论】:

          【解决方案4】:

          你不能只用 PHP 获取标签内容,你可以通过 JS 将它发送到 php 脚本或将这些数字保存在隐藏字段中,但这意味着人们可以很容易地更改隐藏字段的值.我建议您这样做的方法是将随机数保存在用户会话中,以便在提交答案或刷新页面后您可以完全控制它。

          【讨论】:

            【解决方案5】:

            将您只是回显数字的地方转换为只读文本输入,然后在提交表单时将值提交回来(我假设这是较大表单的一部分,因为您没有使用 js)。

            <p> Please write the sum of these two numbers </p>
                <label for="num1">Number1:</label> <input id="num1" name="num1" type="text" value="<?php echo rand(2,200)?>" readonly="readonly" /> 
                <label for="num2">Number2:</label> <input id="num2" name="num2" type="text" value="<?php echo rand(2,200)?>" readonly="readonly" /> 
                <input name="sum" type="text" />
            

            您可以使用 CSS 来设置这些输入的样式,使它们看起来更像是内嵌文本。

            【讨论】:

            • 不错的解决方案,一石两鸟。唯一的问题是&lt;input&gt; 倾向于隐藏溢出或有换行符的文本,因此这并不总是以您想要的方式出现(即使使用 CSS)。如果数字很小,这应该没问题。
            • @Wesley 同意,但是对于已知的限制,您可以确保它足够大。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-02
            • 2011-04-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多