2017-10-24 10 views
0

背景に表示されていない:私は、フォームが2つの動的選択フィールド(状態)と(国)を持つビューのフォーム<select><option>値は、第二の選択ボックスのPHPに

から入手介してアクセス編集フォームを持っています。 入力されると、最初の選択ボックスに適切なデータベースエントリが表示されますが、2番目のボックスは空白です。最初の選択後に入力されたフィールドはすべて空白として表示されます。次のように

コードは次のとおりです。

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(); 
?> 
+0

問題にリンクやフィドルを提供できますか? –

+0

現在のコードでは、行番号にエラーが表示されます。 77最初に正しいコードで質問を投稿 –

答えて

0

私は問題はあなたが$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. 

あなたのfor()ループから$rowの元の値が上書きされ、時間によってnullになってしまうであろうことを意味while()ループ、ため$row変数名を使用しています2番目の選択フィールドに移動します。 whileループを変更して別の変数名(たとえば$whileRowなど)を使用すると、元の$row変数が上書きされなくなります。

サイドノート:もう一度、while()ループのために$rowを使用しています。これにより、再び問題が発生します。特にネストされたループでは、どの変数名を使用するか注意する必要があります。これは、追跡しにくい奇妙なバグ(これまで見たような)を生成する可能性があるためです。

+0

こんにちはブリーリー、ありがとうございます。私は実際には3つの場所で同じ変数を使用しているとは考えていませんでした。フィールドが混乱したのも不思議ではありません。 3つの異なるインスタンスを開くように書き直しました。すべてが現れています。あなたの助けに感謝。 – almostgem

関連する問題