0

テキストフィールドとチェックボックスだけでなく、ドロップダウンボックスを含むフォームがあります。私がやろうとしているのは、ユーザーがこのページにアクセスしてアドレスバーに /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: &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 ショート タグが有効になっている場合は、上記の行を少し要約して、3 項演算にすることができます。ただし、すべてのサーバーで短いタグが有効になっているわけではないことに注意してください。

<option value="1" <?= $ManufacturerID == 1 ? 'selected="selected"' : ''?>>Apple</option>
于 2013-02-07T20:23:23.150 に答える