Запрос в базу данных

Discussion in 'PHP' started by antras2007, 30 Oct 2014.

  1. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Подскажите пожалуйста кто знает. Мне нужно добавить в базу данных сведения о товаре: название, изображение(имя изображения), информацию о товаре, и категорию. В базу все заносится но почему то 2 раза одновременно, не могу найти ошибку.

    Вот код формы:
    PHP:
    <?php
    session_start
    ();
    if(
    $_SESSION['admin']!=true){
        
    header("Location: lock.php");
        die();
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Интернет магазин</title>
        <script type="text/javascript" src="../js/jquery.js"></script>
    </head>
    <body>
    <a href="../admin/index.php">index</a>
    <a href="../admin/categories.php">categories</a>
    <form enctype="multipart/form-data" action="classes/addgoods.php" method="POST">
        <p>Название<input type="text" name="goods_name"> </p>
        <p>Добавить изображение<input type="file" name="userfile"></p>
        <p>Информация<textarea rows="10" cols="45" name="info"></textarea> </p>
        <p>Цена<input type="text" name="price"></p>
        <input type="button" id="categories" value="добавить родительскую категорию">
        <select name="parent_category" id="parent_category">
        </select>
        <input type="submit" name="submit">
    </form>
    <script type="text/javascript">
        $( document ).ready(function() {
            $("#categories").click(function () {
                $.ajax({
                    url:"helpers/getcategories.php",
                    type:"POST",
                    dataType:"json",
                    success: function(data){
                        $.each(data, function( index, value ) {
                            var string = '<option value="'+index+'">'+value.category+'</option>';
                            $('#parent_category').append(string);
                        });
                    }
                })
            });
        });
    </script>
    </body>
    </html>

    это код обработчика:

    <?php
    include "connectdb.php";

    class 
    addgoods{
        private 
    $link;

        function 
    addGoods()
        {
            
    $this->link connectdb::getInstance();
            
    $this->link->query("set names 'utf8'");

            if(
    $_SERVER['REQUEST_METHOD']=='POST') {

                
    $path "../../images";
                
    $file_name uniqid();
                
    $goods_name htmlspecialchars($_POST['goods_name']);
                
    $userfile $_FILES['userfile']['name'];
                
    $tmp_name $_FILES['userfile']['tmp_name'];
                
    $info htmlspecialchars($_POST['info']);
                
    $price htmlspecialchars($_POST['price']);

                
    $parent_category = isset($_POST['parent_category']) and !empty($_POST['parent_category']);
                if(
    $parent_category){
                    
    $parent_category htmlspecialchars($_POST['parent_category']);
                }else{
                    
    $parent_category 0;
                }

                if (!empty(
    $userfile)) {
                    
    $file $path '/' $file_name $userfile;
                    
    $uploaded_file move_uploaded_file($tmp_name$file);

                }

                if (
    $uploaded_file) {
                    
    $save_file $file_name $_FILES['userfile']['name'];
                } else {
                    
    $save_file null;
                }

                if(
    $goods_name or $userfile or $info or $price){
                    
    $query 'INSERT INTO goods(
                                              filename,
                                              info,
                                              price,
                                              parent_category
                                              )
                                          VALUES (
                                              "'
    .$save_file.'",
                                              "'
    .$info.'",
                                              "'
    .$price.'",
                                              "'
    .$parent_category.'"
                                              )'
    ;
                    
    $result $this->link->query($query);
                }
            }
            
    header("Location: ../goods.php");
        }
    }

    $addgoods = new addgoods();
    $addgoods->addGoods();
    Заранее спасибо!!
     
    #1 antras2007, 30 Oct 2014
    Last edited: 30 Oct 2014
  2. say1ted

    say1ted New Member

    Joined:
    6 Dec 2013
    Messages:
    22
    Likes Received:
    1
    Reputations:
    0
    Ну... убедись, для начала, что метод addGoods() вызывается один раз (принтани там ченить).
     
  3. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    А как это сделать? можно поподробнее?
     
  4. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    2antras2007
    Код в первом посте поместите в тег [ PHP][/ PHP] для удобочитаемости :)
     
    _________________________
    1 person likes this.
  5. say1ted

    say1ted New Member

    Joined:
    6 Dec 2013
    Messages:
    22
    Likes Received:
    1
    Reputations:
    0
    Дык, после
    PHP:
    if($_SERVER['REQUEST_METHOD']=='POST') { 
    напиши типа
    PHP:
    echo "Time";
    добавь товар и убедись что Time вывелось один раз.
     
  6. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Да, вы правы Time выводится 2 раза, но я не понимаю почему?
     
  7. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    addgoods->__construct = addgoods->addgoods() вот и два раза. и функцию загрузки файла лучше поменяй
     
  8. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Я понял в чем ошибка!!!! метод addGoods называется так же как класс addgoods и поэтому метод вызывается 2 раза. А так все работает.
     
    #8 antras2007, 31 Oct 2014
    Last edited: 31 Oct 2014
  9. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Теперь все понятно. Сообщения не в том порядке оказались
     
    #9 antras2007, 31 Oct 2014
    Last edited: 31 Oct 2014
  10. antras2007

    antras2007 New Member

    Joined:
    4 Jul 2013
    Messages:
    33
    Likes Received:
    0
    Reputations:
    0
    Спасибо всем, кто откликнулся