CodeIgniter - You must use the "set" method to update an entry. – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

CodeIgniter - You must use the "set" method to update an entry. – PHP – Fórum – Programujte.comCodeIgniter - You must use the "set" method to update an entry. – PHP – Fórum – Programujte.com

 

stif+1
Stálý člen
17. 7. 2012   #1
-
0
-

Vážený kolegovia, už pár dní sa zaoberam PHP frameworkom CodeIgniter. Učím sa z Yablkových tutoriálov na zajtra.sk , ktoré sú však 2 roky staré a tým si musím niektoré veci vyhľadávať v USerGuide. Avšak mám problém, keď odošlem formulár tak mi napíše:

A Database Error Occurred

You must use the "set" method to update an entry.

Filename: C:\Program Files (x86)\EasyPHP-5.4.0RC4\www\codeigniter\system\database\DB_active_rec.php

Line Number: 1174

Moje zdrojové kódy:

controler 

<?php if ( !defined ('BASEPATH')) exit ('No direct script access allowed'); 

class Notes extends CI_Controller {

	function __construct()
	{
		parent::__construct();
		$this->load->model('notes_model');
		$this->load->helper('form');
		$this->load->helper('url');
		$this->load->helper('typography');
	}
	
	function index()
	{
		
		
		$data['notes'] = $this->notes_model->getNotes();
		
		$this->load->view('notes_view', $data);
			
	}
	
	function add()
	{
		$this->load->library('form_validation');
		$this->form_validation->set_rules('text', 'Novy text', 'trim|required|xss_clean|htmlspecialchars');
		
		if ($this->form_validation->run())
		{
			$data = Array (
				'text' => $_POST['text'],
			);
			
			$this->notes_model->addNote('notes', $data);
			redirect('notes');
		}
		
		else
		{
				$data['notes'] = $this->notes_model->getNotes();
				$this->load->view('notes_view', $data);
		}
	}
}
?>

view

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="http://127.0.0.1:8080/codeigniter/assets/style.css">
  <title>Notes</title>
</head>
<body>

<div id = "container">
	
	<?php 
		echo validation_errors();
		echo form_open('notes/add');
		echo form_textarea('text');
		echo form_submit('submit', 'pridaj');
		echo form_close();
		
	?>
	
	<ul>
	<?php foreach ($notes as $obj):?>
		<li> 
			<small><?php $obj->time ?></small>
			<?php auto_typography($obj->text) ?>
		</li>
	<?php endforeach; ?>
	</ul>
</div>

</body>
</html>

model

<?php if ( !defined ('BASEPATH')) exit ('No direct script access allowed'); 

class Notes_model extends CI_Model {

	function getNotes()
	{
		$query = $this->db->order_by('time desc')->get('notes');
		return $query->result();
	}
	
	function addNote ($data)
	{
		$this->db->insert($data);
	}
}
?>

Celá app je na stiahnutie tu. Vopred ďakujem za pomoc!

Nahlásit jako SPAM
IP: 178.41.109.–
Autor programuje v programovacích jazykoch C++ a VB. Je tvorcom e-zinu http://www.programujte.6f.sk/, na ktorom sa nachádzaju info pre začínajúcich prog. a webdesignerov. Stránka zahrňuje aj fórum.
stif+1
Stálý člen
17. 7. 2012   #2
-
0
-

Žiadne ohlasy? :(

Nahlásit jako SPAM
IP: 178.41.109.–
Autor programuje v programovacích jazykoch C++ a VB. Je tvorcom e-zinu http://www.programujte.6f.sk/, na ktorom sa nachádzaju info pre začínajúcich prog. a webdesignerov. Stránka zahrňuje aj fórum.
stif+1
Stálý člen
17. 7. 2012   #3
-
0
-

mimochodom, som zistil kde by sa chyba mala vyskytovať. Je to v controllery Notes, konkrétne vo funkcii Add:

function add()
	{
		$this->load->library('form_validation');
		$this->form_validation->set_rules('text', 'Novy text', 'trim|required|xss_clean|htmlspecialchars');
		
		if ($this->form_validation->run())
		{
			$data = Array (
				'text' => $_POST['text'],
			);
			
			$this->notes_model->addNote('notes', $data);
			redirect('notes');
		}
		
		else
		{
				$data['notes'] = $this->notes_model->getNotes();
				$this->load->view('notes_view', $data);
		}
	}

Kde je chyba?

Nahlásit jako SPAM
IP: 178.41.109.–
Autor programuje v programovacích jazykoch C++ a VB. Je tvorcom e-zinu http://www.programujte.6f.sk/, na ktorom sa nachádzaju info pre začínajúcich prog. a webdesignerov. Stránka zahrňuje aj fórum.
stif+1
Stálý člen
18. 7. 2012   #4
-
0
-

už som to vyriešil, trebalo do notes_model pridať notes:

namiesto

function addNote ($data)
	{
		$this->db->insert($data);
	}
treba

function addNote ($data)
	{
		$this->db->insert('notes', $data);
	}

, ale mám ešte jeden problém, ak zadam text tak sa mi uloží do databázy, ale obsah databázy sa nezobrazí. ako na to?

Nahlásit jako SPAM
IP: 178.41.109.–
Autor programuje v programovacích jazykoch C++ a VB. Je tvorcom e-zinu http://www.programujte.6f.sk/, na ktorom sa nachádzaju info pre začínajúcich prog. a webdesignerov. Stránka zahrňuje aj fórum.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý