0

私が犯した単純な間違いだと思いますが、条件を満たしたときに最後のelse if {}ステートメントが実行されない理由を今まで解決できませんでした。

それは私のフォームです。ユーザーが値を入力するためのオプションとして、3 つのフォーム要素があります。テキスト、写真、動画のいずれかを選択してアップロードできます。これが私のPHPです:

if ( $this->input->post('text') !== '') {

   //this executes fine when it meets the condition

} else if ( $this->input->post('photo') !== '' ) {

   // this also works fine

} else if ( $this->input->post('video') !== '' ) {

   /* however, I can't get to this condition when 
   the user chooses to upload the movie.
   It always go the second condition.
   */

}

編集:

これが私の見解です:

<form action="<?php echo base_url()?>action/post" method="post" enctype="multipart/form-data">
     <ul class="nav nav-tabs">
         <li class="active">
              <a href="#status" data-toggle="tab">Update Status</a>
         </li>
         <li>
              <a href="#photos" data-toggle="tab">Post Photos</a>
         </li>
         <li>
              <a href="#videos" data-toggle="tab">Post Videos</a>
         </li>
     </ul>
     <div class="tab-content">
         <div class="tab-pane active" id="status">
              <textarea name="text"></textarea>
          </div>
          <div class="tab-pane" id="photos">
              <input type="file" name="photo" class="input" />
              <input type="text" name="photos-detail" placeholder="description" />
          </div>
          <div class="tab-pane" id="videos">
              <input type="file" name="video" class="input" />
              <input type="text" name="videos-detail" placeholder="description" />
          </div>
      </div>
      <button type="submit" class="btn btn-primary" name="post">Post</button>
 </form>

どんなアイデアでも本当に感謝しています。

4

2 に答える 2

2

そのようにファイル入力を確実にチェックすることはできません。私は通常、ファイル サイズをチェックして、何かがアップロードされているかどうかを確認します。

if ( $this->input->post('text') !== '') {    
   //code   
} else if((isset($_FILES["photo"]["size"])) && ($_FILES["photo"]["size"] > 0)){   
   // code 2    
} else if((isset($_FILES["video"]["size"])) && ($_FILES["video"]["size"] > 0)){    
    // code 3    
}

ファイルサイズを確認するだけでは不十分です。そうしないと、未定義のインデックスエラーが発生します-したがって、 isset()

于 2013-01-03T14:58:25.120 に答える