Проблемы с Codeigniter Noob - PullRequest
       0

Проблемы с Codeigniter Noob

2 голосов
/ 20 ноября 2011

Я нуб в CI и не могу вставить данные в базу данных, вот все, что я сделал, это не показывает ошибку, но я не получаю результат,

admin.php (контроллер)

public function postnews(){

        $ip = $_SERVER['REMOTE_ADDR'];
            if ($ip == "my ip address"){

                session_start();

                if (!isset($_SESSION['admin'])){
                    $this->load->view('admin-login');
                    die(0);
                    }

                if ($_SESSION['admin'] != 'loged'){
                    $this->load->view('admin-login');
                    die(0);
                    }

                if ($_SESSION['admin'] == 'loged'){

                    if (isset($_POST['title'])and isset($_POST['main-poster']) and isset($_POST['type']) and isset($_POST['year']) and isset($_POST['language'])and isset($_POST['platform'])and isset($_POST['publisher'])and isset($_POST['size'])and isset($_POST['graphics'])and isset($_POST['little-info'])and isset($_POST['full-info'])and isset($_POST['posters'])and isset($_POST['screenshots'])and isset($_POST['trailers'])and isset($_POST['gameplays'])and isset($_POST['author'])){

                        $title = $_POST['title'];
                        $main_poster = $_POST['main-poster'];
                        $type = $_POST['type'];
                        $year = $_POST['year'];
                        $language = $_POST['language'];
                        $platform = $_POST['platform'];
                        $publisher = $_POST['publisher'];
                        $size = $_POST['size'];
                        $graphics = $_POST['graphics'];
                        $little_info = $_POST['little-info'];
                        $full_info = $_POST['full-info'];
                        $posters = $_POST['posters'];
                        $screenshots = $_POST['screenshots'];
                        $trailers = $_POST['trailers'];
                        $gameplays = $_POST['gameplays'];
                        $autor = $_POST['author'];
                        $date = date("d.m.Y");

                        $this->load->model('Gamesmodel');
                        echo $this->Gamesmodel->PostArticle($title, $main_poster, $type, $year, $language, $platform, $publisher, $size, $graphics, $little_info, $full_info, $posters, $screenshots, $trailers, $gameplays, $autor, $date);

                    }else{
                        $this->load->view('postnews');
                    }

                }

            } else {
                $this->load->view('404.htm');
                die(0);
            }

    }

gamemodel.php модель

<?php
class Gamesmodel extends CI_Model {

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function PostArticle($title, $main_poster, $type, $year, $language, $platform, $publisher, $size, $graphics, $little_info, $full_info, $posters, $screenshots, $trailers, $gameplays, $autor, $date)
    {
        $sql = "INSERT INTO game-articles (id, title, type, year, language, platform, publisher, size, graphics, little-info, full-info, posters, screenshots, trailers, gameplays, date, author) VALUES ('' ,".$this->db->escape($title).",".$this->db->escape($main_poster).",".$this->db->escape($type).",".$this->db->escape($year).",".$this->db->escape($language).",".$this->db->escape($platform).",".$this->db->escape($publisher).",".$this->db->escape($size).",".$this->db->escape($graphics).",".$this->db->escape($little_info).",".$this->db->escape($full_info).",".$this->db->escape($posters).",".$this->db->escape($screenshots).",".$this->db->escape($trailers).",".$this->db->escape($gameplays).",".$this->db->escape($date).",".$this->db->escape($author).")";
        $this->db->query($sql);
        return $this->db->affected_rows();
    }
}

