2012-04-18 10 views
0

私はフォーム内にある複数のhtmlオプション要素の汎用関数を作成しようとしています。オプションリストは各要素ごとに異なるので、私がしたいのは、私のmysqlテーブルでそれらを参照する 'id'に基づいてオプションを表示することです。これは配列になります。テーブルには2つのカラムがあり、最初の 'id'は数字だけで、2番目の 'prod_option'は表示したい値です。誰かが私のコードに間違っていることを説明できますか?選択要素に出力する配列を使用したmysqlクエリ

ここで私はselect要素の中で関数を呼び出します。私は接続に問題はありません。

//This should select 'prod_option' for id's 1,2 & 3 for example 
<td><div class="formInput"><label>Cap or Vac:</label> 
<select name="pack_req" id="pack_req[]" 
value="**<?php $newProd->packRequirements(1,2,3); ?>**" /></select></div></td> 


//function in class 
public function packRequirements($values){ 
$con = $this->connection; 
$itms = array($values); 

$sql = $con->query("SELECT `prod_option` 
FROM `packaging_requirements` 
WHERE `id` IN('".implode("', '", $itms)."')"); 

while($r = $sql->fetch_array(MYSQLI_ASSOC)): 
echo '<option value="'$itms['prod_option']'"</option>'; 
endwhile; 

} 

答えて

1

あなたは次のように選択タグの間に、あなたの関数を置きたいかもしれません:あなたのHTMLが間違っているように見える

<select value="**<?php $newProd->packRequirements(1,2,3); ?>**"></select> 
1

<select><?php $newProd->packRequirements(1,2,3); ?></select> 

の代わりに。選択はこのように書きます:

<select name="myname"> 
    <option value="42">Everything</option> 
</select> 

しかし、その代わりに、あなたのコードは、あなたがこのように記述する必要が

<select name="pack_req" id="pack_req[]" value="**<option value=". 
+0

あなたの素早い返信をありがとう。私はあなたがselectオプションに推奨する変更を行いました。しかし、まだ値をエコーし​​ません。$ itms ['prod_option']をエコーする必要があるかどうかわかりません。たぶん、私は結果をエコーする必要がありますが、どのように確認してください。 – paynod

+0

そこにあるべきものと何があるべきかを比較する。 "; – pp19dd

0
<td><div class="formInput"><label>Cap or Vac:</label> 
<select name="pack_req" id="pack_req[]"> 
**<?php $newProd->packRequirements(1,2,3); ?>**</select></div></td> 


//function in class 
public function packRequirements($values){ 
$con = $this->connection; 
$itms = array($values); 

$sql = $con->query("SELECT `prod_option` 
FROM `packaging_requirements` 
WHERE `id` IN('".implode("', '", $itms)."')"); 

while($r = $sql->fetch_array(MYSQLI_ASSOC)): 
echo '<option value=".$itms['prod_option'].">'.$itms['prod_option'].'</option>'; 
endwhile; 

} 
+0

私はこのように見えるようにコードを修正しました: – paynod

+0

OK、私はエラーメッセージをソートしました。私が持っている問題は、たとえば、$ newProd-> packRequirements(array(1,2,3))を使用すると、配列の最初の値だけを返すことです。それはid 1のprod_optionだけを返します。他のオプションは表示されません....なぜですか?ああ! – paynod

+0

さて、ソートしました。たぶん、これは他の誰かを助けるでしょう。ここに私の変更されたコードがあります:$ items = implode( "、"、$ itms); $ sql = $ con-> query( "SELECT' prod_option'パッケージング要求事項 'どこで' id''({$ items}) "); – paynod

0

生成:

<select name='selectName'><?php newProd->packRequirements(array(1,2,3)) ?></select> 



public function packRequirements($itms = array()) { 
    $con = $this->connection; 

    $sql = $con->query("SELECT `prod_option` FROM `packaging_requirements` WHERE `id` IN('" . implode(",", $itms) . "')"); 

    while($r = $sql->fetch_array(MYSQLI_ASSOC)) { 
    echo '<option value="' . $r['prod_option'] . '">' . $r['prod_option'] . '</option>'; 
    } 
} 
+0

これは、VACである最初の 'prod_option'を取得しますが、このエラーも表示します。 警告:implode()[function.implode]:無効な引数がC:\ wamp \ www \ includes \ newLineForm.class.php line 16 16行目は$ sqlステートメント – paynod

0

これを試してみてください。

public function packRequirements($values = array()) 
{ 
    $result =''; 
    $string = implode(',', $values); 

    $sql = $con->query("SELECT `prod_option` 
         FROM `packaging_requirements` 
         WHERE `id` IN('".$string."')"); 
    while($r = $sql->fetch_array(MYSQLI_ASSOC)){ 
     $result .= '<option value=".$r['prod_option'].">'.$r['prod_option'].'</option>'; 
    } 
return $result; 

} 

<select name="pack_req" id="pack_req[]"> 
**<?php echo $newProd->packRequirements(arra(1,2,3)); ?>** 
</select> 
関連する問題