2

これは、私が改善しようとしているファイル アップロード スクリプト用です。私は単に 1 つの方法に落ち着くことができず、さまざまな問題に遭遇しました。

ファイルがアップロードされると、アクセス カテゴリが与えられます。これは、後日ファイルを表示できるユーザーを決定するためのものです。このフィールドに列挙型を使用していましたが、現在は単純な varchar です。

オプションのリストは、select distinct ステートメントを使用して、フォームのドロップダウン ボックスに表示されます。

 <div class="uploadFormE">
                <label>Access Category: </label>
                <select name="accessCategory[]">
                    <?php
                        foreach($accessCategories as $eachCat){
                            $val = $eachCat['accessCategory'];
                           echo "<option value=" .$val.">" .$val. "</option>";
                        }

                    ?>
                </select>
            </div>

            OR TYPE NEW ONE

            <div class="uploadFormE">
                <label>New Access Category: </label>
                <input type="text" name="accessCategory[]"> </input>
            </div>

問題は「または新しいものを入力する」部分です。(ドロップダウンのデフォルト設定では、入力フィールドに入力できる内容が上書きされます)

アップローダーに新しいカテゴリを追加する機会を提供したいと思います。

回避策はありますか? よりクリーンでより良い方法があれば、私はすべて耳を傾けます。「カテゴリを追加」するために別の関数を使用するつもりでしたが、それは不可能なフィールドです。また、新しいテーブルを正当化するのに十分な値がなく、更新時に列挙型を機能させることができませんでした。

ありがとう。

編集:

<div class="uploadFormE">
                <label>Access Category: </label>
                <select name="accessCategory[]">
                    <?php
                        foreach($accessCategories as $eachCat){
                            $val = $eachCat['accessCategory'];
                           echo "<option value=" .$val.">" .$val. "</option>";
                        }
                    ?>
                    <option value="newCat">New Category?</option>
                </select>
            </div>


            <div class="uploadFormE">
                <label>New Access Category: </label>
                <input type="text" class="GAH" name="newCategory"> </input>
            </div>


           $comments = htmlentities( trim( $_POST['comments'][$i] ) );

            if($_POST['accessCategory[]'] == "newCat"){
                $accessCat = htmlentities( trim ($_POST['newCategory'][$i]));
            }else{
                $accessCat = htmlentities( trim ($_POST['accessCategory'][$i]));
            }

            //doc, pdf, etc etc
            $category = htmlentities( trim( $_POST['category'][$i] ) );

            if($file['name'] != ""){
                $training->uploadDocument( $fileName, $category, $comments, $accessCat );
            }
4

2 に答える 2

0

あなたの問題空間を正しく理解していれば、同じ名前の要素が 2 つあります。しないでください。
代わりに、一意の ID と名前を作成し、PHP で処理する if ステートメントを用意します。

それができない場合は、3 番目の隠し要素を作成し、javascript を実行して値をそこにコピーし、この 3 番目の要素の値を PHP で使用します。

于 2013-08-09T07:13:02.940 に答える