2017-02-15 11 views
0

Я немного смущен условием написания веб-сервисов с использованием php. У меня есть поле type, которое должно быть w или d, больше ничего. w для будних дней, как в понедельник, вторник в пятницу, и d для дат как 2017-02-15Проверка PHP для webservice

В основном то, что я хочу, если

type = w затем days = Monday // Это может быть что угодно, с понедельника по Пятница ..

Итак, как я могу поставить валидацию для поля days, что я должен быть с понедельника по пятницу, он должен дать ошибку, если пользователь вводит что-то еще ..?

Аналогично, если type = d затем days = 2017-02-15 так, если тип д и дни должна быть дата, как 2017-02-15 она не должна быть понедельник или любые другие символы или числа, она должна быть дата.

Это то, что я попробовал ..

if (isset($this->inputs['day_type']) == 'w') { 
    // w = Monday, Tuesday etc 
    if (isset($this->inputs['days']) && !empty($this->inputs['days'])) { 

     $campaign->days = $campaign->days; 
    } 
} elseif (isset($this->inputs['day_type']) == 'd') { 
    if (isset($this->inputs['dates']) && !empty($this->inputs['dates'])) { 
     $seperatingDates = explode(";", $this->inputs['dates']); 
     $campaign->days = $seperatingDates; 
    } 
} 
+0

'isset' возвращает логическое значение, поэтому вы не можете сравнить его в строку. Вы должны сделать сравнение отдельно. – MrDarkLynx

+0

Тогда как я могу проверить, что пользователь ввел что-нибудь? пользователь может оставить его пустым, я не хочу, чтобы пустое значение сохранялось. @MrDarkLynx –

+0

Нет, вы можете оставить 'isset', но вы должны проверить значение отдельно:' if (isset ($ this-> input ['day_type']) && $ this-> input ['day_type'] == 'w') ' – MrDarkLynx

ответ

-1

Вы можете использовать

if (isset($this->inputs['day_type']) && $this->inputs['day_type'] == 'w') { 
    // w = Monday, Tuesday etc 
    if (isset($this->inputs['days']) && !empty($this->inputs['days'])) { 

     $campaign->days = $campaign->days; 
    } 
} 
elseif (isset($this->inputs['day_type']) && $this->inputs['day_type'] == 'd') { 
    if (isset($this->inputs['dates']) && !empty($this->inputs['dates'])) { 
     $seperatingDates = explode(";", $this->inputs['dates']); 
     $campaign->days = $seperatingDates; 
    } 
} 

Объяснение:

isset(value) возвращает true, если задано значение, в противном случае она возвращает false ,

Итак, здесь вы проверяете, существует ли значение post (day_type) и оно равно w, а затем выполните первый блок операторов. И если установлено значение (day_type) и оно равно d, тогда выполните второй блок операторов.

UPDATE:

Также вы можете просто использовать switch..case для того же:

$day_type = $this->inputs['day_type']; 

switch($day_type) 
{ 
    case 'w' : 
     if (isset($this->inputs['days']) && !empty($this->inputs['days'])) { 
      $campaign->days = $campaign->days; 
     } 
     break; 

    case 'd' : 
     if (isset($this->inputs['dates']) && !empty($this->inputs['dates'])) { 
      $seperatingDates = explode(";", $this->inputs['dates']); 
      $campaign->days = $seperatingDates; 
     } 
} 
+0

Помогите объяснить нижний план? – mrid

 Смежные вопросы

  • Нет связанных вопросов^_^