Diskuze: cisla objednavek
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Není to zbytečné? Přece ID je taky unikátní a nemůže se opakovat.
Ale pokud ti jde aby to vypadalo pěkně "32548" a ne "1", "2", atd..
Tak můžeš např. č.objednavky dělát takto:
$id = "id z DB"
$cislo = 54681 // libovolné číslo
$objednavka = $cislo . $id
tím pádem se ti č.objednávky nebude opakovat. Jelikož id je vždy jedinečné.
PS: Číslo může být např. číslo dané sekce v eshopu
Takže říkáte, že si to tímto zbytečně komplikuji? Šlo mi o to, že by se v tom čísle potom dalo dohledat danou objednávku lépe... tj. když bude mít někdo na třeba faktuře 20150204+id obj. vědělo by se, že se jedná o objednávku z 4.2.2015 + id... Nyní když mám dvě tabulky s objednávkama pro registrované a neregistrované pak by to mohlo dělat guláš ne? leda, že bych podle Vašeho kódu nastavil manuálně jiné číslo třeba 3888 na nereg. uživatele a 4888 na reg uživatele...?
Snažíš se udělat to co už je v základu hotové
Přece když v tabulce budeš vyhledávat podle ID a podle toho čísla
objednávky tak dostaneš stejné výsledky
Mě se naopak líbí tvoje myšlenka datum+jedinečné id. Má to logiku, je to přehledné a jedinečnost čísla objednávky zůstane zachována. Ale to je jen můj osobní názor. To id se každý den začíná načítat od "1" nebo to stále pokračuje v inkrementaci? Podle mě ale není nutné mít zvlášť část datumu a id. spojil bych to a uložil do jednoho sloupce jako id_objednavky
tak jsem nakonec přistoupil, jelikož jsem ještě lama k tomu rychlešímu
tvému řešení.. Nicméně se mi tedy do sloupce cislo_objednavky ulozi toto
1000id_objednavky_bez_registrace
skript
$id = "id_objednavky_bez_registrace" ;
$cislo = 1000; // libovolné číslo
$cislo_objednavky = $cislo . $id;
if (mysql_query($sql)) {
$sql="INSERT INTO e_objednavky_bez_registrace (nazev,pocet,cena,jmeno,prijmeni,ulice,mesto,psc,email,telefon,datum,id_produktu,cislo_objednavky)VALUES('$nazev','1','$cena','$jmeno','$prijmeni','$ulice','$mesto','$psc','$email','$telefon',NOW(), '$id_produktu', '$cislo_objednavky')";
logicky usuzuji, že to nedokázalo přečíst dané id?
reakce k dalšímu příspěvku od sahlepik:
id objednávky je primary klic a autoincrement, takže to od 1 každý den
nepokračuje.. takže tvá myšlenka spočívá v přiřetězení sloupce datumu
a id... ale nevím jak to udělat aby se jednou ten datum uložil ve formátu
2015-02-04 a podruhé aby se uložil 20150204 a id..
Datum ve formátu xxxx-xx-xx se dá rozsekat PHP funkcí explode(), kdy dělícím znakem bude pomlčka a pak ty díly, které vzniknou, jen spojíš + k němu připojíš číselné id.
$id = "id_objednavky_bez_registrace" ;
$cislo = 1000; // libovolné číslo
$cislo_objednavky = $cislo . $id;
Tohle je zajímavý kód, k čemu tam je ten dlouhý textový řetězec?
myslíš tím řádek
$id = "id_objednavky_bez_registrace" ;
? že? Už jsem si to uvědomil a napsal místo toho
$id = $_GET["id_objednavky_bez_registrace"] ;
nyní mi to v DB ukáže pouze hodnotu 1000 ALE nepřičte tam id objednavky
A co do sloupců id_objednavky vkládat normálně ID, jak jde za sebou a při výstupu to spojit s datem pomocí nějaké pomlčky? Bylo by to efektivní...
Nevím jestli jsem porozuměl dobře, ale id_objednavky je klasicke id s autoincrementem.
A co třeba jako id použít za sebou napsaný datum a aktuální čas? Např.:
$id = date("YnjHis");
Tohle bude jistě jedinečné číslo a stále budeš schopen z čísla
objednávky vyčíst, kdy byla uskutečněna a dokonce v kolik hodin, minut a
sekund
Nevím co na to napsat.. Málem mi ukápla i krokodýlí slza ... Moc děkuji... Nejen tobě ale všem co se účastnili...
měl bych ještě konečný dotaz. Když mám nastaveno na sloupci cislo_obj varchar(100) a ukládám tam čísla takto velká 2015242245582000 nebude to v budoucnu dělat problém, že nebude stačit velikost znaků na tom sloupci.. chápu to dobře že teď to má jelikož je to 16cticiferné číslo varchar(16) ?
tak za prvé pokiaľ tam nebudeš mať iné znaky ako čísla tak by som to nastavil na int, poprípade bigint. Taktiež kvôli duplicite údajov by som stĺpec číslo objednávky úplne vynechal, pretože mal by si mať stĺpec date a taktiež ID. A keďže tento stĺpec je zložených z týchto dvoch tak zbytočne budeš držať v DB údaje, čiže zbytočnosť. Predstav si to, že by si mal stĺpec Meno potom ďalší Priezvisko a potom stĺpec celé meno(kde by bolo uložené meno aj priezvisko) ... aká by bola pointa tohto stĺpca ?
Každá číslice se v případě VARCHAR bere jako jeden znak, ID objednávky totiž ukládáš do databáze jako textový řetězec s proměnlivým počtem znaků.
nevim presne na co to potrebujes ale cislo objednavky se obvykle pouziva jako
variabilni symbol ten muze mit maximalne 10 cislic dobrym zvykem je na zacatku
myt 2 mebo 4 znamky urcujici rok a dale nasleduje vetsinou poradove cislo
objednavky toho roku. Obcas se jeste rozlisuje treba stredisko, pridava se jeste
treba mesic.
YYYY00000n
YY0000000n
YYMM00000n
YY0100000n
Zobrazeno 17 zpráv z 17.