【问题标题】:problems with another form另一种形式的问题
【发布时间】:2014-02-11 07:41:44
【问题描述】:
<?php
         error_reporting(E_ALL);
    ini_set( 'display_errors','1');

    if(isset($_POST["signupbtn"])) {
        if ($log_username) {
            /// getting data from submitted form into local variables
            $yt = preg_replace('#[^a-z 0-9]#i', '', $_POST['youtubei']);
            $t = preg_replace('#[^a-z 0-9]#i', '', $_POST['twitchi']);
            $vt = preg_replace('#[^a-z 0-9]#i', '', $_POST['videotypei']);
            $ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR'));
            // -------------------------------------------
                if (is_numeric($t[0])) {
                echo 'Twitch Account cannot begin with a number';
                exit();
            } else  { $sqli = "UPDATE profilepage SET youtube='$yt' WHERE username='$log_username'";
                    $query = mysqli_query($db_conx, $sqli); 
                     $sqli = "UPDATE profilepage SET twitch='$t' WHERE username='$log_username'";
                    $query = mysqli_query($db_conx, $sqli); 
                     $sqli = "UPDATE profilepage SET videotype='$vt' WHERE username='$log_username'";
                    $query = mysqli_query($db_conx, $sqli); 
                       echo "Video feeds update"; 

                exit();     
                }
         }
    }

    ?>
    <?php {
    echo('<form action="profile_interface/modules/videofeedform.php" method="POST" name="videoform">');
    echo('<input id="youtubei" value="YouTube Video Key" maxlength="16">');
    echo('<input id="twitchi" value="twrdodge" type="text" maxlength="16">');
    echo('<select id="videotypei"><option value="">Select Display video</option>');
    echo('<option value="yotubekey">YouTube</option>');
    echo('<option value="twitchuser">Twitch</option>');
    echo('</select>');
    echo('<input type="submit" id="signupbtn" name="signupbtn"></form>');
    }
    EXIT();

    ?>

首先我想学习 php。我读了几本书,看了很多视频(我还在学习)。

我现在正在尝试通过更新数据库上的信息来试验表单。该表已在注册期间建立,现在我想对其进行更新。

好的,所以上面的代码是表单和 php 到数据库。这嵌入在显示此内容没有问题的页面上,该页面称为 user.php(用户个人资料页面)。

现在的问题是每次我填写表格并提交时,它只是刷新页面,而当我查看数据库时,没有任何更新。我想知道是否有人能够指出我哪里出了问题。

我尝试过的: 1)我尝试删除除一个输入之外的所有表单输入(和相关数据库代码),它只是刷新。 2)我尝试过使用INSERT INTO

现在$log_username 不是问题,因为顶级脚本会对此进行检查,一切都恢复正常,所以我知道$log_username 不是问题。

它根本不会带回任何错误,并且与数据库的连接也是通过顶部的INCLUDE_ONCE 建立的,这不是问题,因为它可以在整个网站上运行。

如果有人能指出我在这里出错的地方并可能在回复中输入正确的代码,我将非常感激。感谢您抽出宝贵时间阅读本文,期待您的回复。

【问题讨论】:

  • 您实际在哪里提交表单?我没有看到将提交按钮链接到表单提交的任何内容。另外 - 你为什么使用 PHP 来echo() HTML?如果你只是删除周围的&lt;?php?&gt; 你可以只写HTML
  • @Dutchie432 在大多数浏览器中,一个
  • @DickW 老实说,我一生中从未使用过&lt;button&gt; 标签。我只是使用 CSS 来设置 div 和输入的样式。谢谢你的解释。
  • 如果我不回显表单,那么我会在表单下得到一个 1。我不确定为什么会发生这种情况,但确实如此。这可能是因为您需要在数据库上激活此表单才能显示。激活脚本工作正常

标签: php forms mysqli


【解决方案1】:

$_POST["signupbtn"] 使用名称属性而不是 id 属性

把你所有的身份证改成名字,你就应该工作了。也可以代替&lt;button id="signupbtn"&gt;Submit&lt;/button&gt; 使用&lt;input type="submit" name="signupbtn" value="Submit" /&gt;

echo('<form action="profile_interface/modules/videofeedform.php" method="POST" name="videoform">');
echo('<input name="youtubei" value="YouTube Video Key" maxlength="16">');
echo('<input name="twitchi" value="twrdodge" type="text" maxlength="16">');
echo('<select name="videotypei"><option value="">Select Display video</option>');
echo('<option value="yotubekey">YouTube</option>');
echo('<option value="twitchuser">Twitch</option>');
echo('</select>');
echo('<input type="submit" name="signupbtn" value="Submit" /></form>');

【讨论】:

  • 感谢您的回复。我现在用一个名字更新了它,还更新了原始帖子中的代码。我仍然遇到同样的问题,没有数据库更新,也没有数据写入数据库
  • 您是否从脚本中得到任何回应?如果不是,我建议将 else { echo 'log_username is false';} 添加到 'if($log_username)' 语句中也类似于 if(isset($_POST["signupbtn"])) 语句,这样你就可以准确地看到你的脚本失败的地方
  • 我也试过你问我的,但似乎没有回应任何东西。这是我在哪里输入代码的图片gyazo.com/52ec2e5984d48f1de781655073bccdb9 感谢您的回复和时间
  • 如果这没有打印出任何内容,那么if(isset($_POST["signupbtn"])) { 条件一定不会因任何原因被触发,可能是您的名称错误,以准确检查发布到您的脚本的内容可以将print_r($_POST); 放在文件顶部(这可能有助于缩小问题范围)
  • 现在解决了。这是因为我需要在我的脚本中进行多次会话检查。我通过将包含文件夹放入包含脚本的每个文件夹中来解决它。感谢您的宝贵时间,因为您的 cmets 帮助我解决了这个问题。
【解决方案2】:

第一件事

您需要一个提交按钮的名称。你有

<button id="signupbtn">

我建议把它做成

<input type="submit" id="signupbtn" name="signupbtn">

你正在使用

if(isset($_POST["signupbtn"])) {)

所以它不会找到任何具有您指定名称的 POST,除非您的表单有一些具有该名称的元素。

【讨论】:

  • 感谢您的回复。我已将更新代码添加到原始代码中。我已经对其进行了测试,页面仍然刷新并且没有数据库更新。再次感谢
  • 嗯可能是一些sql错误?您可以通过对表单元素进行回显来验证代码是否在 if(isset($_POST["signupbtn"])) {} 内。
  • 对,但是您需要使用 echo 那些在该块内发布的数据来查看是否所有数据都通过了,如果是,则下一步检查查询错误
  • 并检查 mysqli 错误,这将使您更了解正在发生的事情
  • 嗯,检查您的表单代码所有元素都需要一些您只有 id 的名称。您还需要添加名称。 等所有元素,包括选择。否则 $_POST["youtubei"] 等在 PHP 中不会收到任何值
猜你喜欢
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 2019-05-05
  • 1970-01-01
  • 2022-08-15
相关资源
最近更新 更多