SQL příkaz pro update tabulky user

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

Jsem úplný začátečník chci provést update tabulky user. Posílám část zdrojového programu. Nechodí mne SQL příkaz. Prosím o radu.

$form->setDefaults(array(
‚username‘ ⇒ $user->getIdentity()->username,
‚titul‘ ⇒ $user->getIdentity()->titul,
‚jmeno‘ ⇒ $user->getIdentity()->jmeno,
‚prijmeni‘ ⇒ $user->getIdentity()->prijmeni,
‚email‘ ⇒ $user->getIdentity()->email,
‚funkce‘ ⇒ $user->getIdentity()->funkce,
‚oddeleni‘ ⇒ $user->getIdentity()->oddeleni,
‚mobil‘ ⇒ $user->getIdentity()->mobil));

$form->addSubmit(‚set‘, ‚Uložit změny‘);
$form->onSuccess[] = callback($this, ‚editaceFormSubmitted‘);

return $form;
}

/**
* Zpracuje odeslaný formulář. Mění data uživatele.
* @param Nette\Application\UI\Form $form
*/
public function editaceFormSubmitted(Form $form)
{
$values = $form->getValues();
$user = $this->getUser();
try {

$this->context->where(‚id‘=>getId())
->update(array(‚jmeno‘=>$values->jmeno));

$this->flashMessage(‚Data byla změněna.‘, ‚success‘);
$this->redirect(‚UserEditace:‘);
} catch (NS\AuthenticationException $e) {
$form->addError(‚Zadaná data nejsou správné.‘);
 }

jtousek
Člen | 951
+
0
-

$this->context ⇒ $this->context->connection nebo $this->context->database, nevím přesně co je výchozí.

EDIT: Příště nezapomeň uvést, co to dělá („nechodí mi“ není dostatečné, ideální je klikatelný log z laděnky). Dále verzi PHP a Nette a na kód používat příslušné značky pro zvýraznění syntaxe.

Editoval jtousek (31. 5. 2012 20:08)

Karel Chramosil
Člen | 105
+
0
-

Nette Framework 2.0.3, PHP 5.3 Toto chyba z laděnky

syntax error, unexpected T_DOUBLE_ARROW search►

File: …\app\presenters\UserEditacePresenter.php Line: 66

57: /**
58: * Zpracuje odeslaný formulář. Mění data uživatele.
59: * @param Nette\Application\UI\Form $form
60: */
61: public function editaceFormSubmitted(Form $form)
62: {
63: $values = $form->getValues();
64: $user = $this->getUser();
65: try {
66: $this->context->database->createUsers()->where(‚id‘=>$user->id)
67: ->update(array(‚jmeno‘=>$values->jmeno));
68:
69: $this->flashMessage(‚Data byla změněna.‘, ‚success‘);
70: $this->redirect(‚UserEditace:‘);

jtousek
Člen | 951
+
0
-

Tuším, že by to mělo být takhle.

$this->context->database->createUsers()->find($user->id)

Karel Chramosil
Člen | 105
+
0
-

Děkuji za rady

příkaz

$this->context->database->table(‚user‘)
->update(array(‚jmeno‘=>$values->jmeno));

provede update ve všech řádcích tabulky
u příkazu laděnka hlásí že nezná syntaxi pro řádek where

$this->context->database->table(‚user‘)
->update(array(‚jmeno‘=>$values->jmeno))
->where(‚id‘=>$user->id);

jtousek
Člen | 951
+
0
-

Vždyť píšu že místo where máš použít find. A navíc ten find má být před updatem.

$this->context->database->table('user')->find($user->id)->update(array(‚jmeno‘=>$values->jmeno));

Karel Chramosil
Člen | 105
+
0
-

Děkuji moc za radu. Už vše funguje jak má. Akorát nevím jak funguje find($user->id) místo where.

jtousek
Člen | 951
+
0
-
bojovyletoun
Člen | 667
+
0
-

Prosím používej 3. tlačítko zprava. Takhle se kód nedá přečíst, ani zkopírovat do editoru (kvůli nahrazení uvozovek a šipek) a ani se nedá rovnou vložit, když si ho chci prohlídnout pomocí Citace (neboť před každý řádek vloží >)