MySql и PHP, проблема ввода данных через форму в БД

HADAJIb

Постоялец
Регистрация
5 Июн 2012
Сообщения
84
Реакции
85
Всем привет. Делаю форму в которой ввожу некоторые данные с последующей отправкой в MySql.

Взял в нете пример создания форм, заменил переменные на свои и дописал одну дополнительную, и форма перестала работать, а точнее отправлять мои данные.

Если взять демо данные с примера с которого брал всё, то она работает нормально. стоит только мне изменить переменные, всё, форма не рабочая.
Вот откуда брал пример формы Для просмотра ссылки Войди или Зарегистрируйся
Сам с пхп сильно не знаком, что бы знать тонкости:(facepalm:. Прошу помощи у знатоков :ah::glob:
index.php
Код:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
<script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/bootstrap.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
            <div class="row">
                <h3>PHP CRUD Grid</h3>
            </div>
            <div class="row">
                <p>
                    <a href="create.php" class="btn btn-success">Create</a>
                </p>
                <table class="table table-striped table-bordered">
                      <thead>
                        <tr>
                          <th>name</th>
                          <th>nameone</th>
                          <th>nametwo</th>
                          <th>namethree</th>
                          <th>Action</th>
                        </tr>
                      </thead>
                      <tbody>
                      <?php
                       include 'database.php';
                       $pdo = Database::connect();
                       $sql = 'SELECT * FROM customers ORDER BY id DESC';
                       foreach ($pdo->query($sql) as $row) {
                                echo '<tr>';
                                echo '<td>'. $row['name'] . '</td>';
                                echo '<td>'. $row['nameone'] . '</td>';
                                echo '<td>'. $row['nametwo'] . '</td>';
                                echo '<td>'. $row['namethree'] . '</td>';
                                echo '<td><a class="btn" href="read.php?id='.$row['id'].'">Read</a></td>';
                                echo '</tr>';
                       }
                       Database::disconnect();
                      ?>
                      </tbody>
                </table>
        </div>
    </div> <!-- /container -->
  </body>
</html>

Форма создания create.php
Код:
<?php
    require 'database.php';
    if ( !empty($_POST)) {
        // keep track validation errors
        $nameError = null;
        $nameoneError = null;
        $nametwoError = null;
        $namethreeError = null;
         
        // keep track post values
        $name = $_POST['name'];
        $nameone = $_POST['nameone'];
        $nametwo = $_POST['nametwo'];
        $namethree = $_POST['namethree'];
         
        // validate input
        $valid = true;
        if (empty($name)) {
            $nameError = 'Please enter Name';
            $valid = false;
        }
         
        if (empty($nameone)) {
            $nameoneError = 'Please enter Name';
            $valid = false;
         
        if (empty($nametwo)) {
            $nametwoError = 'Please enter Name';
            $valid = false;
        }
         
        if (empty($namethree)) {
            $namethreeError = 'Please enter Name';
            $valid = false;
        }
        // insert data
        if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO customers (name,nameone,nametwo,namethree) values(?, ?, ?, ?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($name,$nameone,$nametwo,$namethree));
            Database::disconnect();
            header("Location: index.php");
        }
    }
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
<script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
    <link   href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/bootstrap.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
    <script src="js/bootstrap.js"></script>
</head>
<body>
    <div class="container">
     
                <div class="span10 offset1">
                    <div class="row">
                        <h3>Create a Customer</h3>
                    </div>
             
                    <form class="form-horizontal" action="create.php" method="post">
                      <div class="control-group <?php echo !empty($nameError)?'error':'';?>">
                        <label class="control-label">Фамилия</label>
                        <div class="controls">
                            <input name="name" type="text"  placeholder="Name" value="<?php echo !empty($name)?$name:'';?>">
                            <?php if (!empty($nameError)): ?>
                                <span class="help-inline"><?php echo $nameError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($nameoneError)?'error':'';?>">
                        <label class="control-label">Имя</label>
                        <div class="controls">
                            <input name="nameone" type="text"  placeholder="nameone" value="<?php echo !empty($nameone)?$nameone:'';?>">
                            <?php if (!empty($nameoneError)): ?>
                                <span class="help-inline"><?php echo $nameoneError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($nametwoError)?'error':'';?>">
                        <label class="control-label">Лет</label>
                        <div class="controls">
                            <input name="nametwo" type="text"  placeholder="nametwo" value="<?php echo !empty($nametwo)?$nametwo:'';?>">
                            <?php if (!empty($nametwoError)): ?>
                                <span class="help-inline"><?php echo $nametwoError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($namethreeError)?'error':'';?>">
                        <label class="control-label">С.бал.</label>
                        <div class="controls">
                            <input name="namethree" type="text"  placeholder="namethree" value="<?php echo !empty($namethree)?$namethree:'';?>">
                            <?php if (!empty($namethreeError)): ?>
                                <span class="help-inline"><?php echo $namethreeError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="form-actions">
                          <button type="submit" class="btn btn-success">Create</button>
                          <a class="btn" href="index.php">Back</a>
                        </div>
                    </form>
                </div>
                 
    </div> <!-- /container -->
  </body>
</html>

В БД создал таблицу с полями name, nameone, nametwo, namethree.

Для просмотра ссылки Войди или Зарегистрируйсяна которой загрузил форму свою. :dead:
 
а первую часть create.php покажите - с формой
 
Ну попробуй для начала в create.php
var_dump($_POST);
die();
Хотя form data через post передаётся, судя по отладчику...
<-------------- добавлено через 536 сек. -------------->
Добавь мои строки после <?php
<-------------- добавлено через 394 сек. -------------->
Да неее... всё ОК показывает !
array(4) { ["name"]=> string(3) "dsg" ["nameone"]=> string(3) "ger" ["nametwo"]=> string(2) "12" ["namethree"]=> string(4) "1212" }
Надо заполнить поля, потом нажать отправить... И там уже смотреть.
<-------------- добавлено через 122 сек. -------------->
Перед
// insert data
добавь
var_dum($valid);
die();

var_dump($_POST);
die();
Это удали

И отключи мультицитирование !
<-------------- добавлено через 1120 сек. -------------->
var_dump($valid); !! сорри опечатался

Перед
// insert data
добавь
var_dump($valid);
die();
<-------------- добавлено через 79 сек. -------------->
а первую часть create.php покажите - с формой
Она там есть, ниже...
<-------------- добавлено через 156 сек. -------------->
Стоп ! Дак Для просмотра ссылки Войди или Зарегистрируйся у тебя просто в БД не пишет, остальное всё верно... раз
header("Location: index.php");
срабатывает, смотри запись в БД !
И включил бы в скрипте вывод ошибок !
PHP:
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
В create.php после <?php
<-------------- добавлено через 1162 сек. -------------->
Убери эти строки с ini_set
и попробуй так
PHP:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$mysqli->query("INSERT INTO customers (name,nameone,nametwo,namethree) values('$name','$nameone','$nametwo','$namethree')");
только данные для коннекта с базой свои поставь

вместо

$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO customers (name,nameone,nametwo,namethree) values(?, ?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($name,$nameone,$nametwo,$namethree));
Database::disconnect();
<-------------- добавлено через 1187 сек. -------------->
кинь мне файл create.php
<-------------- добавлено через 1096 сек. -------------->
PHP:
<?php
    require 'database.php';
    if ( !empty($_POST)) {
        // keep track validation errors
        $nameError = null;
        $nameoneError = null;
        $nametwoError = null;
        $namethreeError = null;
         
        // keep track post values
        $name = $_POST['name'];
        $nameone = $_POST['nameone'];
        $nametwo = $_POST['nametwo'];
        $namethree = $_POST['namethree'];
         
        // validate input
        $valid = true;
        if (empty($name)) {
            $nameError = 'Please enter Name';
            $valid = false;
        }
         
        if (empty($nameone)) {
            $nameoneError = 'Please enter Name';
            $valid = false;
        }
        if (empty($nametwo)) {
            $nametwoError = 'Please enter Name';
            $valid = false;
        }
         
        if (empty($namethree)) {
            $namethreeError = 'Please enter Name';
            $valid = false;
        }
        // insert data
        if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO customers (name,nameone,nametwo,namethree) values(?, ?, ?, ?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($name,$nameone,$nametwo,$namethree));
            Database::disconnect();
            header("Location: index.php");
        }
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
<script
  src="https://code.jquery.com/jquery-3.2.1.min.js"
  integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
  crossorigin="anonymous"></script>
    <link   href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/bootstrap.css" rel="stylesheet">
    <script src="js/bootstrap.min.js"></script>
    <script src="js/bootstrap.js"></script>
</head>
<body>
    <div class="container">
     
                <div class="span10 offset1">
                    <div class="row">
                        <h3>Create a Customer</h3>
                    </div>
             
                    <form class="form-horizontal" action="create.php" method="post">
                      <div class="control-group <?php echo !empty($nameError)?'error':'';?>">
                        <label class="control-label">Фамилия</label>
                        <div class="controls">
                            <input name="name" type="text"  placeholder="Name" value="<?php echo !empty($name)?$name:'';?>">
                            <?php if (!empty($nameError)): ?>
                                <span class="help-inline"><?php echo $nameError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($nameoneError)?'error':'';?>">
                        <label class="control-label">Имя</label>
                        <div class="controls">
                            <input name="nameone" type="text"  placeholder="nameone" value="<?php echo !empty($nameone)?$nameone:'';?>">
                            <?php if (!empty($nameoneError)): ?>
                                <span class="help-inline"><?php echo $nameoneError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($nametwoError)?'error':'';?>">
                        <label class="control-label">Лет</label>
                        <div class="controls">
                            <input name="nametwo" type="text"  placeholder="nametwo" value="<?php echo !empty($nametwo)?$nametwo:'';?>">
                            <?php if (!empty($nametwoError)): ?>
                                <span class="help-inline"><?php echo $nametwoError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="control-group <?php echo !empty($namethreeError)?'error':'';?>">
                        <label class="control-label">С.бал.</label>
                        <div class="controls">
                            <input name="namethree" type="text"  placeholder="namethree" value="<?php echo !empty($namethree)?$namethree:'';?>">
                            <?php if (!empty($namethreeError)): ?>
                                <span class="help-inline"><?php echo $namethreeError;?></span>
                            <?php endif; ?>
                        </div>
                      </div>
                      <div class="form-actions">
                          <button type="submit" class="btn btn-success">Create</button>
                          <a class="btn" href="index.php">Back</a>
                        </div>
                    </form>
                </div>
                 
    </div> <!-- /container -->
  </body>
</html>
 
Ну попробуй для начала в create.php
var_dump($_POST);
die();
Хотя form data через post передаётся, судя по отладчику...
В эту строку
if ( !empty($_POST)) {

или где
// keep track post values ?
<-------------- добавлено через 348 сек. -------------->
Ну попробуй для начала в create.php
var_dump($_POST);
die();
Хотя form data через post передаётся, судя по отладчику...
<-------------- добавлено через 536 сек. -------------->
Добавь мои строки после <?php
Добавил показывает вот такое array(0) { }
<-------------- добавлено через 1012 сек. -------------->
Добавил, открылась страница create.php
<-------------- добавлено через 480 сек. -------------->
Wertos, исправил. перезалил файл.
<-------------- добавлено через 213 сек. -------------->
guru-ua1.hostsila.org

<-------------- добавлено через 67 сек. -------------->
PMuSIv2bTGSZMUhMmvt3-A.png

<-------------- добавлено через 94 сек. -------------->
Включил вывод, ругается на строки 2,3,4
Warning: ini_set() has been disabled for security reasons in
<-------------- добавлено через 1501 сек. -------------->
Изменил. Вписал. Ничего в бд нету. Почему тогда с сайта примера от куда всё брал, всё работает с полями, имя. мыло, телефон и отправляет всё как надо, я лишь переменные изменил и оно перестало отправлять. ничего ж глобального не менялось.
<-------------- добавлено через 984 сек. -------------->
Отправил в лс
<-------------- добавлено через 1154 сек. -------------->
С исправленным файлов заработало. и записалось в БД. Спасибо те большое Wertos! :D:beer:
 
Назад
Сверху