Новая форма сообщения не будет писать в БД - PullRequest
0 голосов
/ 16 сентября 2018

Я получил эту форму для добавления новых сообщений и не могу написать ее в БД.Я отладил это столько, сколько смогу, и когда я пытаюсь добавить, я не получаю никаких ошибок, но также я не вижу сообщение, хранящееся в моей БД.Я что-то пропустил?Код:

-Это форма

<form method = "post" action = "vpost.php" enctype="multipart/form-data">
                    <label>
                        <h5>Наслов</h5>
                        <input type="text" name="title" placeholder="Enter title" value = "<?php if(isset($_POST['title'])) { echo $post_title; } ?>">
                    </label>
                    <label>
                        <h5>Адреса</h5>
                        <input type="text"  name="address" placeholder="Enter address" value = "<?php if(isset($_POST['address'])) { echo $post_address; } ?>">
                    </label>
                    <hr>
                    <label>
                        <h5>Цена</h5>
                        <input type="number" name="price" placeholder="Enter price" value = "<?php if(isset($_POST['price'])) { echo $post_price; } ?>">
                    </label>
                    <hr>
                    <label>
                        <h5>Тип</h5>
                        <input type="text" name="type" placeholder="Enter type" value = "<?php if(isset($_POST['type'])) { echo $post_type; } ?>">
                    </label>
                </div>
                <hr>
                <div class="user-information-second">
                    <label>
                        <h5>Година на градба</h5>
                        <input type="number" name="year_built" placeholder="Year Built" <?php if(isset($_POST['year_built'])) { echo $post_yearbt; } ?>>
                    </label>
                    <hr>
                    <label>
                        <h5>Паркинг</h5>
                        <input type="text" name="parking" placeholder="parking" value = "<?php if(isset($_POST['parking'])) { echo $post_parking; } ?>">
                    </label>
                    <hr>
                    <label>
                        <h5>Квадратура</h5>
                        <input type="number" name="sqmeter" placeholder="sqmeter" value = "<?php if(isset($_POST['sqmeter'])) { echo $post_sqmeter; } ?>">
                    </label>
                    <br>
                   <hr>
                    <label>
                        <h5>Греење/Ладење</h5>
                        <input type="text" name="heat" placeholder="Heating" value = "<?php if(isset($_POST['heat'])) { echo $post_heat; } ?>">
                    </label>
                    <br>
                   <hr>
                    <label>
                        <h5>Галерија</h5>
                        <div class="file">
                            <input type="file" name="image" enctype="multipart/form-data" placeholder="Upload Image">
                        </div>
                    </label>
                    <br>
                    <hr>
                    <label>
                        <button type="submit" id="submit">Внеси Оглас</button>
                    </label>
                    </form>

-Это проверка и запись в базовый файл

