一个列表框的许多元素到另一个列表框

2024-04-02

这是我第一次使用这种媒介寻求帮助。我想知道如何在我的代码中包含两个列表框。一个查询数据库,然后通过一个按钮将其发送到另一个,并使用多个选项来执行此操作,然后如 php 代码中所示,将第二个列表框中的数据放入表数据库中。谢谢。

<?php
include("server.php");
$conexion = mysql_connect($server,$user, $pass) or die ("<br> No se puede conectar con la base de datos");
$conectarbase = mysql_select_db ($bd);

$consulta = mysql_query("SELECT * FROM modalidad")

?>
<html lang = "es">
  <head>
    <meta charset = "iso-8859-1"/>
    <meta name = "description" content = "Ejemplo de HTML5"/>
    <meta name = "keywords" content = "HTML5, CSS3, Javascript"/>
    <title>PRECEPTORÍA</title>
    <link rel="shortcut icon" href="./style/favicon.png" /> 
    <link rel = "stylesheet" href = "./style/style.css">
  </head>
  <body class = "body">
    <section class = "section">
      <div class = "div">
        <form>
          <fieldset id = "fieldsetalum">
            <legend id = "legendalum">Registro de nuevos alumnos</legend>
            <select name="combo1" multiple size="8">
              <?php
while ($fila = mysql_fetch_row($consulta))
{
echo "<option value='".$fila['0']."'>".$fila['1']."</option>";
}
?>
            </select>
            <select name="combo2" multiple size=></select>
          </fieldset>
        </form>
      </div>
    </section>
  </body>
</html>

您的表单需要一个操作来提交给自身:

     <form name="form" id="form" action="<?php echo echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>" method="post"> 

您可以添加一个 onChange();事件给你的select1落下

     <select name="combo1" multiple size="8" onChange="submit_this();">

并在你的程序中有一个 JavaScript 脚本<head>

     <script language="javascript"> function submit_this(){ this.form.submit();}</script>

然后你必须使用 php 从提交的页面收集值

      $combo1 =  mysqli_real_escape_string( $_POST['combo1'] );

然后您可以返回带有第二个下拉列表的页面,该页面的构造方式与创建第一个下拉列表的方式大致相同,使用从第一个下拉列表返回的数据来设置第二个下拉列表。您可以将第一个下拉列表包装在isset():

        if( !isset( $combo1 ) ){
        // make your first select boxes 
        }

和第二个

        if( isset( $combo1 ) ){
        // make your second select boxes if combo1 returned a value
        }

这样它们只会在需要时出现。

正如@NanaPartykar 所说,mysqli 是唯一的出路。

它将依赖于 JavaScript,因此,如果您愿意,您可以使用提交按钮而不是 JavaScript 函数:

     <input type="submit" name="submit" value="Pick Sizes" />

这看起来是如何使用选择框的方便参考:PHP 代码获取组合框的选定文本 https://stackoverflow.com/questions/18268068/php-code-to-get-selected-text-of-a-combo-box

我希望这能让您了解如何完成 - SESSION 变量仍然需要在第二个下拉列表的循环中正确定义,但它们可能会直接来自您的数据库,而不是来自用于的会话数组演示目的。

所有值均设置为数字;

intval();将提交的任何内容转换为整数以进行清理。

然后,您可以从您最初从数据库设置的会话变量中获取提交的相应值。

