簡體   English   中英

<select><option>值未出現在第二個選擇框中

[英]<select> <option> value not appearing on second select box

背景:我有一個通過GET從視圖表單訪問的編輯表單。

表單具有兩個動態選擇字段: statecountry
填充后,第一個選擇框顯示正確的數據庫條目,但是第二個為空白。 第一次選擇后輸入的所有字段均顯示為空白。

代碼如下:

include 'connection.php';

$newid = $_GET['id'];

try {

$conec = new Connection();
$con   = $conec->Open();
if ($con) {

$sql = "SELECT * FROM certco where id = " . $newid;
$re  = $con->query($sql);
foreach ($con->query($sql) as $row) {
?>

<link rel="stylesheet" href="gridstyle.css" />

<form action="processeditcertco.php" method="post">
<fieldset class="block">
<legend>Certification Companies</legend>
<label for="coname">Co Name</label>
<input type="text" name="coname" id="coname" value="<?php echo $row['coname']; ?>" size="65" />

<label for="shortname">Initials</label>
<input type="text" name="shortname" id="shortname" value="<?php echo $row['shortname']; ?>"  size="40" /> 

<label for="addr1">Address 1</label>
<input type="text" name="addr1" id="addr1" value="<?php echo $row['addr1']; ?>"  size="65" />

<label for="addr2">Address 2</label>
<input type="text" name="addr2" id="addr2" value="<?php echo $row['addr2']; ?>"  size="65" />

<label for="city">City</label>
<input type="text" name="city" id="city" value="<?php echo $row['city']; ?>"  size="65" />

<label for="zip">Zip</label>
<input type="text" name="zip" id="zip" value="<?php echo $row['zip']; ?>"  size="65" />

<input type="text" name="country" id="country" value="<?php echo $row['country']; ?>"  size="65" />
// above just to show that the 'country' field has data above select

<label for="state">State</label>
<select id="state" name="state">
<option value="<?php echo $row['state']; ?>"><?php echo $row['state']; ?></option>
// note this is exactly the same as the country code below that does not show data.

<?php
$conn = new PDO('mysql:host=localhost;dbname=money', 'muser', 'mpass');
$stmt = $conn->query('SELECT * from state where type = "state" or type = "capitol"');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<option value= " . $row['abbreviation'] . ">" . $row['name'] . "</option>";
}
?>
</select> 

<label for="country">Country</label>
<select id="country" name="country">
<option value="<?php echo $row['country']; ?>"><?php echo $row['country']; ?></option>
//no data shows in this option field.

<?php
$conn = new PDO('mysql:host=localhost;dbname=money', 'muser', 'mpass');
$stmt = $conn->query("SELECT * FROM country where currencycode > 0 order by menuposition asc");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<option value= " . $row['alpha3'] . ">" . $row['name'] . " - " . $row['officialname'] . "</option>";
}
?>
</select>

</fieldset>
<fieldset>
<input type="submit" class="button"  name="submit" value="Update Record" />
</fieldset>
</form>

<?php
} 
} else {
echo $con;
}
} catch (PDOException $ex) {
echo $ex->getMessage();
}
$conec->Close();
?>

我認為問題在於您正在重用$row變量名。 在代碼塊的這一部分:

<?php
$conn = new PDO('mysql:host=localhost;dbname=money', 'muser', 'mpass');
$stmt = $conn->query('SELECT * from state where type = "state" or type = "capitol"');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
   echo "<option value= " . $row['abbreviation'] . ">" . $row['name'] . "</option>";
}
?>
</select> 

<label for="country">Country</label>
<select id="country" name="country">
   <option value="<?php echo $row['country']; ?>"><?php echo $row['country']; ?></option>
//no data shows in this option field.

您正在為while()循環使用$row變量名,這意味着來自for()循環的$row原始值將被覆蓋,直到到達第二個選擇字段時最終為null while循環更改為使用其他變量名(例如$whileRow )可以防止原始的$row變量被覆蓋。

旁注:您在第二個while()循環中再次使用$row ,這將再次導致問題。 您需要注意使用什么變量名,尤其是在嵌套循環中,因為它最終會產生一些難以跟蹤的怪異錯誤(如您所見)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM