我的表单中包含下拉框以及文本字段和复选框。我想要做的是,当用户进入此页面并且地址栏显示/updatephoneform.php?id=1时,表单显示id1的信息(我的数据库中的PhoneID),因此它可以是编辑和更新。我如何修改表单来执行此操作?变量和形式如下:
变量
$ManufacturerID = $row->ManufacturerID;
$Model = $row->Model;
$OSID = $row->OSID;
$Description = $row->Description;
$ScreenSize = $row->ScreenSize;
$Price = $row->Price;
$StockQuantity = $row->StockQuantity;
$StorageSize = $row->StorageSize;
$thumb= $row->ThumbImg;
$large= $row->LargeImg;
表格
<h1>Update an existing phone</h1>
<form action="updatephone.php" method="post" enctype="multipart/form-data">
<p>Brand: <select name="ManufacturerID">
<option value="1">Apple</option>
<option value="2">LG</option>
<option value="3">BlackBerry</option>
<option value="4">HTC</option>
<option value="5">Nokia</option>
<option value="6">Samsung</option>
<option value="7">Sony</option>
<option value="8">Huawei</option>
<option value="9">Motorola</option>
</select>
<p>Model: <input type="text" name="Model"></p>
<p>Operating System: <select name="OSID">
<option value="1">iOS</option>
<option value="2">Android</option>
<option value="3">BlackBerry</option>
<option value="4">Windows Phone 8</option></p>
</select>
<p>Description: <input type="text" name="Description"></p>
<p>Screen Size (inches): <input type="text" name="ScreenSize"></p>
<p>Price: £<input type="text" name="Price"></p>
<p>Stock Quantity: <input type="text" name="StockQuantity"></p>
<p>Storage Size: <input type="text" name="StorageSize"></p>
<p>Large Image(340x340):<input type="text" name="LargeImg"></p>
<p>Thumbnail(100x100):<input type="text" name="ThumbImg"></p>
<p>Flagged?: <input type="checkbox" name="IsFlagged"></p>
<input type="submit" value"Submit">
</form>
谢谢。
编辑:我收到表单以我想编辑的手机形式提取值,这很好,但我想要'大图像(340x340)'和'Thubmnail (100x100)'表单中的文本字段显示手机图像的文件名(如果有)。图像被上传到服务器,大图像和缩略图的文件名(即iphone5.jpg)被插入到名为LargeImg和ThumbImg的字段中。我怎么能这样做呢?
此外,当我去编辑内容并提交表单时,我收到错误:
注意:未定义的变量:第51行的PhoneID 下面是第32到51行,第51行是'$ sql ='部分
$ManufacturerID = $_POST['ManufacturerID'];
$Model = $_POST['Model'];
$OSID = $_POST['OSID'];
$Description = $_POST['Description'];
$ScreenSize = $_POST['ScreenSize'];
$Price = $_POST['Price'];
$StockQuantity = $_POST['StockQuantity'];
$StorageSize = $_POST['StorageSize'];
$thumb= $_POST['ThumbImg'];
$large= $_POST['LargeImg'];
if (!isset($IsFlagged))
{
$IsFlagged= 0;
}
else
{
$IsFlagged = $_POST['IsFlagged'];
}
$sql = "UPDATE phones SET ManufacturerID='$ManufacturerID', Model='$Model', OSID='$OSID', Description='$Description', ScreenSize='$ScreenSize', Price='$Price', StockQuantity='$StockQuantity', StorageSize='$StorageSize', ThumbImg='$thumb', LargeImg='$large', IsFlagged='$IsFlagged' WHERE PhoneID='$PhoneID' ";
我不确定问题是什么。如果例如未选中复选框或者没有在文本框中输入图像文件名,我还需要阻止它抛出错误。
答案 0 :(得分:0)
<option value="1"
<? if($varForThisSelect == 'Apple') echo "selected = 'selected'" ?>>
Apple
</option>
您需要将PHP添加到每个选项中。可能有更好的方法(更少的代码行),但这是我过去所做的。
答案 1 :(得分:0)
基本上,您要做的是为<input>
标记添加一个值,这将导致输入预先填充该值中的任何内容。在您的情况下,您将对<input>
标记执行以下操作:
<p>Description: <input type="text" name="Description"
value="<?php echo htmlspecialchars($Description);?>"></p>
对于<select>
代码,您将检查每个选项中的值是否等于您的变量,然后为每个选项显示selected="selected"
。例如:
<option value="1" <?php if($ManufacturerID == 1) echo 'selected="selected"';?>>Apple</option>
如果在服务器上启用了PHP短标记,则可以将上面的行缩小一点,使其成为三元操作。但请记住,并非所有服务器都启用了短标记。
<option value="1" <?= $ManufacturerID == 1 ? 'selected="selected"' : ''?>>Apple</option>