If-else с несколькими условиями в PHP

0

На какое-то время я пытался заставить этот код работать для этой базы данных форм, но он просто не работает должным образом.

Это ввод формы без PI_ID. Это ввод формы с PI_ID.

$content = $_POST['cr_code'] . "-" . $_POST['cr_num'] . "-" . $_POST['cr_mon'] . "-" . $_POST['cr_year'] . "-" . $_POST['cr_modul'] . "-" . $_POST['cr_phase'] . "-" . $_POST['cr_pi_id'];

Этот выход был неисправен, поскольку выход будет CR-001-08-18- -, если я не хочу вводить какой-либо модуль или фазу, потому что линии, расположенные за 18, не должны быть там.

В основном, выход CR-001-08-18-Marketing-PH1-PI1, модуль (маркетинг), фаза (PH1) и PI_ID (PI1) необязательны для заполнения, чтобы он мог быть:

  • CR-001-08-18-Маркетинг (заполненный модуль, фаза незаполненная, PI_ID не заполнено)
  • CR-001-08-18-PH1 (модуль незаполнен, заполнен фазой, PI_ID не заполнен)
  • CR-001-08-18-PI (модуль незаполнен, заполнен фазой, заполнен PI_ID)

Это был код, в котором я пытался использовать if-else:

$phase=$_GET['cr_phase'];
$modul=$_GET['cr_modul'];
$crpid=$_GET['cr_pi_id'];

if ($phase!='' && $modul='' && $crpid='')
{
	$content = $_POST['cr_code'] . "-" . $_POST['cr_num'] . "-" . $_POST['cr_mon'] . "-" . $_POST['cr_year'] . "-" . $_POST['cr_phase'];
}else if($phase='' && $modul!='' && $crpid='')
{
	$content = $_POST['cr_code'] . "-" . $_POST['cr_num'] . "-" . $_POST['cr_mon'] . "-" . $_POST['cr_year'] . "-" . $_POST['cr_modul'];
}else if($phase='' && $modul='' && $crpid=!'')
{
	$content = $_POST['cr_code'] . "-" . $_POST['cr_num'] . "-" . $_POST['cr_mon'] . "-" . $_POST['cr_year'] . "-" . $_POST['cr_pi_id'];
}else if($phase!='' && $modul!='' && $crpid!='')
{
	$content = $_POST['cr_code'] . "-" . $_POST['cr_num'] . "-" . $_POST['cr_mon'] . "-" . $_POST['cr_year'] . "-" . $_POST['cr_modul'] . "-" . $_POST['cr_phase'] . "-" . $_POST['cr_pi_id'];
}else
{
	$content = $_POST['cr_code'] . "-" . $_POST['cr_num'] . "-" . $_POST['cr_mon'] . "-" . $_POST['cr_year'];
}

Но это не работает, поскольку он просто отображает CR-001-08-18 без отображения фазы и модуля, даже когда я вводил фазу, модуль и PI_ID.

Может ли кто-нибудь помочь?

Теги:
if-statement
variables

2 ответа

0

Оператор switch похож на ряд операторов IF на одно и то же выражение. Во многих случаях вам может понадобиться сравнить одну и ту же переменную (или выражение) со многими различными значениями и выполнить другой фрагмент кода в зависимости от того, какое значение оно равно. Это именно то, для чего предназначен оператор switch. http://php.net/manual/en/control-structures.switch.php

0
Only three if condition needed.Also check the method(GET or POST) you are using to submit the form and fetch the data accordingly or use $_REQUEST.

$phase=$_POST['cr_phase'];
$modul=$_POST['cr_modul'];
$crpid=$_POST['cr_pi_id'];

$values = "";
if($phase != '')
{
$values .= "-$phase";
}
if($modul != '')
{
$values .= "-$modul";
}
if($crpid != '')
{
$values .= "-$crpid";
}

    $content = $_POST['cr_code'] . "-" . $_POST['cr_num'] . "-" . $_POST['cr_mon'] . "-" . $_POST['cr_year'] . $values;
  • 0
    Большое спасибо за ваш ответ! я попытался изменить переменную с $ _GET на $ _REQUEST, и с помощью вашего оператора if else это сработало чудесно!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню