如何在 PHP 中通过 GET 请求传递输入名称

2024-02-01

我正在 PHP OOP 中构建一个网站 CMS,在这个 CMS 中,基本上有一个选项可供网站管理员更新其导航菜单项。所以它基本上看起来像这样:

打印屏幕 https://i.stack.imgur.com/UH1SG.png

其代码如下:

<?php 
    if (isset($_GET['id'])){
        $id = $_GET['id'];
        $menuSet = new Menus();
        $menuSet->SelectMenuById($id);
        echo "
        <div class='content-wrapper'>
            <section class='content-header'>
                <h1>
                    Menu Settings
                    <small>".$menuSet->GetMenuName()."</small>
                </h1>
                <ol class='breadcrumb'>
                    <li class='active'>menusettings.php</li>
                </ol>
            </section>
            <section class='content'>
                <div class='row'>
                    <div class='col-xs-12'>
                      <div class='box'>
                        <div class='box-header'>
                          <h3 class='box-title'></h3>

                          <div class='box-tools'>
                            <div class='input-group input-group-sm' style='width: 150px;'>
                              <input type='text' name='table_search' class='form-control pull-right' placeholder='Search'>

                              <div class='input-group-btn'>
                                <button type='submit' class='btn btn-default'><i class='fa fa-search'></i></button>
                              </div>
                            </div>
                          </div>
                        </div>
                        <!-- /.box-header -->
                        <div class='box-body table-responsive no-padding'>
                          <table class='table table-hover'>
                            <tr>
                              <th>Number</th>
                              <th>Link</th>
                              <th></th>
                            </tr>
                            ";
                            for($i=1;$i<=$menuSet->GetMenuItems();$i++){ 
                                $func = "GetMenuLink".$i;
                                /* $menuItemValue = $menuSet->{$func}();
                                if (!$menuItemValue) {
                                    continue;
                                } */
                                echo "
                                    <tr>
                                    <td>$i</td>
                                    <td><input type='text' name='' value='".$menuSet->$func()."'/></td>
                                    <td>
                                        <a title='Edit' href='itemedit.php?i=$i'><span class='glyphicon glyphicon-pencil'></span></a>&nbsp; 
                                        <a title='Remove' href='itemdelete.php?i=$i'><span class='glyphicon glyphicon-remove'></span></a>
                                    </td>
                                    </tr>
                                ";
                            }
                            echo "
                          </table>
                        </div>
                        <!-- /.box-body -->
                      </div>
                      <!-- /.box -->
                    </div>
                  </div>
            </section>
        </div>
    ";
    }else{
        echo "
        <div class='content-wrapper'>
            <section class='content-header'>
                <h1>
                    Menu Settings
                    <small></small>
                </h1>
                <ol class='breadcrumb'>
                    <li class='active'>menusettings.php</li>
                </ol>
            </section>
            <section class='content' style='text-align:center;'>
                <h5><strong> 
                    You need to adjust the <span style='color:red'>menu_name</span> in the url first. So go back to <a href='dashboard.php'>dashboard</a> page.</br>
                </strong></h5>   
            </section>
        </div>
        ";
    }
    ?>

如您所见,我使用了 for 循环从 MySQL 表中检索数据:(从第 43 行开始)

for($i=1;$i<=$menuSet->GetMenuItems();$i++){ 
                                $func = "GetMenuLink".$i;
                                /* $menuItemValue = $menuSet->{$func}();
                                if (!$menuItemValue) {
                                    continue;
                                } */
                                echo "
                                    <tr>
                                    <td>$i</td>
                                    <td><input type='text' name='' value='".$menuSet->$func()."'/></td>
                                    <td>
                                        <a title='Edit' href='itemedit.php?i=$i'><span class='glyphicon glyphicon-pencil'></span></a>&nbsp; 
                                        <a title='Remove' href='itemdelete.php?i=$i'><span class='glyphicon glyphicon-remove'></span></a>
                                    </td>
                                    </tr>
                                ";
                            }

