如何为Empty设置默认值($ _ POST)?

时间:2016-03-24 06:39:32

标签: php mysql

我有很多$ _POST变量,并希望将它们插入到数据库中。

它有效。但我必须设置默认值" NA"当用户没有填写表格时。

这是我的代码:

$tgl_real   =  $_POST['TGL_REAL'];
$rid        =  $_POST['RID'];
$mesin      =  $_POST['MESIN'];
$shift      =  $_POST['SHIFT'];
$produk     =  $_POST['PRODUK'];
$tanggal    =  $_POST['HT'];
$no_aduk    =  $_POST['NO_ADUK'];
$sho        =  $_POST['SHO'];
$tb1        =  $_POST['TB1'];
$gr1        =  $_POST['GR1'];
$tb2        =  $_POST['TB2'];
$gr2        =  $_POST['GR2'];
$tb3        =  $_POST['TB3'];
$gr3        =  $_POST['GR3'];
$tb4        =  $_POST['TB4'];
$gr4        =  $_POST['GR4'];
$tb5        =  $_POST['TB5'];
$gr5        =  $_POST['GR5'];
$spr_besar  =  $_POST['SPR_BESAR'];
$spr_kecil  =  $_POST['SPR_KECIL'];
$br1        =  $_POST['BR1'];
$br2        =  $_POST['BR2'];
$br3        =  $_POST['BR3'];
$tebal1     =  $_POST['TEBAL1'];
$tebal2     =  $_POST['TEBAL2'];
$tebal3     =  $_POST['TEBAL3'];
$panjang    =  $_POST['PANJANG'];
$lebar      =  $_POST['LEBAR'];
$diameter   =  $_POST['DIAMETER'];
$kc         =  $_POST['KC'];
$kkc        =  $_POST['KKC'];
$kerataaan_poles  = $_POST['KERATAAN_POLES'];

   $sql = "INSERT INTO adonan SET `RID` = '$rid',
                                 `MESIN` = '$mesin',
                                   `SHIFT` = '$shift',
                                    `HARI_TGL` = '$tanggal',
                                    `TGL_REAL` = '$tgl_real',
                                     `PRODUK` = '$produk',
                                      `NO_ADUK` = '$no_aduk',
                                       `KERATAAN_SHO` = '$sho',
                                        `TEBAL_SHEET_GR1` = '$tb1',
                                         `KECAPATAN_KAIN_GR1` = '$gr1',
                                          `TEBAL_SHEET_GR2` = '$tb2',
                                           `KECAPATAN_KAIN_GR2` = '$gr2',
                                            `TEBAL_SHEET_GR3` = '$tb3',
                                             `KECAPATAN_KAIN_GR3` = '$gr3',
                                              `TEBAL_SHEET_GR4` = '$tb4',
                                               `KECAPATAN_KAIN_GR4` = '$gr4',
                                                `TEBAL_SHEET_GR5` = '$tb5',
                                                 `KECAPATAN_KAIN_GR5` = '$gr5',
                                                  `SPEED_ROLL_BESAR_WC` = '$spr_besar',
                                                   `SPEED_ROLL_KECIL_WC` = '$spr_kecil',
                                                    `BERAT1_ADONAN` = '$br1',
                                                     `BERAT2_ADONAN` = '$br2',
                                                      `BERAT3_ADONAN` = '$br3',
                                                       `KETEBALAN1_ADONAN` = '$tebal1',
                                                        `KETEBALAN2_ADONAN` = '$tebal2',
                                                         `KETEBALAN3_ADONAN` = '$tebal3',
                                                          `PANJANG_ADONAN` = '$panjang',
                                                           `LEBAR_ADONAN` = '$lebar',
                                                            `DIAMATER_ADONAN` = '$diameter',
                                                             `MOLDER_SPEED` = '$kc',
                                                             `KONVEYOR_SPEED` = '$kkc',
                                                              `KERATAAN_POLES` = '$kerataaan_poles',
                                                               `PROSENTASE_POLES` = '$prosentase_poles',
                                                                `KERATAAN_GULA` = '$kerataaan_gula',
                                                                 `PROSENTASI_GULA` = '$kerataaan_gula'";

$ _POST正在从文件中获取数据,但如何设置默认值(" NA") 在我的数据库中,当用户没有填写值时。

的Nb:

  

我试图在我的mysql数据库中设置默认的NA,但是当用户没有填写时它没有用,我的列字段仍然是空的

     

不建议我使用jquery验证,因为有时用户会将其填入并且有时不填写。

     

数据库列必须不为空(" NA")字符串。

     

我的数据库类型数据是Varchar

任何人都可以帮我解决这个问题,只能使用PHP或其他任何方式吗?

提前致谢。

6 个答案:

答案 0 :(得分:2)

在php 5中,您可以使用isset()

$tgl_real = isset($_POST['TGL_REAL'])? $_POST['TGL_REAL']:'NA';
在php 7中,你不需要isset(),你可以使用??:

$tgl_real = $_POST['TGL_REAL']?? 'NA';

您还可以使用empty()检查POST数据是否为空。

if(empty($_POST['TGL_REAL'])){
  $tgl_real = 'NA';
}else{
  $tgl_real = $_POST['TGL_REAL'];
}

实际上,你可以在mysql中设置default Constraint并检查设置NOT NULL

答案 1 :(得分:1)

