Как добавить еще один столбец для php без получения ошибки неопределенного индекса?

#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