Autor | Zpráva | ||
---|---|---|---|
Jcas Profil * |
#1 · Zasláno: 6. 10. 2012, 19:33:36 · Upravil/a: Jcas
Mám form - zatím jenom 2 pole. Při volbě upravit načte data z DB a vloží je do polí. OK
Změním data a chci, aby se změna uložila do DB. Výsledek - jedno pole uloží změnu a druhé ne. <?php if($_GET['stav']=='upravit'&&isset($_GET['id'])&&$_GET['id']==$_GET['kontr']&&$kontrola!=false) { $upravit = new Sprava($admin); $radek = mysql_fetch_array($upravit->vyber('*', 'vystavy', 'id', $_GET['id'])); if(isset($data)) { //$data = pole s hodnotami na přidání $data[sloupec]=hodnota. Naplní se při odeslání formuláře foreach ($data as $key => $value) { if($data[$key]!=$radek[$key]) { $upravit->zmen($_GET['id'], $key, $value); //parametry-řádek, sloupec, hodnota } } } } ?> foreach ($data as $key => $value) { echo $key.' '.$value.'<br />'; } if($data['nadpis']!=$radek['nadpis']) { echo $data['nadpis'].' a '.$radek['nadpis'].'nejsou rovny'; } else {'jsou rovny'}; výsledek testování: ZO 66464 datum 281012 jmeno 66464281012 nadpis Výstava verejna 0 Výstava a Zimní prodejní Výstavanejsou rovny datum jsem tou částí kodu změnil. text ze zimní výstavy na pouze 'výstava' nezněnil. public function zmen($radek, $sloupec, $hodnota) { #metoda na změnu dat $this->vloz('id', $radek); $this->vloz('sloupec', $sloupec); $this->vloz('hodnota', $hodnota); mysql_query($this->sql('zmenit')); } protected function sql($cinnost) { #metoda na vytvoření sql dotazu switch($cinnost) { case 'vybrat': $vse = $this->sloupec['co']=='*'?'*':'`'.$this->sloupec['co'].'`'; //pomocná $ kvůly `` $sql = "SELECT ".$vse." FROM `".$this->sloupec['odkud']."` WHERE `".$this->sloupec['a']."` = '".$this->sloupec['b']."'"; break; case 'zmenit': $sql = "UPDATE `vystavy` SET `".$this->sloupec['sloupec']."` = ".$this->sloupec['hodnota']." WHERE `id` = ".$this->sloupec['id']; break; ps. funkce sql není celá - aby někdo neřešil její ukončení. |
||
mimochodec Profil |
#2 · Zasláno: 6. 10. 2012, 19:50:31
Tomu tvému kódu rozumím jen dost málo, ale jestli
sloupec['hodnota'] je text, tak ti v tom druhém bloku kódu kolem něj chybí apostrofy.
|
||
Jcas Profil * |
#3 · Zasláno: 6. 10. 2012, 20:07:30
Máš na mysli sql dotaz? Hodnota pro buňku v ``
Zkusím. Má to být univerzál. Co udělá DB, když má mít v buňce číslo, je tak nastavená, a přijde do ní číslo, ovšem díky `` jako text? |
||
mimochodec Profil |
Jcas:
„Zkusím. Má to být univerzál.“ Jestli "univerzál" znamená "chci nakládat s čísly a řetězci stejně a nechám na databázi, ať si to přebere", tak to děláš špatně. I kdyby ti konkrétně to, na co se teď právě ptáš, fungovalo podle očekávání. Rozlišuj, kdy pracuješ s řetězcem a kdy s číslem. |
||
Jcas Profil * |
#5 · Zasláno: 6. 10. 2012, 20:23:27
Samozřejmě, že se to snažím rozlišovat. Jde o to, že
funkce sql('zmenit') Má být univerzální. Zavolá se pro změnu datumu=změní datum. Zavolá se pro změnu textu=změní text.
Takže otestovat co do ní přišlo a dvě varianty sql dotazu? |
||
mimochodec Profil |
#6 · Zasláno: 6. 10. 2012, 20:34:09
Jcas:
„Takže otestovat co do ní přišlo a dvě varianty sql dotazu?“ Ano. Jen těch variant bude možná víc. Už proto, že jak sám píšeš, může jít i o datum. |
||
Jcas Profil * |
#7 · Zasláno: 6. 10. 2012, 21:06:25
děkuju
|
||
Časová prodleva: 12 let
|
0