当我点击提交时,当一个值已经存在于DB中时,Dropdownlist项目就会消失

时间:2016-03-21 15:06:40

标签: php mysql

我正在学习Mysql / PHP,而且我的下拉列表存在一些问题。

问题:当我点击Sumbit时,会运行一个查询并检查插入的号码是否可用。当插入的数字可用时,它将在DB中插入一些值。否则,当已经采用该数字时,它将显示errormsg。发生这种情况时,我的下拉列表突然变空,请参见下面的截图!

我想要的是什么:当我提交时,我仍然希望每当有号码时都会显示错误消息,同时保持我的下拉列表不变。

希望有人可以提供帮助!

代码:



<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
include("/includes/connect.php");
if(isset($_SESSION['logged_in'])) {

		$sql="SELECT id,model FROM `ipad-model`";
		$stmt = $db->prepare($sql);
		$stmt->execute();
		$result = $stmt->fetchAll();
	
	if(isset($_POST['btnAdd'])) {
		$errMsg = '';
		$nr=$_POST['nr'];
		$sql2="SELECT * FROM ipad WHERE nr=$nr";
		$stmt = $db->prepare($sql2);
		$stmt->execute();
		$result = $stmt->fetchAll();
			if($result == 0) {
				$nr=$_POST['nr'];
				$model=$_POST['model'];
				$serienummer=$_POST['serienummer'];
				$capaciteit=$_POST['capaciteit'];
				$uptodate=$_POST['uptodate'];
				$sql="INSERT INTO ipads(uitgeleend,nr,model,serienummer,capaciteit,uptodate) VALUES ('Nee','$nr','$model','$serienummer','$capaciteit', '$uptodate')";
				$result=$db->query($sql);
				header("location:index.php");
			} else {
				$errMsg = 'Nummer is al in gebruik!';
			}
	}
	include("/includes/get_header.php");
?>

            <h1 class="page-title">Nieuwe iPad toevoegen</h1>
            <ul class="breadcrumb">
            <li><a href="index.php">Home</a> </li>
            <li class="active">Nieuwe iPad</li>
        </ul>
    </div>

<form id="gegevensForm1" class="col-xs-4" form method="POST" action="ipad-toevoegen.php">
    <div class="form-group">
        <label>Nr</label>
        <input type="text" class="form-control" name="nr" />
		<?php
			if(isset($errMsg)){
				echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
			}
		?>
    </div>

    <div class="form-group">
        <label>Model</label>
			<select class="form-control" name="model">
				<?php foreach($result as $row): ?>
				<option value="<?= $row['model']; ?>"><?= $row['model']; ?></option>
				<?php endforeach; ?>
			</select>
		<p class="text-right"><a href="ipad-model.php">Bewerken</a></p>
    </div>

    <div class="form-group">
        <label>Serienummer</label>
			<input type="text" class="form-control" name="serienummer" />
    </div>

    <div class="form-group">
        <label>Capaciteit</label>
		<select class="form-control" name="capaciteit">
			<option value="16 GB">16 GB</option>
			<option value="32 GB">32 GB</option>
			<option value="64 GB">64 GB</option>
			<option value="128 GB">128 GB</option>
		</select>
    </div>
    
    <div class="form-group">
        <label>Up-To-Date</label>
		<select class="form-control" name="uptodate">
			<option value="Ja">Ja</option>
			<option value="Nee">Nee</option>
		</select>
    </div>

    <button class="btn btn-primary pull-right" name="btnAdd" type="submit"><i class="fa fa-save"></i> Opslaan</button>
    <a href="index.php"><input type="button" name="btnCancel" value="Annuleer" class="btn btn-primary pull-left"></a>
    
    <?php
		include('../includes/get_footer.php');
	?>
    
</form>

<?php
} else header("location: index.php")
?>
&#13;
&#13;
&#13;

屏幕截图:

提交之前&amp; errormsg: enter image description here

提交后&amp; errormsg: enter image description here

1 个答案:

答案 0 :(得分:1)

这是因为你的$ result变量被覆盖了。

您应该为不同的结果集使用不同的名称。

例如,我会做这样的事情:

$sql="SELECT id,model FROM `ipad-model`";
$stmt = $db->prepare($sql);
$stmt->execute();
$ipadModels = $stmt->fetchAll();

在下面的“视图”部分中,您可以在其中呈现下拉列表:

<?php foreach($ipadModels as $ipadModel): ?>
    <option value="<?= $ipadModel['id']; ?>"><?= $ipadModel['model']; ?></option>
<?php endforeach; ?>

希望这有帮助!

拉​​杜