0

我有一个包含下拉框以及文本字段和复选框的表单。我想要做的是,当用户进入此页面并且地址栏显示 /updatephoneform.php?id=1 时,表单会显示 id1(我的数据库中的电话 ID)的信息,因此可以编辑和更新。我将如何修改我的表单来做到这一点?变量和形式如下:

变量

$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: &pound;<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)”和“缩略图(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' ";

我不确定问题是什么。例如,如果未选中该复选框或在文本框中未输入图像文件名,我还需要阻止它引发错误。

4

2 回答 2

0
<option value="1" 
    <? if($varForThisSelect == 'Apple') echo "selected = 'selected'" ?>>
Apple
</option>

您需要将该 PHP 添加到每个选项中。可能有更好的方法(更少的代码行),但这是我过去所做的。

于 2013-02-07T20:22:23.980 回答
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>
于 2013-02-07T20:23:23.150 回答