Default ve formuláři z databáze

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

Zdravím,
Potřebuju do inputu dostat jako výchozí hodnotu data z DB, zkoušel jsem to takto, ale do inputu se nic nenačte. Nemohl by mi někdo prosím poradit?

<?php
require_once "../settings.php";
require "nette.min.php";
use Nette\Forms\Form;

$form = new Form;
$form->setAction('addakt.php?addakt=3');
$form->setMethod('POST');
$form->setDefaults(array('title' =>$data1->title));

$form->addText('title', 'Nadpis:')
	->setRequired('Napište prosím nadpis.');

$form->addTextArea('text', 'Text:')
    ->getControlPrototype()->class("mceEditor");

$form->addSubmit('send', 'Upravit aktualitu.');

if ($_GET["addakt"] == 2) {
$data=mysql_query ("select  * from aktuality WHERE `id`=".intval($_GET['upravit'])."");
echo "<h2>Upravit aktualitu</h2>";
while ($data1= MySQL_Fetch_Array($data)) {
echo $form;
}
}
?>
Pavel Macháň
Člen | 282
+
0
-

dawe27 napsal(a):

Zdravím,
Potřebuju do inputu dostat jako výchozí hodnotu data z DB, zkoušel jsem to takto, ale do inputu se nic nenačte. Nemohl by mi někdo prosím poradit?

<?php
require_once "../settings.php";
require "nette.min.php";
use Nette\Forms\Form;

$form = new Form;
$form->setAction('addakt.php?addakt=3');
$form->setMethod('POST');
$form->setDefaults(array('title' =>$data1->title));

$form->addText('title', 'Nadpis:')
	->setRequired('Napište prosím nadpis.');

$form->addTextArea('text', 'Text:')
    ->getControlPrototype()->class("mceEditor");

$form->addSubmit('send', 'Upravit aktualitu.');

if ($_GET["addakt"] == 2) {
$data=mysql_query ("select  * from aktuality WHERE `id`=".intval($_GET['upravit'])."");
echo "<h2>Upravit aktualitu</h2>";
while ($data1= MySQL_Fetch_Array($data)) {
echo $form;
}
}
?>

Podívej se kde plníš data a kde je dostáváš z DB… to ti neřve notice, že $data1 nejsou definované?
Když už tak

if ($_GET["addakt"] == 2) {
	$data=mysql_query ("select  * from aktuality WHERE `id`=".intval($_GET['upravit'])."");
	echo "<h2>Upravit aktualitu</h2>";
	while ($data1= MySQL_Fetch_Array($data)) {
		$form->setDefaults(array('title' =>$data1->title));
		echo $form;
	}
}

Editoval EIFEL (17. 1. 2014 15:15)

dawe27
Člen | 8
+
0
-

Zkoušel jsem to ale pořád nic.. Nevím jestli mi tam něco nechybí, používam pouze minimalizovanou verzi nette a vše co tam mám je v tom kódu nahoře.
když tam přidám

if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }

vypíše mi to chybu: Error: Query was empty

Editoval dawe27 (17. 1. 2014 19:48)

dawe27
Člen | 8
+
0
-

Neporadil by mi někdo prosím jak to vyřešit, sám si s tím nevím rady..

Mesiah
Člen | 240
+
0
-

EIFEL tím chtěl říct, že konstrukce $data1->title nemůže fungovat, bo $data1 naplňuješ až ve while 13 řádků pod tím… :)

dawe27
Člen | 8
+
0
-

to jsem pochopil, pak jsem ten kod upravil jak psal EIFEL ale stále se nic nedělo.

if ($_GET["addakt"] == 2) {
    $data=mysql_query ("select  * from aktuality WHERE `id`=".intval($_GET['upravit'])."");
    echo "<h2>Upravit aktualitu</h2>";
    while ($data1= MySQL_Fetch_Array($data)) {
        $form->setDefaults(array('title' =>$data1->title));
        echo $form;
    }
}
Etch
Člen | 403
+
0
-

@dawe27

A opravdu máš to query dobře??

David Matějka
Moderator | 6445
+
0
-

husty, on stale nekdo pouziva mysql_* fce :)
radeji pouzi nette\database nebo aspon PDO

mysql_fetch_array vraci pole a ne objekt

Oli
Člen | 1215
+
0
-

@matej: Pred nette jsem nic jinyho nepouzival. A až těsně před nette jsem si napsal iterator abych to aspon nemusel prochazet ve while, ale ve foreachi.

dawe27
Člen | 8
+
0
-

matej21 napsal(a):

husty, on stale nekdo pouziva mysql_* fce :)
radeji pouzi nette\database nebo aspon PDO

mysql_fetch_array vraci pole a ne objekt

trochu jsem se podíval na to nette\database a PDO a raději bych použíl to PDO, jelikož nette zatím moc nerozumím. skusil jsem to takto ale na stránce se objeví akorat nadpis h2 jinak nic…

if ($_GET["addakt"] == 2) {
$upravit = $_GET['upravit'];
echo "<h2>Upravit aktualitu</h2>";
$res = $db->query('SELECT * FROM aktuality WHERE id=$upravit');
$row = $res->fetch(PDO::FETCH_ASSOC);
$form->setDefaults(array('title' =>$row->title));
    echo $form1;
}
Etch
Člen | 403
+
0
-
$form->setDefaults(array('title' =>$row->title));
    echo $form1;

Už jenom to echo o něčem svědčí.

EDIT:

$row = $res->fetch(PDO::FETCH_ASSOC);
$form->setDefaults(array('title' =>$row->title));

Navíc opět jak už ti psal @matej21 přistupuješ blbě k výsledku. $res->fetch(PDO::FETCH_ASSOC) ti vrátí asociativní pole a ne objekt. Takže

$row->title
změň na
$row['title']

Editoval Etch (29. 1. 2014 13:32)

dawe27
Člen | 8
+
0
-
$row->title
změň na
$row['title']

teť už mi to funguje, diky moc :))