这是包含项目名称的表:

打印屏幕 2 https://i.stack.imgur.com/lMqhE.png

这是班级(菜单.class.php)我为此使用过:

    <?php 
    class Menus
    {
        public $id,$mname,$menui,$menul1,$menul2,$menul3,$menul4,$menul5,$menul6,$menul7,$menul8,$menul9,$menul10,$menul11,$menul12,$menul13;
        public function __construct()
        {
            $this->db = new Connection();
            $this->db = $this->db->dbConnect();
        }
        public function GetMenus()
        {
            if(empty($name))
            {
                $menu = $this->db->prepare("select * from menu_nav");
                $menu->execute();
                $menu_array = array();
                while($row = $menu->fetch())
                {
                    $menu_array[] = $row;
                }
                return $menu_array;
            }
            else
            {
                header("Location: php/includes/errors/008.php");
                exit();
            }
        }
        public function SelectMenuById($id)
        {
            if(!empty($id))
            {
                $mnu = $this->db->prepare("select * from menu_nav where id = ?");
                $mnu->bindParam(1,$id);
                $mnu->execute();
                while($row = $mnu->fetch())
                {
                    $this->id           = $row['id'];
                    $this->mname        = $row['menu_name'];
                    $this->menui        = $row['menu_items'];
                    $this->menul1       = $row['menu_link_1'];
                    $this->menul2       = $row['menu_link_2'];
                    $this->menul3       = $row['menu_link_3'];
                    $this->menul4       = $row['menu_link_4'];
                    $this->menul5       = $row['menu_link_5'];
                    $this->menul6       = $row['menu_link_6'];
                    $this->menul7       = $row['menu_link_7'];
                    $this->menul8       = $row['menu_link_8'];
                    $this->menul9       = $row['menu_link_9'];
                    $this->menul10      = $row['menu_link_10'];
                    $this->menul11      = $row['menu_link_11'];
                    $this->menul12      = $row['menu_link_12'];
                    $this->menul13      = $row['menu_link_13'];
                }
            }
            else
            {
                header("Location: php/includes/errors/009.php");
                exit();
            }
        }
        public function DeleteMenu($id)
        {
            if(!empty($id))
            {
                $adm = $this->db->prepare("delete from menu_nav where id = ?");
                $adm->bindParam(1,$id);
                $adm->execute();
            }
            else
            {
                header("Location: php/includes/errors/010.php");
                exit();
            }
        }
        public function DeleteMenuItem($i)
        {
            if(!empty($i))
            {
                $adm = $this->db->prepare("UPDATE menu_nav SET menu_link_$i = NULL");
                $adm->bindParam(1,$i);
                $adm->execute();
            }
            else
            {
                header("Location: php/includes/errors/011.php");
                exit();
            }
        }
        public function EditMenuItem($i,$e)
        {
            if(!empty($i))
            {
                $adm = $this->db->prepare("UPDATE menu_nav SET menu_link_$i = $e");
                $adm->bindParam(1,$i);
                $adm->execute();
            }
            else
            {
                header("Location: php/includes/errors/012.php");
                exit();
            }
        }
        public function GetId()
        {
            return $this->id;
        }
        public function GetMenuName()
        {
            return $this->mname;
        }
        public function GetMenuItems()
        {
            return $this->menui;
        }
        public function GetMenuLink1()
        {
            return $this->menul1;
        }
        public function GetMenuLink2()
        {
            return $this->menul2;
        }
        public function GetMenuLink3()
        {
            return $this->menul3;
        }
        public function GetMenuLink4()
        {
            return $this->menul4;
        }
        public function GetMenuLink5()
        {
            return $this->menul5;
        }
        public function GetMenuLink6()
        {
            return $this->menul6;
        }
        public function GetMenuLink7()
        {
            return $this->menul7;
        }
        public function GetMenuLink8()
        {
            return $this->menul8;
        }
        public function GetMenuLink9()
        {
            return $this->menul9;
        }
        public function GetMenuLink10()
        {
            return $this->menul10;
        }
        public function GetMenuLink11()
        {
            return $this->menul11;
        }
        public function GetMenuLink12()
        {
            return $this->menul12;
        }
        public function GetMenuLink13()
        {
            return $this->menul13;
        }
    }
