2016-04-04 4 views
0

私はここで新しいので、私の質問に関して何かを間違って行った場合は、「穏やか」で、私が間違っている箇所についての指導をしてください。マルチ選択は、選択した1つのオプションのみを保存します。 (最後に選択したもの)

タイトルごとに、Joomlaの拡張機能に「マルチ選択」フィールドを追加しようとしています。ここでは、オプションは管理者パネルのアイテムビューで選択されています。 すべてが正しく表示されているようですが、アイテムを保存すると、最後に選択されたものだけが選択されたオプションの中から保存されます。

ここはアイテムビューで使用したコードです。

<?php if (count($this->multiselects) > 0): ?> 
        <?php foreach ($this->multiselects as $field): ?> 
         <li><label for="additional_multiselect[<?php echo $field->id ?>]"><?php echo $field->name ?></label> 
          <select multiple="multiple" name="additional_multiselect[<?php echo $field->id ?>]"> 
           <option value=""></option> 
           <?php 
           $values = explode(PHP_EOL, $field->values); 
           foreach ($values as $v) 
           { 
            ?> 
            <option value="<?php echo $v ?>"<?php if (trim($v) == trim($this->multiselect_values[$field->id])) echo 'selected="selected"' ?>><?php echo $v ?></option> 
            <?php 
           } 
           ?> 
          </select> 
         </li> 
         <?php endforeach; ?> 
        <?php endif; ?> 

名前の後に[]を追加しようとしましたが、これはうまくいかなかったようです。私はまた、名前のフィールド - > id部分の周りからそれらを削除し、最後に追加しようとしましたが、これはうまくいかないようです。

私が間違ってしまった箇所を見つけて、正しい方向に向けることができますか?

答えて

1

複数の値が必要な場合は、入力名の最後に[]を使用する必要があります。それ以外の場合は、最後の値のみを受け取ります。

<select multiple="multiple" name="additional_multiselect[]"> 

値を取得したら、print_r($ _ POST)を使用できます。またはprint_r($ _ GET); (フォームタイプによって異なります)複数の入力を受け取ったことを確認してください。次に、それらを保存するときには、それぞれのアイテムを重複させずにそれらのすべてを保存していることを確認してください。 (あなたの保存のコードを示していない)

+0

を[]と保存しようとすると、以下のようなエラーコードが表示されます(ID番号に応じて、#をプレフィックスに置き換えます)。 1054 'フィールドリスト'で不明な列 'Array' SQL = INSERT INTO '#_lister_multiselect_value'(multiselect_id、multiselect_value、item_id)VALUES( '1'、Array、 '6383') これは、うまくいかなかった。 私は保存コードに誤りがあったと思いますか? –

+0

SQLクエリを修正する必要があります。 u_molderで述べたように反復するか、すべての項目を別々の行として挿入するか、単一行として保存する場合はPHPのimplodeを使用します。次に例を示します。$ All_Items_Separated_By_Commas = implode( "、"、$ your_array); –

1

はあなたの選択の名前に別の[]を追加します。フォーム送信後

<select 
    multiple="multiple" 
    name="additional_multiselect[<?php echo $field->id ?>][]" 
> 

あなた$_POST配列チェック:余分を追加する場合

print_r($_POST); 
+0

余分な[]を追加して保存しようとすると、以下のようなエラーコードが表示されます(ID番号に応じて、ここで#をプレフィックスに置き換えます)。 1054 'フィールドリスト'で不明な列 'Array' SQL = INSERT INTO '#_lister_multiselect_value'(multiselect_id、multiselect_value、item_id)VALUES( '1'、Array、 '6383') これは、うまくいかなかった。 私は保存コードに誤りがあったと思いますか? –

+0

私はあなたのコードの目的を知らない。私はあなたが 'POST [additional_multiselect]'を繰り返し、それぞれの値を別のクエリで挿入するべきだと思います。 –

関連する問題