我在数据库中有多个地址,每行1出发1到达。
我想以“表格/选择”的形式添加这些内容
我可以使用:
显示所有这些内容echo $arraydep[0].$arrayarr[0];
但是
$adresses = array($arraydep[0], $arrayarr[0]);
或
$adresses = array_merge($arraydep[0], $arrayarr[0]);
或
$adresses[] = array($arraydep[0], $arrayarr[0]);
在我的表单中不显示所有内容,仅显示1行的出发和到达
如果您能帮助我,那将非常好:)
这是我完整的代码:
<?php
include "./cfg/db.php";
$sql = 'SELECT * FROM commandes WHERE phone="555-1234"';
$list = mysqli_query($base, $sql) or die("Erreur SQL !" . $sql . "<br />" . mysqli_error());
mysqli_query($base, $sql) or die("Erreur SQL !" . $sql . "<br />" . mysqli_error());
while ($data = mysqli_fetch_array($list))
{
$arraydep = array(
$data[depadresse]
);
$arrayarr = array(
$data[arradresse]
);
echo $arraydep[0] . $arrayarr[0]; // echo all adresses from database for this phone number (for testing)
$adresses = array(
$arraydep[0],
$arrayarr[0]
);
}
?>
<form action="test2.php" method="post">
<select name="test2">
<?php
foreach($adresses as $adresse)
{
?>
<option value="<?php
echo $adresses . "<br />"; ?>">
<?php
echo $adresse . "<br />"; // only echo 1 departure and 1 arrival for 1 row in the drowdown menu
}
?>
</option>
</select>
<input type="submit" value="Valider" />
</form>
致谢。
答案 0 :(得分:3)
您仅在数组中插入第一行。试试这个。
$i = 0;
while ($data = mysqli_fetch_array($list))
{
$arraydep = array(
$data[depadresse]
);
$arrayarr = array(
$data[arradresse]
);
echo $arraydep[$i] . $arrayarr[$i]; // echo all adresses from database for this phone number (for testing)
$adresses = array(
$arraydep[$i],
$arrayarr[$i]
);
$i++
}
答案 1 :(得分:0)
在外部循环中定义数组,否则在下一条语句中不起作用。
在我的代码下方查看用法
$arraydep = array();
$arrayarr = array();
$adresses = array();
while ($data = mysqli_fetch_array($list))
{
$arraydep[] = $data['depadresse'];
$arrayarr[] = $data['arradresse'];
$adresses[] = array( $arraydep[0], $arrayarr[0]);
}
var_dump($adresses);
echo $adresses[0][0] . ' ' . $adresses[0][1];
echo $adresses[1];
foreach ($oneOfDep as $arraydep){
echo $oneOfDep . ' ';
}
答案 2 :(得分:0)
每次循环时,您需要将每组到达/离开添加到数组。
$adresses = array();
while ($data = mysqli_fetch_array($list,MYSQLI_ASSOC))
{
$adresses[] = array(
'dep' => $data['depadresse'],
'arr' => $data['arradresse']
);
}
如果使用MYSQLI_ASSOC检索结果,则结果将以字段名称作为关键字。我不知道您的字段叫什么,但是访问$ data时,它们需要放在引号内。
在使用数组之前初始化数组也是一个好习惯。
您还应避免使用SELECT *用法,而应始终列出您有兴趣使用的字段。这会告诉其他开发人员您的意图。
您还应该考虑使用 mysqli_fetch_all($ list,MYSQLI_ASSOC),这样就无需使用上述循环。
要输出结果,请使用以下内容。尽管我不确定您要如何输出结果:
foreach($adresses as $adresse)
{
echo "<option value='{$adresse['dep']}'>{$adresse['dep']}</option>";
echo "<option value='{$adresse['arr']}'>{$adresse['arr']}</option>";
}