postnews.php view

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Post News</title>
</head>
<body style="background-color:black;">
    <div style="margin:auto auto auto auto; width:800px; background-color:white; padding-top:20px; padding-bottom:20px; text-align:center;">
        <form action="http://www.gameslib.net/admin/postnews" method="post"><br />
            <input type="text" placeholder="title" name="title" style="width:300px;" /><br />
            <input type="text" placeholder="main poster" name="main-poster" style="width:300px;" /><br />
            <input type="text" placeholder="type" name="type" style="width:300px;" /><br />
            <input type="text" placeholder="year" name="year"/><br />
            <input type="text" placeholder="language" name="language" style="width:300px;" /><br />
            <input type="text" placeholder="platform" name="platform" style="width:300px;" /><br />
            <input type="text" placeholder="publisher" name="publisher" style="width:300px;" /><br />
            <input type="text" placeholder="size" name="size"/><br />
            <input type="text" placeholder="graphics" name="graphics" style="width:300px;" /><br />
            <textarea name="little-info" placeholder="little-info" style="width:600px; height:100px;" ></textarea><br />
            <textarea name="full-info" placeholder="full-info" style="width:600px; height:200px;" ></textarea><br />
            <textarea name="posters" placeholder="posters" style="width:600px; height:50px;" ></textarea><br />
            <textarea name="screenshots" placeholder="screenshots" style="width:600px; height:50px;" ></textarea><br />
            <textarea name="trailes" placeholder="trailes" style="width:600px; height:50px;" ></textarea><br />
            <textarea name="gameplays" placeholder="gameplays" style="width:600px; height:50px;" ></textarea><br />
            <input type="text" placeholder="author" name="author" /><br />
            <input type="submit" value="P O S T"/><br />
            <input type="reset" value="reset"/><br />
        </form>
    </div>
</body>
</html>

пожалуйста, помогите мне, я скопировал все, чтобы быть уверенным, что я не игнорирую что-то,

1 Ответ

2 голосов
/ 20 ноября 2011

Хорошо, давайте начнем с очистки вашего кода. Вместо того, чтобы создавать каждую независимую переменную в вашем методе if ($_SESSION['admin'] == 'loged'), вы можете использовать функцию extract();. Метод extract() создает переменную для каждого ключа в предоставленном массиве. Скажем, у вас есть ключ name в массиве $_POST, метод извлечения создаст для вас переменную с именем name. Чтобы получить значение, все, что вам нужно сделать, это получить доступ к переменной $name.

if ($_SESSION['admin'] == 'loged'){

    extract($_POST);

}

Во-вторых, вы не используете слово and, если вы хотите проверить более чем одну вещь в операторе if, вы используете следующий операнд '&&'.

if (isset($_POST['title']) && isset($_POST['main-poster']) && isset($_POST['type']) && isset($_POST['year']) && isset($_POST['language']) && isset($_POST['platform']) && isset($_POST['publisher']) && isset($_POST['size']) && isset($_POST['graphics']) && isset($_POST['little-info']) && isset($_POST['full-info']) && isset($_POST['posters']) && isset($_POST['screenshots']) && isset($_POST['trailers']) && isset($_POST['gameplays']) && isset($_POST['author']))

Вместо того, чтобы вручную проверять, установлен ли каждый объект в массиве $_POST, вы можете просто выполнить итерацию по $_POST.

Создайте массив переменных, которые вам нужно установить:

$req_fields = array(

    'title', 
    'main-poster', 
    'type', 
    'year', 
    'language', 
    'platform', 
    'publisher', 
    'size', 
    'graphics', 
    'little-info', 
    'full-info', 
    'posters', 
    'screenshots', 
    'trailers', 
    'gameplays', 
    'author'

);

Затем создайте массив для элементов, которые не были установлены:

$notset = array();

Наконец, выполните итерацию $_POST, проверяя, установлено ли каждое значение. Если нет, добавьте его в массив.

foreach ($req_fields as $key) {

    if (!isset($_POST[$key]) {

        $notset[] = $key;

    }
}

Затем проверьте, не были ли установлены какие-либо значения, и перенаправьте пользователя, в противном случае загрузите модель и отправьте сообщение:

if (count($notset) > 0) {

    $this->load->view('postnews');

}
else {

    $this->load->model('Gamesmodel');
    echo $this->Gamesmodel->PostArticle($title, $main_poster, $type, $year, $language, $platform, $publisher, $size, $graphics, $little_info, $full_info, $posters, $screenshots, $trailers, $gameplays, $autor, $date);

}

Предположительно, настоящая причина, по которой вставка не работает, заключается в том, что она фактически не вызывается. Причиной этого может быть то, что некоторые ключи фактически не были установлены.

Выполните итерацию по массиву $notset, чтобы увидеть, так ли это:

foreach ($notset as $unsetField) {

    echo "Field {$unsetField} is not set. <br />";

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