HTML选择选项中的Foreach php函数
我是这个论坛的新手,刚刚开始用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 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];
}