一个简单的解决方法是你可以使用条件语句进行赋值

                 <div id="modalPanel-1" data-backdrop="static" class="modal hide fade in">
                                <div class="modal-header"><a data-dismiss="modal" class="close" id="closeModal" onclick="reconstruct()">×</a>
                                    <h3>Selected Trips</h3></div>
                                <div class="modal-body" style="width: 100%;">
                                    <p:panel style="border: medium none;" id="modalPanel-1-panel">
                                        <h:form id="modalForm">
                                            <h:selectOneMenu style="width:25%;"
                                                             value="#{userAction.assignVehicleSelectedVehicleID}">
                                                <f:selectItem itemLabel="Select Vehicle"></f:selectItem>
                                                <f:selectItems value="#{userAction.allVehicleList}"></f:selectItems>
                                                <p:ajax listener="#{userAction.assignVehicleChangeHandler}"
                                                        process="@this" update="@form"/>
                                            </h:selectOneMenu>
                                            <h:selectOneMenu id="driver" style="width:25%; margin-left: 10px;"
                                                             value="#{userAction.assignVehicleSelectedDriverID}">
                                                <f:selectItem itemLabel="Select Driver"></f:selectItem>
                                                <f:selectItems value="#{userAction.drivername}"/>
                                            </h:selectOneMenu>
                                            <h:commandButton
                                                    styleClass="btn btn-success" value="New Ride"
                                                    style="margin-left: 20px; margin-top: -10px;">
                                                <p:ajax listener="#{userAction.linkVehicleForAssignVehicle}"
                                                        process="@form" update="@form, :treeTableForm" oncomplete="clearModalErr();"></p:ajax>
                                            </h:commandButton>                                               
                                            <div>
                                                <ul></ul>
                                            </div>
                                            <p:dataTable value="#{userAction.selectedMatchedTripDTOs}" var="trip"
                                                         rendered="true" expandedRow="true">
                                                <p:column headerText="Group ID">
                                                    <h:outputText value="#{trip.groupId}"></h:outputText>
                                                </p:column>
                                                <p:column headerText="Route">
                                                    <h:outputText value="#{trip.route}"></h:outputText>
                                                </p:column>
                                                <p:column headerText="Requester">
                                                    <h:outputText value="#{trip.userName}"></h:outputText>
                                                </p:column>
                                                <p:column headerText="Count">
                                                    <h:outputText value="#{trip.count}"></h:outputText>
                                                </p:column>
                                                <p:column headerText="Ride ID">
                                                    <h:outputText value="#{trip.rideId}"></h:outputText>
                                                </p:column>
                                                <p:column>
                                                    <f:facet name="header">Action</f:facet>
                                                    <h:commandLink rendered="true" disabled="false">
                                                        <i class="fa fa-trash" title="Delete"></i>
                                                        <p:ajax listener="#{userAction.removeTripFromSelectedList(trip)}"
                                                                update=":modalForm"/>
                                                    </h:commandLink>
                                                </p:column>
                                                <p:rowExpansion>
                                                    <ul><h:outputText value="#{trip.startDate}"
                                                                      style="color: darkblue; font-size: 16px; padding-left: 400px;"/>
                                                    </ul>                                                    
                                                    <pm:content rendered="#{not empty trip.custom}">
                                                        <ul style="width: 100%;"><h:outputText value="Notes"
                                                                                               style="font-size: 14px"
                                                                                               rendered="#{not empty trip.custom}"/>&nbsp;<h:outputText
                                                                rendered="#{not empty trip.custom}"
                                                                value="#{trip.custom}"
                                                                style="color: #999999; font-size: 14px; "/></ul>
                                                    </pm:content>
                                                </p:rowExpansion>
                                            </p:dataTable>
                                        </h:form>
                                    </p:panel>
                                </div>
                            </div>

答案 2 :(得分:1)

实际上,这里的大部分答案都很脆弱,或者需要相当多的复制粘贴。以下是如何使用您想要的密钥动态创建变量。

虽然,特别是当你将它们插入数据库时​​,你应该考虑使用数组。

$keys = array(
    'TGL_REAL',
    'RID',
    'MESIN',
    'SHIFT',
    'PRODUK',
    'HT',
    'NO_ADUK',
    'SHO',
    'TB1',
    'GR1',
    'TB2',
    'GR2',
    'TB3',
    'GR3',
    'TB4',
    'GR4',
    'TB5',
    'GR5',
    'SPR_BESAR',
    'SPR_KECIL',
    'BR1',
    'BR2',
    'BR3',
    'TEBAL1',
    'TEBAL2',
    'TEBAL3',
    'PANJANG',
    'LEBAR',
    'DIAMETER',
    'KC',
    'KKC',
    'KERATAAN_POLES',
)

$beforeExtract = array();

foreach ($keys as $key) {
    if (array_key_exists($_POST[$key]) && !empty($_POST[$key])) {
        $beforeExtract[strtolower($key)] = $_POST[$key];
        continue;
    }
    $beforeExtract[strtolower($key)] = 'NA';
}

// Make variables from array
extract($beforeExtract);

答案 3 :(得分:0)

你可以像Shyman所说的那样做,但是将它包装在某个地方的函数中(类,功能) - 获取参数并在未设置时指定默认值:

function getParam($name, $default = 'NA') {
    return isset($_POST[$name]) ? $_POST[$name] : $default;
}

$tgl_real = getParam('TGL_REAL');
$someNiceInteger = getParam('WHAT_THE_INT', 0);

答案 4 :(得分:0)

你可以在一开始就做一个foreach。

foreach ($_POST as $key=>$value){
    if ($value==''){
        $_POST[$key]='NA';
    }
}

这样的事情会有所帮助。

答案 5 :(得分:0)

在创建数据库表时,您可以设置默认约束。例如

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
)

希望它有所帮助:)