<?php
include('includes/general.php');
if (isset($_POST['title']) && isset($_POST['address']) && isset($_POST['price']) &&
isset($_POST['type']) && isset($_POST['year_built']) && isset($_POST['parking']) &&
isset($_POST['sqmeter']) && isset($_POST['heat']) && isset($_POST['image'])) {
require("GUMP-master/gump.class.php");
$gump = new GUMP();
$_POST = $gump->sanitize($_POST); 

$gump->validation_rules(array(
    'title'    => 'required|max_len,120|min_len,15',
    'address'   => 'required|max_len,100|min_len,3',
    'price' => 'required',
    'type' => 'required',
    'year_built' => 'required',
    'parking' => 'required',
    'sqmeter' => 'required',
    'heat' => 'required',
));
$gump->filter_rules(array(
    'title' => 'trim|sanitize_string',
    'address' => 'trim|sanitize_string',
    ));
$validated_data = $gump->run($_POST);

if($validated_data === false) {
    ?>
    <center><font color="red" > <?php echo $gump->get_readable_errors(true); ?> </font></center>
    <?php 
    $post_title = $_POST['title'];
      $post_address = $_POST['address'];
      $post_price = $_POST['price'];
      $post_type = $_POST['type'];
      $post_yearbt = $_POST['year_built'];
      $post_parking = $_POST['parking'];
      $post_sqmeter = $_POST['sqmeter'];
      $post_heat = $_POST['heat'];
}
else {
    $post_title = $validated_data['title'];
      $post_address = $validated_data['address'];
      $post_price = $validated_data['price'];
      $post_type = $validated_data['type'];
      $post_yearbt = $validated_data['year_built'];
      $post_parking = $validated_data['parking'];
      $post_sqmeter = $validated_data['sqmeter'];
      $post_heat = $validated_data['heat'];
      if (isset($_SESSION['firstname'])) {
        $post_author = $_SESSION['firstname'];
    }
    $post_date = date('Y-m-d');


    $image = $_FILES['image']['name'];
    $ext = $_FILES['image']['type'];
    $validExt = array ("image/gif",  "image/jpeg",  "image/pjpeg", "image/png", "image/jpg");
    if (empty($image)) {
echo "<script>alert('Attach an image');</script>";
    }
    else if ($_FILES['image']['size'] <= 0 || $_FILES['image']['size'] > 1024000 )
    {
echo "<script>alert('Image size is not proper');</script>";
    }
    else if (!in_array($ext, $validExt)){
        echo "<script>alert('Not a valid image');</script>";

    }
    else {
        $folder  = 'postpics/';
        $imgext = strtolower(pathinfo($image, PATHINFO_EXTENSION) );
        $picture = rand(1000 , 1000000) .'.'.$imgext;
        if(move_uploaded_file($_FILES['image']['tmp_name'], $folder.$picture)) {
            $query = "INSERT INTO posts (title,address,price,type,year_built,parking,sqmeter,heat,date,image) VALUES ('$post_title' , '$post_address' , '$post_price' , '$post_type' , '$post_yearbt' , '$post_parking', '$post_sqmeter','$post_heat','$post_date','$picture')";
            $result = mysqli_query($conn , $query) or die(mysqli_error($conn));
            if (mysqli_affected_rows($conn) > 0) {
                echo "<script> alert('Posted!');
                window.location.href='index.php';</script>";
            }
            else {
                "<script> alert('Error while posting..try again');</script>";
            }
        }
    }
}
}
?>

Сначала я подумал, что мне не хватаетполе в моей БД, но я перепроверил, и я снова создал таблицу.При необходимости я опубликую изображение моей таблицы сообщений и столбцов.

1 Ответ

0 голосов
/ 16 сентября 2018

Я подозреваю, что ваша проблема в том, что вы проверяете, загружен ли ваш файл изображения с $_POST['image'].Это не то, как PHP обрабатывает загрузку файлов - они хранятся в $_FILES вместо этого, поэтому ваш isset($_POST['image'] == false.

Это должно работать:

<?php
include('includes/general.php');
if (isset($_POST['title']) && isset($_POST['address']) && isset($_POST['price']) &&
isset($_POST['type']) && isset($_POST['year_built']) && isset($_POST['parking']) &&
isset($_POST['sqmeter']) && isset($_POST['heat']) && isset($_POST['image']) && count($_FILES) > 0) 
{ 
  //Properly sanitise and validate your inputs and do what else you need to do
}

Совет: если вы когда-нибудь обнаружите, что PHP-файл просто не выполняет то, что должен быть, условный оператор, который вы используете для проверки данных, является весьма вероятным виновником.Попробуйте отладку, поместив die('OK up to here'); в свои блоки if, чтобы точно определить, выполняется ли код.

Например, в вашем коде, если вы отладили с помощью:

<?php
include('includes/general.php');
if (isset($_POST['title']) && isset($_POST['address']) && isset($_POST['price']) &&
isset($_POST['type']) && isset($_POST['year_built']) && isset($_POST['parking']) &&
isset($_POST['sqmeter']) && isset($_POST['heat']) && isset($_POST['image'])) {
    die('OK up to here');
    //Your code
}

Тогда сообщение OK to here не будет отображаться в вашем выводе, и вы будете знать, что былопроблема с условным оператором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...