【问题标题】:PHP Echo back multiple selected from formPHP Echo 返回从表单中选择的多个
【发布时间】:2015-04-08 18:08:40
【问题描述】:

创建.php

我做的第一件事是创建并将这些中的每一个发送到我表中它自己的列。

    $subCategoryDirectory = $_POST["subCategoryDirectory"];
    $subCategoryDirectory_1 = $subCategoryDirectory[0];
    $subCategoryDirectory_2 = $subCategoryDirectory[1];
    $subCategoryDirectory_3 = $subCategoryDirectory[2];
    $subCategoryDirectory_4 = $subCategoryDirectory[3];
    $subCategoryDirectory_5 = $subCategoryDirectory[4];


+----------------------+------------------------+------------------------+------------------------+------------------------+--+
| subCategoryDirectory | subCategoryDirectory_2 | subCategoryDirectory_3 | subCategoryDirectory_4 | subCategoryDirectory_5 |  |
+----------------------+------------------------+------------------------+------------------------+------------------------+--+
| selection            | selection2             | selection3             | selection4             | selection5             |  |
+----------------------+------------------------+------------------------+------------------------+------------------------+--+
|                      |                        |                        |                        |                        |  |
+----------------------+------------------------+------------------------+------------------------+------------------------+--+
|                      |                        |                        |                        |                        |  |
+----------------------+------------------------+------------------------+------------------------+------------------------+--+

更新.php

更新时我调用并将每个分配给一个变量。

$selectUpdate = "SELECT * from table where id=$id LIMIT 1";
$selectUpdateDisplay =  $wpdb->get_results($selectUpdate, ARRAY_A);

foreach ($selectUpdateDisplay as $sqlStuf){    
$cat1 = $sqlStuf[subCategoryDirectory];
$cat2 = $sqlStuf[subCategoryDirectory_2];
$cat3 = $sqlStuf[subCategoryDirectory_3];
$cat4 = $sqlStuf[subCategoryDirectory_4];
$cat5 = $sqlStuf[subCategoryDirectory_5];
}

所以我有上面的表格,我想在更新时将其回显到选择表单中,如下面的“选定/突出显示”。现在,当我更新时,我会丢失初始上传的值。

<select id="subCategoryDirectory" name="subCategoryDirectory[]" style="width:100%;" multiple>
        <option value="<?php echo $cat1; ?>"><?php echo $cat1; ?></option>
<optgroup label="Advertising & Media">
        <option value="Advertising &amp; Marketing">Advertising &amp; Marketing</option>
        <option value="Advertising, Marketing, Promotions">Advertising, Marketing, Promotions</option>
</optgroup>
<optgroup label="Transportation">
        <option value="Delivery Service">Delivery Service</option>
        <option value="Limousine Service ">Limousine Service </option>
        <option value="Taxicab">Taxicab</option>
        <option value="Transportation">Transportation</option>
</optgroup>
</select>

每次我尝试使用 echo 时,我都会得到一个值,正如您想象的那样。没有一个被选中。我是否应该测试每个变量是否为空并长期执行?我是不是想多了?

更新

array(1) {
  [0]=>
  array(32) {
    ["id"]=>
    string(3) "112"
    ["nameDirectory"]=>
    string(14) "test to delete"
    ["nameDirectoryAbv"]=>
    string(4) ""
    ["descriptionDirectory"]=>
    string(14) ""
    ["summaryDirectory"]=>
    string(14) ""
    ["addressDirectoryStreet"]=>
    string(11) ""
    ["addressDirectorySuiteNumber"]=>
    string(0) ""
    ["addressDirectoryNumber"]=>
    string(5) ""
    ["addressDirectoryPrefix"]=>
    string(0) ""
    ["addressDirectoryTwo"]=>
    string(0) ""
    ["zipDirectory"]=>
    string(5) ""
    ["websiteDirectory"]=>
    string(21) ""
    ["facebookDirectory"]=>
    string(21) ""
    ["twitterDirectory"]=>
    string(21) ""
    ["linkedinDirectory"]=>
    string(21) ""
    ["emailDirectory"]=>
    string(13) ""
    ["contactNameDirectory"]=>
    string(4) ""
    ["phoneDirectory"]=>
    string(12) ""
    ["faxDirectory"]=>
    string(12) ""
    ["categoryDirectory"]=>
    string(0) ""
    ["subCategoryDirectory"]=>
    string(23) "Advertising & Marketing"
    ["subCategoryDirectory_2"]=>
    string(34) "Advertising, Marketing, Promotions"
    ["subCategoryDirectory_3"]=>
    string(0) ""
    ["subCategoryDirectory_4"]=>
    string(0) ""
    ["subCategoryDirectory_5"]=>
    string(0) ""
    ["cityDirectory"]=>
    string(11) ""
    ["stateDirectory"]=>
    string(2) ""
    ["hoursDirectory"]=>
    string(13) ""
    ["image_1"]=>
    string(80) ""
    ["image_2"]=>
    string(92) ""
    ["image_3"]=>
    string(85) ""
    ["image_4"]=>
    string(85) ""
  }
}

【问题讨论】:

  • 如何将数据传回页面?
  • 我并没有真正将值传递到新页面。我只是通过 MYSQL 调用每个类别列。然后分配每个 $cat1 等,以便我可以使用它们。这有意义吗?
  • 不确定为什么要对所有内容进行三重分配,您使用的是框架吗?需要查看来自update.php 的更多代码,我假设表单 html 也已打开?
  • @Bankzilla 我刚刚包含了与更新页面有关的所有内容。那是你要找的吗?我正在使用 Wordpress,但没有“框架”。是的,该表格在 MYSQL 语句中的 update.php table 上引用了上面的原始表。
  • 您是否打开了错误报告? $sqlStuf[subCategoryDirectory]; 应该抛出一个错误。应该是$sqlStuf["subCategoryDirectory"];

标签: php mysql forms


【解决方案1】:

为您的 subCategoryDirectories 创建一个数组:

$cat = array($sqlStuf[subCategoryDirectory_1],$sqlStuf[subCategoryDirectory_2], ...);

在循环中使用数组(foreachfor)除了is_set 将允许您仅显示已设置的数组项:

foreach

<?php foreach ($cat as $item) { if (isset($item)) { echo "<option value=\""; echo "$item\">$item</option>\n"; } } ?>

<?php for ($i = 0; $i <= 4;) { if (isset($cat[$i])) { echo "<option value=\""; echo "$cat[$i]\">$cat[$i]</option>\n"; } $i++; } ?>

【讨论】:

  • 有趣的想法。唯一的事情是,如果我不检查是否为空,那么即使没有为 cat3、cat4 等提交任何选项,也会列出每个选项。
  • 有很多方法可以检查变量是否具有或值,甚至是否已设置(is_set 就是一个例子)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多