从下拉列表中更新所选值的mysql记录

时间:2016-03-16 13:04:30

标签: javascript php jquery mysql drop-down-menu

我正在学习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;
&#13;
&#13;

Connect.php

&#13;
&#13;
<?php
	try {
		$db = mysqli_connect("localhost", "root", "", "i3a");
	}
	catch(PDOException $e){
		echo $e->getMessage();
		die();
	}
	//PDO(database:localhost:3307;dbnaam, root, wachtwoord)
?>
&#13;
&#13;
&#13;

3 个答案:

答案 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]; ?>">