这样,您只会从下拉列表中获得一个数值,您可以用它来查找以获得您想要的答案

  <?php session_start(); ?> 
  <!DOCTYPE html>
  <html lang = "es">
  <head>
  <title>PRECEPTORÍA</title>
  </head>
    <body>
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
    <?php
    $main_opt = array();
    $_SESSION['opt_vals'] = array();
    $main_opt[0] = "Select Item";      
    $main_opt[1] = "Ice Cream";
    $main_opt[2] = "Trousers";
    $main_opt[3] = "Tee Shirts";
    $_SESSION['opt_vals'][1][0] = "Select Flavour";
    $_SESSION['opt_vals'][1][1] = "Vanilla";
    $_SESSION['opt_vals'][1][2] = "Chocolate";
    $_SESSION['opt_vals'][1][3] = "Strawberry";
    $_SESSION['opt_vals'][1][4] = "Tuttifrutti";
    $_SESSION['opt_vals'][2][0] = "Select Colour";
    $_SESSION['opt_vals'][2][1] = "Black";
    $_SESSION['opt_vals'][2][2] = "Red";
    $_SESSION['opt_vals'][2][3] = "Green";
    $_SESSION['opt_vals'][2][4] = "Blue";
    $_SESSION['opt_vals'][3][0] = "Select Size";
    $_SESSION['opt_vals'][3][1] = "Small";
    $_SESSION['opt_vals'][3][2] = "Medium";
    $_SESSION['opt_vals'][3][3] = "Large";
    $_SESSION['opt_vals'][3][4] = "X Large";
    $i = 0;
    if(!isset($_POST['combo1']) && !isset($_POST['combo2'])){
        echo '<select name="combo1" onChange="submit();">' . "\n";
        //while ($fila = mysqli_fetch_row($consulta)){
        while($i < count($main_opt)){
        echo "<option value='".$i."'>".$main_opt[$i]."</option>\n";       
             $o = 0;
             // load your sub options array here
             if(!$_SESSION['opt_vals'][$i]) $_SESSION['opt_vals'][$i] = array();
             while($i < count($_SESSION['opt_vals'][$i])){
             $_SESSION['opt_vals'][$i] = $o;
             if(!$_SESSION['opt_vals'][$i]) $_SESSION['opt_vals'][$i] = array();
             $_SESSION['opt_vals'][$i][$o] = $_SESSION['opt_vals'][$i][$o];
             $o++;
             }
         $i++;
         }
     echo '</select>'  . "\n";    
     }else{
         if(intval($_POST['combo1']) >= 1) $_SESSION['combo1_val'] = $combo1_val =intval($_POST['combo1']);
         if(intval($_POST['combo1']) >=1){
             $i = 0;
             echo '<select name="combo2" onChange="submit();">' . "\n";
             while($i < count($_SESSION['opt_vals'][$combo1_val])){
             echo "<option value='".$i."'>".$_SESSION['opt_vals'][$combo1_val][$i]."</option>\n";
             $i++;
             }
         }
     echo '</select>'  . "\n";
     }
     if(intval($_POST['combo2']) >= 1) $_SESSION['combo2_val'] = $combo2_val =intval($_POST['combo2']);
     if($_SESSION['combo1_val'] >=1 && $_SESSION['combo2_val'] >=1){
     // use the result to do  whatever you want
     echo 'Thank you! You have selected ' . $_SESSION['opt_vals'][$_SESSION['combo1_val']][$_SESSION['combo2_val']] . " " . $main_opt[$_SESSION['combo1_val']] . '.';
     }    
     // Do any mysqli adjustments to your database here
     // reset to go again
     if($_SESSION['combo2_val'] >= 1){
     $_SESSION['combo1_val'] = 0; 
     $_SESSION['combo2_val'] = 0;
     }
     ?>
             </form>
             <a href="<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?>">Click to start a new selection</a>
          </body>
     </html>

