Autor Zpráva
nethor
Profil
Ahoj,
v cyklu přiřazuji do objektu hodnoty, požívám zápis
$foto =  "foto".$i ;  $user_db->$foto = "text";

neexistuje nějaký elegantnější zápis? zkoušel jsem
$user_db->foto$i = "text";
$user_db->"foto".$i = "text";

Leč, to nejde.
larryx
Profil
použi pole...
$user_db->$foto[$i]="text";
Kcko
Profil
nebo nový objekt, ale to co používáš skutečně ne.
fajzen
Profil
nethor:
takto to funguje:
$user_db->{"foto" . $i} = "text";

ale lepšie bude to pole... aj keď nie tak, ako píše larryx, ale
$user_db->foto[$i] = "text";
nethor
Profil
fajzen:
Díky za originální řešení, to mě nenapadlo.
(U larryxe to byl asi jen překlep.)
Nakonec jsem to přehodil vše do polí.

Původně jsem chtěl elegantně vyřešit zápis do databáze, kde jsou sloupce pojmenovány foto0,foto1,...

Takhle by to šlo.
DoubleThink
Profil *
nethor:
Původně jsem chtěl elegantně vyřešit zápis do databáze, kde jsou sloupce pojmenovány foto0,foto1
Prakticky každá tabulka která používá čísla v názvech sloupců je špatně navržena.
nethor
Profil
DoubleThink:
Tož tedy, jak na to správně?
Mám tabulku se z božím, a ke každému zboží může být max 5 foto (do foto1, foto2,... vkládám URL).
Řešit to přes propojené tabulky mi připadá jako zbytečná komplikace.
CREATE TABLE `zbozi` (
  `id` int(11) NOT NULL auto_increment,
  `id_prodejce` int(11) NOT NULL,
  `nadpis` text character set utf8 collate utf8_czech_ci,
  `popis` text character set utf8 collate utf8_czech_ci,
  `foto0` text character set utf8 collate utf8_czech_ci,
  `foto1` text character set utf8 collate utf8_czech_ci,
  `foto2` text character set utf8 collate utf8_czech_ci,
  `foto3` text character set utf8 collate utf8_czech_ci,
  `foto4` text character set utf8 collate utf8_czech_ci,
  `cena_prodejce` int(11) default '0',
  .
  ......
  .
  `zobrazit` int(1) NOT NULL default '1',
  `time_vlozeni` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
Keeehi
Profil
nethor:
Řešit to přes propojené tabulky mi připadá jako zbytečná komplikace.
Není to komplikace ale správné řešení.

Datový typ TEXT pro ty sloupce foto0-5 se mi zdá dosti podivný. I sloupce time_vlozeni má divný datový typ. Proč to není TIME nebo DATETIME?
larryx
Profil
ano pomylil som sa, ries tu tabulku tak ze jeden stlpec foto a vnom vsetky linky na fotky oddelene napr. Bodkociarkou ; a pri vypise to rozdel cez explode, druha moznost je dalsia tabulka
Keeehi
Profil
larryx:
jeden stlpec foto a vnom vsetky linky na fotky oddelene napr. Bodkociarkou ; a pri vypise to rozdel cez explode
Také špatné řešení.
nethor
Profil
Keeehi:
Proč to není TIME nebo DATETIME?
Protože se mi s tím daleko pépe pracuje. Do sloupce time_vlozeni vkládám time();
Ale možná s tím jen neumím zacházet. Např. jsem nenašel žádnou fci,
která by formát 1000-01-01 00:00:00 převedla na integer , který vrací time();
(opačná fce k date();)

Datový typ TEXT pro ty sloupce foto0-5 se mi zdá dosti podivný
A jaký typ bys použil pro zápis URL?
__construct
Profil
nethor:
DoubleThink narážal na to, že porušuješ tzv. „1. normálnu formu
larryx ty by si si to mal tiež prečítať než zase začneš niekomu radiť ako v MySQL navrhovať db

jsem nenašel žádnou fci,
která by formát 1000-01-01 00:00:00 převedla na integer , který vrací time();
A čo takto priamo MySQL funkcia UNIX_TIMESTAMP();

A jaký typ bys použil pro zápis URL?
Buď VARCHAR alebo keď už potrebuješ ukladať dlhý string tak TINYTEXTTEXT je moc dlhý - naozaj potrebujše ukladať taký dlhý reťazec?
Už sme ale OT - toto by malo patriť do inej sekcie…

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0