2011-11-20 4 views
2

Je suis Noob dans CI et je ne peux pas insérer une donnée dans la base de données, voici tout ce que je l'ai fait, il ne me montre pas une erreur, mais je ne suis pas un résultat,Codeigniter problèmes Noob

admin.php (contrôleur)

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); 
      } 

    } 

modèle 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 vue

<!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> 

s'il vous plaît aidez-moi, j'ai copié presque tout pour être shure Je n'ignore pas quelque chose,

+0

lieu de définir chaque variable indépendante pour chaque touche '$ _POST', vous devez utiliser' extrait ($ _ POST); ' –

+0

I Je ne sais pas ce que vous voulez dire, j'ai écrit que je suis noob, pouvez-vous m'en donner un exemple? – Irakli

+0

Je l'ai fait? Relisez mon commentaire. Aussi, changez tous les 'and' à' && ' –

Répondre

2

Ok, commençons par effacer votre code. Au lieu de devoir créer chaque variable indépendante dans votre méthode if ($_SESSION['admin'] == 'loged'), vous pouvez utiliser la fonction extract();. La méthode extract() crée une variable pour chaque clé du tableau fourni. Dites que vous avez la clé name dans le tableau $_POST, la méthode de l'extrait va créer une variable nommée name pour vous. Pour récupérer la valeur, tout ce que vous devez faire est d'accéder à la variable $name.

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

    extract($_POST); 

} 

Deuxièmement, ne pas utiliser le mot and si vous voulez vérifier plus d'une chose dans une instruction if, vous utilisez l'opérande suivant « & & ».

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'])) 

Au lieu de vérifier manuellement pour voir si chaque objet a été défini dans le tableau $_POST, vous pouvez simplement itérer $_POST.

Créer un tableau des variables que vous devez régler:

$req_fields = array(

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

); 

Ensuite, créez un tableau pour les éléments qui ne sont pas définis:

$notset = array(); 

Enfin, itérer $_POST vérifier pour voir si chaque valeur est définie. Sinon, ajoutez-le au tableau.

foreach ($req_fields as $key) { 

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

     $notset[] = $key; 

    } 
} 

Vérifiez ensuite si les valeurs ne sont pas réglées et rediriger l'utilisateur, sinon, chargez le modèle et l'écho du message:

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); 

} 

On peut supposer que la raison réelle derrière l'insert ne fonctionne pas est parce que ce n'est pas réellement appelé. La raison derrière cela serait que certaines des clés n'étaient pas réellement définies.

Itérer à travers le réseau $notset pour voir si tel est le cas:

foreach ($notset as $unsetField) { 

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

} 
+0

de CI merci, merci et merci encore beaucoup de vérifier mon code. Je suis sûr que d'autres "noobs" qui ont les mêmes problèmes seront heureux de voir la réponse. – Irakli

Questions connexes