?>

所以一切都很好,除了一件事......

问题是我无法更新和更改菜单项,因为我提供了一个输入字段,并且我不知道如何传递该字段的数据itemedit.php菜单导航 ID 中的页面:

<tr>
                                <td>$i</td>
                                <td><input type='text' name='' value='".$menuSet->$func()."'/></td>
                                <td>
                                    <a title='Edit' href='itemedit.php?i=$i'><span class='glyphicon glyphicon-pencil'></span></a>&nbsp; 
                                    <a title='Remove' href='itemdelete.php?i=$i'><span class='glyphicon glyphicon-remove'></span></a>
                                </td>
                                </tr>

那么请问对此有什么想法、建议或解决方案吗?

And itemedit.php也是这样的:

    if (isset($_GET['i'])){
        $i = $_GET['i'];
        $e = // value of the updated input
        $editItem = new Menus();

        if(isset($_POST['yes'])){
            $editItem->EditMenuItem($i,$e);
            echo '<META HTTP-EQUIV="Refresh" Content="0; URL=menus.php">';   
            exit; 
        }
        if(isset($_POST['no'])){
            echo '<META HTTP-EQUIV="Refresh" Content="0; URL=menus.php">';    
            exit; 
        }
echo ... 

没有<form>封装了input元素。另外你已经使用了<input type="submit" ... >元素而不是锚标记将用户输入的数据发送到itemedit.php页。所以改变你的for按以下方式循环,

for($i=1;$i<=$menuSet->GetMenuItems();$i++){ 
    $func = "GetMenuLink".$i;
    ?>
        <tr>
            <form action="itemedit.php?i=<?php echo $i; ?>" method="post">
        <td>$i</td>
        <td><input type='text' name='e' value='<?php echo $menuSet->$func(); ?>'/></td>
        <td>
            <input type='submit' value='Edit' class='glyphicon glyphicon-pencil' />&nbsp; 
            </form>
            <a title='Remove' href='itemdelete.php?i=<?php echo $i; ?>'><span class='glyphicon glyphicon-remove'></span></a>
        </td>
        </tr>
    <?php
}

And in itemedit.php页面,按以下方式处理表单提交的数据,

if (isset($_GET['i'])){
    $i = $_GET['i'];
    $e = $_POST['e'];
    $editItem = new Menus();
    // update the menu items
    $editItem->EditMenuItem($i,$e);
    ...

更新(1):

您准备好的声明和bindParam()方法调用也是错误的。那些应该是这样的:

$adm = $this->db->prepare("UPDATE menu_nav SET menu_link_$i = ?");
$adm->bindParam(1, $e, PDO::PARAM_STR);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 中通过 GET 请求传递输入名称 的相关文章

  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • MySQL - 从数字列表中选择在表的 id 字段中没有对应项的数字

    我有一个数字列表 例如 2 4 5 6 7 我有一个表 foos 带有 foos ID 包括 1 2 3 4 8 9 我想获取我的号码列表 并在我的表的 ID 字段中找到那些没有对应项的号码 实现此目的的一种方法是创建一个表格栏 在 ID
  • Facebook iFrame 应用程序 - 摆脱垂直滚动条?

    我已经转换了一个 Facebook 应用程序 http apps facebook com video preferans 从 FBML 到 iFrame 使用 PHP SDK 现在显示的垂直滚动条与我之前显示的内容数量相同 一个徽标 一个
  • 检查字符串是否是哈希值

    我正在使用 SHA 512 来散列我的密码 当然还有盐 我认为我想要的不可能 但无论如何我们还是要问一下 有没有办法检查字符串是否已经是 SHA 512 或其他算法 哈希值 当用户登录时 我想检查他的密码 如果它仍然是纯文本 则应将其转换为
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • 从 php 执行 bash 脚本并立即输出回网页

    我有一组 bash 和 Perl 脚本 开发在 Linux Box 上部署所需的目录结构 可选 从svn导出代码 从这个源构建一个包 这在终端上运行良好 现在 我的客户请求此流程的 Web 界面 例如 某些页面上的 创建新包 按钮将一一调用
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • json_encode 返回 NULL?

    由于某种原因 项目 描述 返回NULL使用以下代码 这是我的数据库的架构 CREATE TABLE staff id int 11 NOT NULL AUTO INCREMENT name longtext COLL
  • Laravel 登录后重定向回来

    登录后如何重定向返回页面 在 Laravel 5 2 中 认证控制器 protected redirectTo 重定向用户
  • 如何从表中检索特定列 --- JPA 或 CrudRepository?我只想从用户表中检索电子邮件列

    用户模型 Entity Table name user uniqueConstraints UniqueConstraint columnNames email public class User implements Serializab
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • Paypal 将钱从一个帐户转移到另一个帐户

    我知道这个建议如何汇款至任何 PayPal 账户 https stackoverflow com questions 1559808 paypal api send money to any paypal account但到目前为止我所尝试
  • php date_parse("2010 年 2 月") 给出日期 == 1

    当没有日期时 我将其称为 date parse 中的错误 d date parse Feb 2010 会给 d day 1 请参阅对此的评论date parse 手册页 http php net manual en function dat
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • 使用 ImageMagick (PHP) 将 2 个图像并排合并为 1 个图像

    我认为这是一件容易的事 我有 2 张图片 JPG 我希望它们合并成一张图片 其中 2 张图片并排 所以我有图片 A 和图片 B 我想要图片 AB 并排 两个图像具有相同的宽度和高度 在本例中 宽度 200px 高度 300px 但是第二个图

随机推荐

  • 如何将 Tomcat 6 库管理到 %TOMCAT_HOME%/lib 下的子文件夹中?

    我使用 Tomcat 6 0 20 和 JDK 1 6 0 13 如何从子文件夹加载库 TOMCAT HOME lib 无需将 jar 从子文件夹中取出并直接放入 TOMCAT HOME lib 我想这样做的原因是因为许多应用程序将共享大量
  • jQuery 日期格式

    如何使用 jQuery 设置日期格式 我正在使用下面的代码但出现错误 txtDate val format date new Date dd M yy 请提出一个解决方案 在您的页面中添加 jquery ui 插件 txtDate val
  • 多种情况下的熊猫面膜

    在我的数据框中 我想用 nan 替换低于 1 和高于 5 的每个值 这段代码有效 persDf persDf mask persDf lt 1000 我得到了作为 nan 的所有值 但这个没有 persDf persDf mask pers
  • 模型上的自定义保存方法 - django

    我正在重写我的模型之一上的保存方法 def save self args kwargs self set coords super Post self save args kwargs def unicode self return sel
  • onDestroy 关闭应用程序后崩溃

    在重写 onDestroy 方法后 我遇到了一些问题 我的应用程序是一个音乐播放器 使用我需要的媒体播放器实例 如果没有播放音乐 则强制释放它 到目前为止 这是我的代码 为了实现这个技巧 我都重写了 onKeyDown 和 onDestro
  • 如何使 Metro GridView 中的组使用不同的布局?

    我正在编写一个 Windows 8 Metro 应用程序 我正在尝试绘制一个包含三个组的 GridView 我希望其中一组的项目布局与其他组不同 我以前在 WPF 中使用过选择器 所以我认为这是一个很好的途径 所以我尝试了 GroupSty
  • AppleScript 处理程序中的可选参数

    The Applescript 文档 https developer apple com library mac documentation AppleScript Conceptual AppleScriptLangGuide conce
  • Laravel 8:注册后如何验证用户的电子邮件地址而不需要登录信息?

    我使用 Jetstream 设置了 Laravel 8 安装并实现了自定义用户注册 在成功创建数据库记录后会触发一个事件event new Registered user 初始注册过程应该不需要密码 因为将来只有选定的一组用户能够登录仪表板
  • 替换对象属性中的某些文本?

    我需要请求一些以对象形式出现的信息 我需要替换其中一个属性中的一些测试 然后将对象列表写入 CSV 当我做 Get Process select Path Replace chrome ie 我有两个问题 如果 Path 为 null 则会
  • 如何将 ltrace 用于 mpi 程序?

    我想知道如何使用 ltrace 获取 mpi 应用程序的库函数调用 但 ltrace 不起作用 我的 mpirun 无法成功 任何想法 您应该能够简单地使用 mpiexec n 4 other mpiexec options ltrace
  • Android,Intent(this,........)中的this是什么意思[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在 android SDK 中创建一个意图 但我不知道何时使用 this 值作为参数或其他值 有人可以解释 this 的用途吗 我知道
  • 如何在 sbt 0.13 中使用 sbt-scalabuff 插件?

    我正在尝试使用sbt scalabuff 插件 https github com sbt sbt scalabuff 但是sbt一直抱怨找不到插件 插件文档也没有说明解析器 url 该插件是否已弃用或者我的 Scala 版本不受支持 Det
  • 查找对象库vba的VBIDE.Reference.Name

    我发现了如何以编程方式添加引用 https stackoverflow com questions 9879825 how to add a reference programmatically与VBA 这解释了如何使用库的名称以编程方式添
  • 通过 dart2js 进行 Dart 包管理

    我正在学习 Dart 及其依赖管理器pub我很难在这里看到 透过树木看到森林 说我想用聚合物飞镖 https www dartlang org polymer dart 在我的项目中 因此 在我的项目根目录中 我创建以下内容pubspec
  • Twitter bootstrap - 在已打开的模式上打开模式

    这是我的场景 我正在打开一个包含一些记录详细信息的模式窗口 并且有一个 删除 按钮 当用户单击此按钮时 我需要在现有模式上方 上方显示 确认 模式 询问 您确定吗 但是当显示此确认模式时 它不会首先阻止 详细信息 模态 后面 有谁知道我该怎
  • Flutter:绑定尚未初始化

    将 FLutter 升级到3 0 0我在使用时遇到这个错误计算隔离 知道我已经在 main dart 中初始化了 void main async WidgetsFlutterBinding ensureInitialized 我在Flutt
  • 如何让 cscope 在搜索过程中显示完整文件路径

    当我使用以下命令搜索 C 符号或全局定义时cscope 它显示文件名和行号 我想查看完整的文件路径 以便我可以跳转到我的拱门特定文件 例如 当搜索全局定义时 switch to on cscope在 Linux 代码库上构建 我得到 Glo
  • Nodejs:查询中数组的 url.parse 问题

    http domain com action params 1 params 2 params 3 returns query params 1 2 3 params 作为名称而不是params PHP 之后 有点令人惊讶 jQuery 序
  • 自动映射器更新现有对象而不是创建新对象[重复]

    这个问题在这里已经有答案了 有什么办法可以使用吗自动映射器5 1 1更新现有对象而不是创建新对象 例如我们有一个Customer实体和一个CustomerViewModel 我们想更新现有的Customer与CustomerViewMode
  • 如何在 PHP 中通过 GET 请求传递输入名称

    我正在 PHP OOP 中构建一个网站 CMS 在这个 CMS 中 基本上有一个选项可供网站管理员更新其导航菜单项 所以它基本上看起来像这样 打印屏幕 https i stack imgur com UH1SG png 其代码如下