Nefunguje ajaxové odesílání – formulář se chová divně

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tomasnikl
Člen | 137
+
0
-

Ahoj,

mam takovy zvlastni problem. Potrebuji formular odeslat ajaxem ale chova se mi to ponekud zvlastne.

Poku formular v sablone vykreslim takto:

{control editForm}

a odeslu jej, tak vse probehne spravne, pokud ale formular v sablone vykresluji takto:

{form editForm}
	<table>
		<tr><td>{label name /}</td><td>{input name}</td></tr>
		<!-- dalsi inputy -->
		<tr><td>Uložit<td>{input submit}</td></tr>
	</table>
{/form}

formular odeslu a kouknu do konzole zda mi server vrati kod 200, tak nikoliv. Vraci se mi 500 (chyba servru) a v logu pote vidim toto:
http://www.ulozto.cz/…762d546-html

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1' at line 6
//a cervene mam vyznacen tento radek:
843:    DibiDriverException(mysql_error($this->connection),mysql_errno($this->connection),$sql);}elseif(is_resource($res)){return$this->createResultDriver($res);}}function

Pokud ajaxove odesilani vypnu uplne, tak se mi formular odesla at je v sablone vykreslen jakymkoliv zpusobem. Moc teda nechapu, proc se to chova takto. Nenapada vas neco?

newPOPE
Člen | 648
+
0
-

this is your problem

<?php
"
			SELECT
				*
			FROM
				`product`
			WHERE
				`id` = 1, 1
			" (67)
?>

rozkliknuty prvy riadok v callStacku ;-)

Editoval newPOPE (30. 9. 2011 14:11)

tomasnikl
Člen | 137
+
0
-

tomu teda moc nerozumim, jakto ze mi problem nastava jen v pripade, ze formular je vypisovan mezi {form} {/form}?

Na dane strance je nutne ID jako parametr ?id=xxxx, ktere mi pri odeslani formulare vzdy zmizelo, a tak jsem nastavil id jako persistentni… a pote toto id predavam modelu, konkretne:

	// toto je ten problemovy kus kodu nejspise
	public static function getProductById($productId)
	{
		return dibi::fetch('
			SELECT
				*
			FROM
				[product]
			WHERE
				[id] = %i
			', $productId);
	}

v presenteru si naplnuji promenou temito datz takto:

// zde je potreba prave ID z url
$product = Products::getProductById($this->params['id']);

nechapu tedy par veci, jakto, ze kdyz vykreslim formular jako {control editForm} tak mi to funguje a kdyz mezi form a /form tak ne. A zadruhe, jakto, ze to hazi chybu pri vyberu dat z databaze, kdyz to vypada, ze dane ID se preda (a zaznam s ID 1 existuje).

tomasnikl
Člen | 137
+
0
-

tak jsem na to prisel… chyba byla v tom, ze ve formulari mam skryte inputy.. a ty jsem v sablone vypisoval take.. ovsem nette je vypise automaticky, takze vpodstate dochazelo k duplicitam inputu ve formulari a proto ta chyba