我正在学习Mysql / PHP,并且我试图从下拉列表中的选定值更新mysql记录。我已阅读了几篇教程,并尝试应用它们,但我无法使其正常工作......
我想要的是什么:我有一个下拉列表,从mysql数据库中获取值(UNIQUE ID,Number,Model,Serialnumber,Capacity)。我想从下拉菜单中更新所选值。下拉菜单中的每个值都有一个唯一的ID。
问题:当我点击提交时,它什么也没做。当我从WHERE id =' $ id'"更改SQL查询时在WHERE id = 23时,它将更新id为23.的记录。所以它与此有关。
我知道我的代码很乱,但稍后会清理。 我的代码:ipad-uitlenen.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
include("../includes/connect.php");
if(isset($_SESSION['logged_in'])){
$sql="SELECT id, nr, model, serienummer, capaciteit FROM ipads WHERE uitgeleend='Nee' ORDER BY nr";
$result1 = mysqli_query($db, $sql);
if(isset($_POST['btnAdd'])) {
$id=$_REQUEST['id'];
$persoon=$_POST['persoon'];
$datumuitgeleend=$_POST['datumuitgeleend'];
$datumretour=$_POST['datumretour'];
$opmerking=$_POST['opmerking'];
$sql="UPDATE ipads SET uitgeleend='Ja', persoon='$persoon', datumuitgeleend='$datumuitgeleend', datumretour='$datumretour', opmerking='$opmerking' WHERE id='$id'";
$result=$db->query($sql);
header("location:overzicht-ipads.php");
}
include("../includes/get_header_wn.php");
?>
<h1 class="page-title">iPad uitlenen</h1>
<ul class="breadcrumb">
<li><a href="index.php">Home</a> </li>
<li class="active">Nieuw</li>
</ul>
</div>
<form id="gegevensForm" class="col-xs-4" form method="POST" action="ipad-uitlenen.php">
<div class="form-group">
<select name="id">
<?php while ($row1 = mysqli_fetch_array($result1)):;?>
<option value="<?php echo $id?>"><?php echo $row1[1];?> / <?php echo $row1[3];?> / <?php echo $row1[2];?> / <?php echo $row1[4];?></option>
<?php endwhile;?>
</select>
</div>
<div class="form-group">
<label>Persoon</label>
<input type="text" class="form-control" name="persoon" value="" />
</div>
<div class="form-group">
<label>Datum uitgeleend</label>
<input type="text" id="datepicker" class="form-control" name="datumuitgeleend" value="" />
</div>
<div class="form-group">
<label>Datum retour</label>
<input type="text" id="datepicker1" class="form-control" name="datumretour" value="" />
</div>
<div class="form-group">
<label for="comment">Opmerking</label>
<textarea class="form-control" rows="5" id="comment" name="opmerking"></textarea>
</div>
<button class="btn btn-primary pull-right" name="btnAdd" input type="submit"><i class="fa fa-save"></i> Opslaan</button>
<a href="overzicht-ipads.php"><input type="button" name="btnCancel" value="Annuleer" class="btn btn-primary pull-left"></a>
<?php
include('../includes/get_footer.php');
?>
</form>
<?php
}
?>
&#13;
Connect.php
<?php
try {
$db = mysqli_connect("localhost", "root", "", "i3a");
}
catch(PDOException $e){
echo $e->getMessage();
die();
}
//PDO(database:localhost:3307;dbnaam, root, wachtwoord)
?>
&#13;
答案 0 :(得分:1)
试试这个,
为选择标记提供名称,而不是选项。
<select name="id">
<?php while ($row1 = mysqli_fetch_array($result1)):;?>
<option value="<?php echo $id?>"><?php echo $row1[1];?> / <?php echo $row1[3];?> / <?php echo $row1[2];?> / <?php echo $row1[4];?></option>
<?php endwhile;?>
</select>
答案 1 :(得分:0)
除了在命名<select>
而不是<option>
时给出的其他答案,我对自己评论的内容。
(现在)查看您用于连接的内容,并在以后的修改中添加:
$db=new PDO("mysql:host=localhost;dbname=i3a", "root", "");
并且您正在使用mysqli_*
来查询。
那些不同的MySQL API不会混用。你必须使用相同的连接到查询。
所以...要么使用所有PDO,要么全部使用mysqli_
,而不是其他。
因此,您无需将整个代码更改为PDO(由您决定),而是需要使用mysqli_
进行连接。
即:
$db = mysqli_connect("yourHost", "User", "Password", "DB");
$db
变量是整个查询中需要使用的变量。
即:
$result1 = mysqli_query($db, $sql);
$result=$db->query($sql);
使用了错误检查和错误报告,会让你有所了解。
旁注:这里发生的事情是,您很可能在重新连接其他查询时失去连接。
因此,请始终保持连接打开,而无需从一个API切换到另一个API。
您已经与:
联系$hostname = "localhost";
$username = "root";
$password = "";
$databaseName = "i3a";
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
那么为什么要使用其他连接切换到PDO?
保持同一个(mysqli_)并使用$connection
然后如果你要使用上述内容来保持连接活着。
$result1 = mysqli_query($connection, $sql);
$result=$connection->query($sql);
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
并检查查询的错误。
你不这样做。
答案 2 :(得分:0)
通过添加此值来解决问题:
<option value="<?php echo $row1[0]; ?>">