Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML选择选项中的Foreach php函数_Php_Html - Fatal编程技术网

HTML选择选项中的Foreach php函数

HTML选择选项中的Foreach php函数,php,html,Php,Html,我是这个论坛的新手,刚刚开始用php编程。我需要一些帮助。我有以下代码 <?php error_reporting(-1); require_once('/mysql/sql_connect.php'); $q = "SELECT pty.pty_profile_name AS profile FROM pty, users WHERE users.username = 'testaccount' "; $r = @mysqli_query ($dbc, $q); $

我是这个论坛的新手,刚刚开始用php编程。我需要一些帮助。我有以下代码

<?php error_reporting(-1);

require_once('/mysql/sql_connect.php');

$q = "SELECT pty.pty_profile_name AS profile FROM pty, users WHERE users.username = 'testaccount' ";
    $r = @mysqli_query ($dbc, $q);

    $results_array = array();
    while($row = mysqli_fetch_assoc($r)) {
        array_push($results_array, $row);
    echo "<pre>"; print_r($results_array); echo "</pre>"; }

?>

<p>
<form method="post" action="foreach2.php">
<label for="Property Select" class="title">Select Property</label>  
   <select name="pty_select" > 
   <?php foreach($results_array as $key => $value){ ?>
                    <option value="<?php echo $key; ?>"><?php echo $value['profile']; ?></option> 
    <?php } ?>
        </select>
    <input type="submit" name="Submit" />
</form>

<?php 

if (isset($_POST['Submit'])) {
echo "<pre>"; echo ($_POST['pty_select']); echo "</pre>"; } ?> 

我得到的输出是正确的,但它根据我在表单中选择的内容显示键,例如0、1或2。我需要输出值。例如
0=Emerton
,它输出“0”而不是
Emerton

如果我回显
$value['profile']
而不是
pty_select
,我会一直得到查询的最后一个结果。在这个例子中是2,这是
Ambarvale
,因为我相信它只是选择了查询的最后一行输出

我希望我说得有道理。提前感谢。

给予

<option value="<?php echo $value['profile']; ?>">
    <?php echo $value['profile']; ?>
</option> 

而不是

 <select name="pty_select" > 
<?php foreach($results_array as $key => $value){ ?>
                <option value="<?php echo $value['profile'];?>"><?php echo $value['profile'];     ?></option> 
<?php } ?>
    </select>

您的意思是需要用于显示它的值。 那么, 改为:

if (isset($_POST['Submit'])) {
echo "<pre>"; echo ($_POST['pty_select']); echo "</pre>"; } ?> 

当您将选项值指定为
$key
如果您需要
$\u POST['pty\u select']
中的选项,请使用以下选项:

if(isset($_POST['Submit'])) {
    echo $results_array[$_POST['pty_select']]['profile'];
}


或者使用配置文件选项值。

现在让我们进入理想世界:)

为选项构建数据对
database\u id=>name

$id = (int)(isset( $_POST['pty_select']) ? $_POST['pty_select'] : 0);
$name = null;
if( $id && isset( $values[$id])){
    $name = $values[$id];
}
使用数据库时切勿使用
@
,为什么要抑制错误而不是防止/处理错误

现在您有了真实的数据库ID和相应的值(一般来说,使用唯一ID更好…如果没有其他东西,它们的熵更大-搜索效率更高)。sice显示选择框在Web中非常常见,让我们:


谢谢各位,今晚我会尝试这些建议,让你们知道我进展如何。CheersHi Vyktor,其他人给我的代码是有效的,然而,我正试图找出如何让你的代码工作,因为我想学习新技术。什么是$values[$r[0]]=$r[1];做为什么数组中的第二个值需要分配给第一个值?@DanielGarcia的想法是,你会得到成对的
(id,name)
,比如
(1,Emerton)
(2,Foo)
。注意,这些是真实的数据库ID。您将构建关联数组
$values=array(1=>“Emerton”,2=>“Foo”)
,您可以将其用作
$values[1]
来获取字符串。ID是有效的通用标识符,因此我更喜欢使用它们:)谢谢你的工作。只是等待另一张海报的回复,然后再关闭“谢谢”功能。只是在等待另一张海报的回复closing@DanielGarcia完成后请立即关闭。干杯,祝你快乐。:)嗨,我怎么才能再关门?对不起,我是新手site@DanielGarcia他们是一个记号,你会看到下面的投票符号附近的答案只是勾选它。然后,它将被标记为已解决。谢谢,这是有效的。在结束前等待另一张海报的回复
if(isset($_POST['Submit'])) {
    echo $results_array[$_POST['pty_select']]['profile'];
}
$q = "SELECT pty.id, pty.pty_profile_name AS profile FROM pty, users 
      WHERE users.username = 'testaccount'";
$r = mysqli_query($dbc, $q);

$values = array();
while($r = mysqli_fetch_row($r)) {
    $values[$r[0]] = $r[1];
}
function selectbox( $values = array(), $attributes = array(), $selected_value = null)
{
    // Header
    echo '<select';
    foreach( $attributes as $key => $val){
        echo ' ' . htmlspecialchars($key) . '="' . htmlspecialchars( $val) . '"';
    }
    echo '>';

    // Values
    foreach( $values as $key => $val){
        echo '<option value="' . htmlspecialchars( $key) .'"';
        if( $key === $selected_value){
            echo ' selected="selected"';
        }
        echo '>' . htmlspecialchars( $val) . '</option>';
    }
    echo '</select>';
}
<form method="post" action="foreach2.php">
<label for="Property Select" class="title">Select Property</label>  
    <?php selectbox( $values, array( 'name' => 'pty_select')); ?>
    <input type="submit" name="Submit" />
</form>
$id = (int)(isset( $_POST['pty_select']) ? $_POST['pty_select'] : 0);
$name = null;
if( $id && isset( $values[$id])){
    $name = $values[$id];
}