繁体   English   中英

您如何从早期的php代码向表单分配变量以发布到下一个php页面?

[英]How do you assign a variable to a form from earlier php code to post to next php page?

我正在创建一个网站,该网站通过提交表单收集用户评论,然后将所有评论输出到页面上,可以在1-10之间对其进行评分。 我在评分系统部分遇到问题。

我有一个带有用于评估的单选按钮的表单,该表单通过“ SendRating.php”通过邮寄值发送。 我还想发送一个先前使用的变量,即与特定评论和特定评分相关联的“ id”。 我试图使用隐藏的输入来执行此操作,但是我似乎无法正确获取语法,无论尝试如何,我似乎都会遇到错误。

我将向您展示我拥有的两个php文件:

<?php
    $con=mysqli_connect("host","me","pwd","base");
    // Check connection
    if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $query= "SELECT  id, comment, date_made, rating FROM table ORDER BY id DESC LIMIT 15";
    $result=mysqli_query($con, $query);
while ($row=mysqli_fetch_array($result))
    {
        $date=$row['date_made'];
        $id=$row['id'];
        $num_id=intVal($id);
        $current=$row['rating'];

        echo '<div id="text" onpaste="return false"; oncut="return false"; readonly>';
        echo '<div id="text2">';
        echo "Submitted: ";
        echo date('l jS F Y H:i:s ',strtotime($date));echo '&nbsp;'; echo '&nbsp;'; 
        echo '&nbsp;'; echo "No: ";  echo $row['id']; 
        echo '</div>';

        echo '<br>'; 
        echo nl2br($row['comment']);
        echo '<br>'; echo '<br>'; 
        echo '</a>';

        //FOOT
        echo '<div >'; 
        echo '<form id="radio" name="input_rating" action="SendRating.php"     method="post" >';
        echo '<input type="hidden" name="id" value="'$id'" >';
        echo '<input  id="radio" type="radio" name="rating"  onclick="this.form.submit()" value="1">1';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="2">2';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="3">3';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="4">4';
        echo '<input  id="radio" type="radio" name="rating"     onclick="this.form.submit()" value="5">5';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="6">6';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="7">7';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="8">8';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="9">9';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="10">10';

        echo '&nbsp;'; echo '&nbsp;'; echo '&nbsp;'; echo  "Rating: ";
        echo '&nbsp';
        echo  "$current";
        echo '</form>';

        echo '</div>';

        //END FOOT

         echo '</div>'; 
         echo '<p></p>';
    }
?> 

表单操作由以下内容处理(或者如果全部正常,则进行处理):

<?php
    $con2=mysqli_connect("host","me","pwd","base");

    // Check connection
    if (mysqli_connect_errno($con2))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
        $value=$_POST['rating'];
        $id=$_POST['id'];

    mysqli_query  ($con2, "UPDATE table SET totalraters = totalraters + 1 WHERE id='$id' ");
    mysqli_query  ($con2, "UPDATE table SET ratingsum = ratingsum + '$value' WHERE id='$id' ");

    $query2 = mysqli_query ($con2, "SELECT FROM table ratingsum, totalraters WHERE id = '$id' ");
    $result2 = mysqli_query($con2, $query2);
    $row2 =mysqli_fetch_array($result2);

    $ratingsum=$row2['ratingsum']; 
    $totalraters=$row2['totalraters'];
    $current = $ratingsum/$ratingtotal;
    mysqli_query ($con2, "INSERT INTO table rating VALUE '$current' WHERE id='$id' ");

    include ('/index.html')
?>   

包含页面应将用户带回到更新评分的起始页面。

ratingsum是给定评分的总和,totalraters是获得评分的人数。 $ current应该是给出当前评级的平均值。

我目前遇到的问题是

echo '<input type="hidden" name="id" value="'$id'" >';

我似乎无法将ID从一个地方获取到另一个地方以用于进一步的查询。 我收到此行的语法错误。 非常感谢您的帮助,并相信我已经尝试了所有正确解决方案以外的方法!! 请使用过程式程序,因为我是新手,根本无法理解面向对象...这使我的头部受伤;-)

这是通过以下方式完成的:

echo '<input type="hidden" name="id" value="' . $id . '" >';

看到字符串和变量之间的那些溺爱,他们说要合并它们。 这将是不正确的:

echo '<input type="hidden" name="id" value="$id" >';

因为单引号会忽略变量。 感谢michilemondrop的小费!

为了改善@ivan的答案..是的,他是正确的,但是他给出了无效的代码,可能会导致意外的输出/错误。

echo '<input type="hidden" name="id" value="' . $id . '" >';

您可能会遇到一个Notice: Undefined Index $id所以最好处理抛出的错误,这是我能想到的最好方法,当您希望打印HTML时,请退出PHP标签:

?>
<input type="hidden" name="id" value="$id" >
<?php
 ....

但是,然后处理一个可能的未定义索引(这仍然超出了您的PHP标记)

<input type="hidden" name="id" value="<?php if (isset($id)){ echo $id; } ?>">

这将告诉PHP仅在设置了ID的情况下才输出ID,这将最大程度地减少可能的未定义索引错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM