#php #html #mysql #crud
#php #HTML #mysql #crud
Вопрос:
Всякий раз, когда я пытаюсь добавить дополнительный код для дополнительного столбца, я по-прежнему получаю ошибку undefined index, хотя я получил ее один раз..Вторая попытка оказалась неудачной, и мне потребовалось очень много времени, чтобы разобраться с этим..Сначала я добавил столбец в базу данных..Например, мне нужно добавить столбец с ключевым словом.
<?php
require 'database.php';
if (isset($_GET)) {
// keep track validation errors
$titleError = null;
$authorError = null;
$date_createdError = null;
$abstractError = null;
// keep track post values
$title = $_POST['title'];
$author = $_POST['author'];
$date_created = $_POST['date_created'];
$abstract = $_POST['abstract'];
// validate input
$valid = true;
if (empty($title)) {
$titleError = 'Please enter title';
$valid = false;
}
if (empty($author)) {
$authorError = 'Please enter author name(s)';
$valid = false;
}
if (empty($date_created)) {
$date_createdError = 'Please enter the Date';
$valid = false;
}
if (empty($abstract)) {
$abstractError = 'Please enter the research study abstract';
$valid = false;
}
// insert data
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO archives (title,author,date_created,abstract) values(?, ?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($title,$author,$date_created,$abstract));
Database::disconnect();
header("Location: main.php");
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link href="css/bootstrap.css" rel="stylesheet">
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="span10 offset1">
<div class="row">
<h3>Add New Reserch Study</h3>
</div>
<form class="form-horizontal" action="create.php" method="post">
<div class="control-group <?php echo !empty($titleError)?'error':'';?>">
<label class="control-label">Title</label>
<div class="controls">
<span class="resizable-input">
<input name="title" type="text" id="inp" placeholder="Copy amp; paste complete research title here" value="<?php echo !empty($title)?$title:'';?>">
</span>
<?php if (!empty($titleError)): ?>
<span class="help-inline"><?php echo $titleError;?></span>
<?php endif; ?>
</div>
</div>
<div class="control-group <?php echo !empty($authorError)?'error':'';?>">
<label class="control-label">Author(s)</label>
<div class="controls">
<span class="resizable-input">
<input name="author" type="text" id="inp" placeholder="Copy amp; paste complete name(s) here..." value="<?php echo !empty($author)?$author:'';?>">
</span>
<?php if (!empty($authorError)): ?>
<span class="help-inline"><?php echo $authorError;?></span>
<?php endif;?>
</div>
</div>
<div class="control-group <?php echo !empty($date_createdError)?'error':'';?>">
<label class="control-label">Date Received</label>
<div class="controls">
<input name="date_created" type="date" id="inp" placeholder="YYYY-MM-DD format only" value="<?php echo !empty($date_created)?$date_created:'';?>">
<?php if (!empty($date_createdError)): ?>
<span class="help-inline"><?php echo $date_createdError;?></span>
<?php endif;?>
</div>
</div>
<div class="control-group <?php echo !empty($abstractError)?'error':'';?>">
<label class="control-label">Abstract</label>
<div class="controls">
<span class="resizable-input">
<input name="abstract" maxlength="2000" type="text" placeholder="Copy amp; paste the abstract here.." id="inp" value="<?php echo !empty($abstract)?$abstract:'';?>">
</span>
<?php if (!empty($abstractError)): ?>
<span class="help-inline"><?php echo $abstractError;?></span>
<?php endif;?>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-success">Create</button>
<a class="btn" href="main.php">Back</a>
<a href="logout.php?logout" class="btn btn-danger">amp;nbsp;Sign Out</a>
</div>
</form>
</div>
</div> <!-- /container -->
</body>
</html>
Комментарии:
1. Я предлагаю вам удалить эти строки
$titleError = null;
, затем изменить эти строки$title = $_POST['title'];
на$title = isset($_POST['title']) ? $_POST['title'] : null;
— это устанавливает переменным значение по умолчанию, если ключ отсутствует в данных post.2. итак, будет ли эта ошибка исправлена, если я введу значение по умолчанию для каждого столбца?
3.
$title = isset($_POST['title']) ? $_POST['title'] : null;
в этой строке используется так называемый троичный оператор, который в основном представляет собой сокращение if / else. Сначала проверяется, существует ли $ _POST[‘title’], и, если нет, присваивается переменной значение по умолчанию / null