У меня есть два php-файла. Один из них состоит в том, чтобы хранить данные формы/таблицы и запрашивать данные для ввода данных, а другой php-файл - обрабатывать данные формы и вставлять информацию, которая вводится на главной странице в базу данных. У меня есть право на информацию о подключении, поэтому я оставил его по соображениям конфиденциальности. Мой вопрос в том, как мне или я должен отправить информацию из формы и сделать массив в строку перед отправкой в целевую таблицу? Когда я пытаюсь вставить как есть, он возвращает сообщение об ошибке, говорящее, что мой синтаксис неверен, но все переменные сеанса читаются, потому что он возвращает значения полей ввода. Ниже приведена копия того, что я пробовал до сих пор. У меня будет 10 начальных полей с возможностью добавления нескольких строк, но, ради длины, я сократил таблицу до двух начальных строк.Как вставить поля формы формы ввода в таблицу базы данных, используя PHP
Вот моя главная страница формы: SANTable.php
<?php
session_start();
// If this is the initial trip, set up the $_SESSION.
if (!isset($_SESSION['initial_pass'])){
$_SESSION['initial_pass']=true;
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SAN Fiber Request</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="wrapper">
<div id="maincontent">
<hr class="GreyHorizon">
<form id="sanFiber" action="insert.php" method="post">
<table class="frame" id="sanRequest" style="display: block;">
<tr>
<th style="border:none"> </th>
<th><b class="RedAsterik">*</b>Host Name</th>
<th><b class="RedAsterik">*</b>Network Type</th>
<th><b class="RedAsterik">*</b>Description</th>
<th><b class="RedAsterik">*</b>Server Port Used</th>
<th><b class="RedAsterik">*</b>Speed</th>
<th><b class="RedAsterik">*</b>Mgmt Arms/Swings RT or LT</th>
<th><b class="RedAsterik">*</b>Primary Function</th>
<th><b class="RedAsterik">*</b>Comments</th>
</tr>
<tr>
<td style="border:none"><img src="images/plus2.png" name="myImage" id="swap1" class="toggler" /></td>
<!--25-->
<td><input name="host[]" class="field" type="text" size="15" /></td>
<!--25-->
<td><select name="NETTYPEdropdown[]" id="NETTYPEdropdown">
<option selected="selected" value=""></option>
<option value="FiberChannel">Fiber Channel</option>
</select></td>
<!--50-->
<td><select name="Descriptiondropdown[]" id="Descriptiondropdown" class="Description_dropdown">
<option selected="selected" value=""></option>
<option value="PriA">Primary Fabric A</option>
<option value="PriB">Primary Fabric B</option>
<option value="SecA">Secondary Fabric A</option>
<option value="SecB">Secondary Fabric B</option>
<option value="BackA">Backup Fabric A</option>
<option value="BackB">Backup Fabric B</option>
<option value="ilo-Manage">ilo-Management</option>
<option value="UTCS265">UTCS Private 265</option>
<option value="addOther">Other...</option>
</select></td>
<!--30-->
<td><input name="PortUsed[]" class="field" type="text" id="PortUsed" size="15" /></td>
<!--15-->
<td><select name="Speeddropdown[]" id="Speeddropdown">
<option selected="selected" value=""></option>
<option value="1GB">1GB</option>
<option value="4GB">4GB</option>
<option value="8GB">8GB</option>
<option value="10GB">10GB</option>
<option value="16GB">16GB</option>
</select></td>
<!--15-->
<td><select name="MGMTdropdown[]" id="MGMTdropdown">
<option selected="selected" value=""></option>
<option value="YesR">Yes - Right</option>
<option value="YesL">Yes - Left</option>
<option value="No">No</option>
</select></td>
<!--50-->
<td><input name="primary[]" class="field" type="text" id="primary" size="25" /></td>
<!--250-->
<td><textarea name="comments[]" class="field" type="text" id="comments" size="20"></textarea></td>
</tr>
</table>
<br>
<fieldset id="buttons">
<input class="fsSubmitButton" type="submit" value="Review" />
<input class="fsSaveButton" id="save" type="submit" value="Save" />
<a href="#bottom" name="bottom"><input class="fsAddButton" type="button" value="Add New Row" /></a>
<input class="fsNewHostButton" type="submit" value="Add New Host" />
</fieldset>
</form>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#save").click(function(){
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "insert.php",
data: datastring,
cache: false,
success: function(){
alert('success');
},
error: function(e){
alert('nope.');
}
});
return false;
});
});
</script>
</body>
</html>
А вот мой insert.php:
<?php
if (session_id() == '') {
session_start();
}
else {
var_dump(session_id());
}
/*
***Connection info***
*/
//for SAN Fiber Request
$_SESSION['host'] = $_POST['host'];
$_SESSION['netType'] = $_POST['NETTYPEdropdown'];
$_SESSION['description'] = $_POST['Descriptiondropdown'];
$_SESSION['used'] = $_POST['PortUsed'];
$_SESSION['speed'] = $_POST['Speeddropdown'];
$_SESSION['mgmt'] = $_POST['MGMTdropdown'];
$_SESSION['primary'] = $_POST['primary'];
$_SESSION['comments'] = $_POST['comments'];
$number = count($_SESSION['host']);
for ($i=0; $i<$number; $i++)
{
$hostno = $_SESSION['host'][$i];
$netTypeno = $_SESSION['netType'][$i];
$descriptno = $_SESSION['description'][$i];
$usedno = $_SESSION['used'][$i];
$speedno = $_SESSION['speed'][$i];
$mgmtno = $_SESSION['mgmt'][$i];
$primaryno = $_SESSION['primary'][$i];
$commentsno = $_SESSION['comments'][$i];
if ($_SESSION['host'][$i] <> '') {
$sql = "INSERT INTO cable_request_san_fiber_detail (CABLE_REQUEST_SAN_FIBER_DETAIL_ID, CABLE_REQUEST_ID, NETWORK_TYPE, HARDWARE_PORT_ID, SERVER_PORT, SPEED, MANAGEMENT_ARM, PRIMARY_FUNCTION, CABLE_LABEL, SWITCH_HARDWARE_PORT_ID, DESCRIPTION, HARDWARE_ID, COMMENTS) VALUES (, 1, $netTypeno, ,$usedno, $speedno, $mgmtno, $primaryno, $hostno, ,$descriptno, , $commentsno)";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
$conn->close();
?>
Как следует извлечь значения извлекается из полей ввода на странице HTML на странице php обрабатывать запрос вставки?
Вы установили правильный тип данных для столбцов базы данных? –
также, если CABLE_REQUEST_SAN_FIBER_DETAIL_ID является автоинкрементным, попробуйте написать ** по умолчанию ** (без знака цитаты) или 0 вместо того, чтобы оставить его пустым. –
@AliSheikhpour Да, типы данных правильно установлены на int и varchar. Я попытаюсь использовать значение по умолчанию для значения auto-increment. Полагаю, это то, что можно отбросить. Я не был уверен, как ссылаться на автоматически увеличивающееся значение, поэтому я сначала оставил его пустым. –