我有很多$ _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或其他任何方式吗?
提前致谢。
答案 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}"/> <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()
)
希望它有所帮助:)