你可以删除onChange="submit();"如果您愿意,请将其替换为表单上的普通提交按钮。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个列表框的许多元素到另一个列表框 的相关文章

  • document.write 在同一页面上显示内容。

    我对 javascript document write 方法有疑问 大多数情况下 当我使用 document write 时 它会向我显示在不同页面中使用该方法编写的内容 例如 如果我写这样的命令 document write Hello
  • 在给定索引上将字符串分成两部分并返回两部分

    我有一个字符串 需要在给定索引上拆分 然后返回两个部分 并用逗号分隔 例如 string 8211 8 211 98700 98 700 因此 我需要能够在任何给定索引上拆分字符串 然后返回字符串的两半 内置方法似乎执行分割 但只返回分割的
  • 如何验证上传的文件是视频?

    我的服务器上有一些非常敏感的信息 因此安全性是一个大问题 用户需要能够上传视频 我知道允许用户上传文件会带来安全威胁 因为没有 100 的方法可以阻止他们上传非视频 但我显然可以选择服务器将保留哪些文件 我知道检查文件扩展名是不够的 检查
  • 如何将React JS状态保存到本地存储中

    我不知道如何将 React js 状态存储到本地存储中 import React Component from react import App css import auth createUserProfileDocument from
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • 将 Base64 字符串转换为图像文件? [复制]

    这个问题在这里已经有答案了 我正在尝试将我的 Base64 图像字符串转换为图像文件 这是我的 Base64 字符串 http pastebin com ENkTrGNG http pastebin com ENkTrGNG 使用以下代码将
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43
  • 无法从 JQuery ajax 调用接收 JSON

    我已经确定来自服务器的 JSON 是有效的 手动进行 ajax 调用 但我真的很想使用 JQuery 我还使用 firebug 确定发送到服务器的 post URL 是正确的 但是 错误回调仍然被触发 解析错误 我还尝试了数据类型 文本 我
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que
  • 安全地评估简单的数学

    我想知道是否有一种安全的方法来评估数学 例如 2 2 10000 12000 10000 20 2 2 40 20 23 12 无需使用eval 因为输入可以来自任何用户 我需要实现的只是整数的加法和减法 是否有任何已经存在的代码片段 或者
  • 当 Chrome 中嵌套滚动中的数据更改时防止页面滚动

    我在页面中有一个固定大小的元素 带有 溢出 滚动 其内容经常更改 我预计该元素内部发生的更改会影响该元素的滚动 但不会影响页面滚动 但是当这个元素位于页面顶部时 页面本身开始滚动 我怎样才能防止这种情况发生 要重现此行为 我在 chrome
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对
  • 如何禁用网页中的萤火虫?

    如何使用 Javascript 禁用 firebug 我想这样做是为了向访问者隐藏我的网页的运作方式 有什么选择可以做到这一点吗 你不能 你能做的最好的事情就是混淆你的 JavaScript 实际上刮掉了 您能做的最好的事情就是将所有安全关
  • WebpackError:ReferenceError:Gatsby 上未定义窗口

    我已经在互联网上进行了大量搜索 但无法解决这个问题 我正在使用 Gasby 开发静态页面 但遇到此错误 WebpackError ReferenceError window is not defined 我的线索是 这与我正在使用的引导 模
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • 测试 jQueryUI 是否已加载

    我正在尝试调试网站 并且我认为 jQueryUI 可能未正确加载 如何测试 jQueryUI 是否已加载 if jQuery ui UI loaded OR if typeof jQuery ui undefined UI loaded 应
  • 从json中获取所有子节点

    我有以下 json var source k 01 k 02 children k 05 k 06 children k ABC k PQR k 07 k 03 我希望能够指定 k 的值并取回所有孩子 以及孙
  • 在 Elasticsearch php API 中使用多种类型或索引

    我想使用查询多种类型和索引Elasticsearch PHP API 但我不知道怎么办 我应该将类型和索引的数组传递给 params params index index array of indices params type types
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 从 .NET 3.0 升级到 3.5:在 Web Garden 中设置为 StateServer 的站点恢复为 InProc

    设想 假设一台运行 NET 3 0 的服务器和一个在启用了 Web 花园的应用程序池中运行的 ASP NET 网站 进程数 3 web config配置如下
  • 将日期时间从 Android 发布到 WCF RESTful JSON 服务

    我正在尝试发送DateTime作为通过使用 JSON 编码的 WCF RESTful 服务公开的方法的参数 该请求如下所示 POST http IP PORT LogService json GetLogEntriesByModule HT
  • Linux 内核中的 DMA 映射和 DMA 引擎是什么?

    Linux 内核中的 DMA 映射和 DMA 引擎是什么 DMA映射API和DMA引擎API何时可以在Linux设备驱动程序中使用 任何真正的 Linux 设备驱动程序示例作为参考都会很棒 Linux 内核中的 DMA 映射和 DMA 引擎
  • 将多个 NetCDF 文件合并为时间序列多维数组 python

    我正在使用多个 netcdf 文件 在我的计算机上的文件夹中 中的数据 每个文件保存整个美国 5 年的数据 根据 x 和 y 坐标的索引引用位置 我正在尝试为多个位置 网格单元 创建一个时间序列 将 5 年周期编译为 20 年周期 这将合并
  • 以调试器友好的方式从 RAM 加载本机 C++ .dll

    问题目前仅涉及 Windows 其他操作系统目前不太相关 只需通过快速谷歌搜索 就可以从 RAM 加载本机 dll 例如有以下库 https www joachim bauch de tutorials loading a dll from
  • 如何使用 HotChocolate 和 EFCore 创建 GraphQL 部分更新

    我正在尝试使用 Entity Framework Core 和 Hot Chocolate 创建 ASP NET Core 3 1 应用程序 应用程序需要支持通过 GraphQL 创建 查询 更新和删除对象 有些字段需要有值 创建 查询和删
  • 从 Jquery AJAX 调用返回响应 [重复]

    这个问题在这里已经有答案了 我编写了一个函数 它必须检查用户名是否已被占用 现在 当我从另一个函数调用该函数时 并警告它的返回值 alert checkusernameavailable justausername 它说 未定义 我到处搜索
  • ColdFusion 在我的 Ajax 中调试输出

    如果我关闭 调试输出设置 下的第三个选项 启用请求调试输出 那么我将不再在我的应用程序中获取调试信息 ajax调用 CFCaccess remote 这很好 但我想对所有其他程序保持打开状态 并针对这一例外情况以编程方式关闭它 我放
  • SonarQube 内部 H2 数据库的默认凭据?

    我正在运行 SonarQube 5 6 1 并尝试保存我创建的视图 为此 我想看一下 Sonar 根据它自己的自述文件 用于内部嵌入式数据库的 H2 DB 我已经运行了 H2 jar 文件 并且在控制台中能够登录到虚拟数据库 如果 Sona
  • 简单(但具体)的侦听器和发送器 Python 3 DBus 示例

    我想制作一个由两部分组成的程序 一个监听者 服务器 如果你愿意的话 和一个发送者 客户端 我做了一些研究 了解到这是通过程序员调用 IPC 进程间通信 的方法来完成的 我相信您知道它的意思 我只是扩展了缩写词 以便您知道我不认为它意味着 互
  • Flutter 返回分类选项卡和项目的列表

    我是颤振新手 我正在尝试实现菜单 如本示例所示https pub dev packages scrollable list tabview https pub dev packages scrollable list tabview 我的食
  • DexArchiveBuilderException:无法处理/xxx/.gradle/caches/transforms-1/files-1.1/play-services-location-11.2.2.aar

    当我尝试编译我的项目时 我收到这个奇怪的错误 What went wrong Execution failed for task android transformClassesWithDexBuilderForProdDevelopmen
  • PostgreSQL 物化视图无法从 Python 刷新

    我在 TimescaleDB 时间序列数据的 PostgreSQL 扩展 中创建了一个物化视图 当我使用 PGAdmin 中的以下代码刷新它时 会添加最新数据 一切正常 REFRESH MATERIALIZED VIEW CONCURREN
  • 如何让车把布局在 node/hapi.js 中工作

    我无法在 hapi js 应用程序中渲染车把布局 布局渲染得很好 但部分根本不渲染 只有空白 我这样声明 var handlebars require handlebars layouts require handlebars layout
  • 最好有数百列或分成多个表?

    我正在设计一个有关机械设备运行的统计数据库 每批数据将包含数百个统计信息 因此我试图决定是创建一个包含数百列的单个表还是将其拆分为多个表 每个表都包含相关的统计信息 例如 我可以有一个表包含与故障相关的统计信息 另一张表包含与堵塞相关的统计
  • 包反向依赖检查(尤其是在 Windows 上)

    我想听听人们现在如何在 Windows 上进行反向依赖检查 使用 官方 但仍处于实验阶段的功能时tools check packages in dir 正如 Windows 上的 CRAN 存储库策略 1 所建议的那样 根据来源检查反向依赖
  • 在div内滚动大图像

    我在一个小 div 内有一个大图像 该 div 内有 4 个箭头来控制移动 右 下 左 上 箭头用于在较小的 div 内移动图像 这是JS代码 slide right click function inner img animate rig
  • 张量流中的权重和偏差初始化

    我正在做一些电力负荷预测 其中我想初始化权重和偏差 我使用不同的算法计算了权重和偏差并将其保存在文件中 我想使用该文件并使用这些重量和偏差开始训练 这是我要更新的代码 RNN designning tf reset default grap
  • jQuery 点击事件多次触发

    我正在尝试用 Javascript 编写一个视频扑克游戏 作为了解其基础知识的一种方式 但我遇到了 jQuery 单击事件处理程序多次触发的问题 它们附在用于下注的按钮上 并且在游戏过程中第一手牌下注时效果很好 仅触发一次 但在第二手牌的投
  • 一个列表框的许多元素到另一个列表框

    这是我第一次使用这种媒介寻求帮助 我想知道如何在我的代码中包含两个列表框 一个查询数据库 然后通过一个按钮将其发送到另一个 并使用多个选项来执行此操作 然后如 php 代码中所示 将第二个列表框中的数据放入表数据库中 谢谢