Autor | Zpráva | ||
---|---|---|---|
Jcas Profil * |
#1 · Zasláno: 23. 10. 2012, 20:33:46
Mám menší problém a nějak nevím, co s tím a jak na to, tak chci poprosit o radu.
www.zocschmoravskebranice.eu/vystavy/prihlasky/katalog.php 0.1 Český červený S-4 3-2 / 64-17 220 Petr Soldán 1.0 Český červený S-4 3-2 / 64-15 220 Petr Soldán 0.1 Český červený S-4 3-2 / 64-18 220 Petr Soldán 0.1 Český červený S-4 3-2 / 64-19 220 Petr Soldán Tady by měl být samec (1.0) první. Dle tetování(64-15) má samec vždy nižší číslo, ale problém je, že tetování není vždy pouze číslo. 1.0 Český strakáč černá C 10-1 / 43-K 0 Jiří Cásek 1,0 Český strakáč černý C 4-2 / 64-23 0 Alice Hytychová 1,0 Český strakáč černý C 9-1 / 39-K 0 Alice Hytychová 1.0 Český strakáč černý C 2-2 / 8-K 0 Jiří Cásek Další chyba, kdy by měl být chovatel u sebe 1.0 Moravský modrý S-3 3-2 / 64-4 440 Petr Soldán 1.0 Moravský modrý S-3 3-2 / 64-5 440 Petr Soldán 0.1 Moravský modrý S-3 3-2 / 64-9 440 Petr Soldán Tady to je dobře. Jakým způsobem se seřazuje varchar? nevíte co stím? if(!isset($_GET['zobrazit'])) { //zobrzeni všech přihlášek $sql = "SELECT `".$tabulka."`.*, `uzivatele`.`user`, `uzivatele`.`jmeno`, `uzivatele`.`prijmeni` FROM `".$tabulka."` LEFT JOIN `uzivatele` ON `".$tabulka."`.`uzivatel` = `uzivatele`.`user`"; // vytahni data z DB if (!isset($_GET['seradit'])||$_GET['seradit']=='animal') {$sql.=" ORDER BY `".$tabulka."`.`zvire`, `".$tabulka."`.`plemeno`, `".$tabulka."`.`barva`, `".$tabulka."`.`uzivatel`, `".$tabulka."`.`kolekce`, `".$tabulka."`.`tetovani`, `".$tabulka."`.`pohlavi` DESC"; //zákl. tridení } else {$sql.=" ORDER BY `".$tabulka."`.`uzivatel`, `".$tabulka."`.`zvire` DESC, `".$tabulka."`.`plemeno`, `".$tabulka."`.`barva`, `".$tabulka."`.`kolekce`, `".$tabulka."`.`tetovani`, `".$tabulka."`.`pohlavi` DESC"; } $vypis = mysql_query($sql); |
||
Tori Profil |
#2 · Zasláno: 23. 10. 2012, 21:13:29
Jakým způsobem mají být seřazené tyto hodnoty:
43-K, 64-23, 39-K, 8-K ? Takto? 8-K, 39-K, 43-K, 64-23
Asi bych přidala další sloupeček, který bude sloužit jen pro správné řazení. Hodnoty do něj si můžete před vložením nového záznamu vytvořit v PHP nějakou funkcí podle toho, co se má počítat (např.ponechat jen čísla a písmena, nebo jen čísla, nevím). Podle této části S-4 3-2 řadit nepotřebujete?
|
||
Jcas Profil * |
#3 · Zasláno: 23. 10. 2012, 21:21:52 · Upravil/a: Jcas
No, pokud není kolekce, tak je to jednoduché. Plemeno, barva, chovatel, samci a samice
Problém je, že když je kolekce (S4, S3, MR, J), tak potřebuji, aby ty zvířata byli u sebe popořadě. např. S4 jsou 4 sourozenci, kdy samci mají vždy menší číslo. 1.0 2-2 / 64-15 1.0 2-2 / 64-16 (ale ve vrhu mohlo být klidně 8mladých) 0.1 2-2 / 64-17 0.1 2-2 / 64-18 A když to tedy přesunem na téma php. Funkce, nebo metoda, která dokáže vrátit poslední celé číslo v řetězci? 2-2 / S-2354 4-5 54-18 1 2 / 54-K |
||
Tori Profil |
Aha, tak v tom případě bych oddělila do samostatných tabulek:
- plemena, - barvy (+ nějaké jejich kódy), - chovatele - skupiny zvířat (= vrhy, kolekce. Klidně by to mohl být i další sloupec v tabulce zvířat, pokud budete z číselníku přidělovat unikátní ID kolekce a označovat jako samostatnou kolekci i pokud ji bude tvořit jen jedno zvíře). - pohlaví zvířete už v samostatném sloupečku máte. A pak bych to řadila podle hodnot z těch připojených tabulek. Jestli mají ta složená identifikační čísla nějakou definovanou podobu, tak by možná šlo parsovat v PHP, že byste nemusel u každého zvířete vybírat z roletky plemeno atd., ale jen zadal číslo (ale nejdřív by musely být v DB uložené všechny možné hodnoty barev, plemen, chovatelů, aby se to správně propojilo). Snad ještě někdo jiný poradí lépe. „Funkce, nebo metoda, která dokáže vrátit poslední celé číslo v řetězci?“ preg_match('~^.*\D+(\d+)\D*$~', '2-2 / S-2354', $m); echo $m[1]; // vypíše "2354" |
||
Jcas Profil * |
#5 · Zasláno: 24. 10. 2012, 10:34:03
Děkuju
Já zátím vyzkouším přidat sloupec, do kterého dám jako číslo to co vrátí preg_match a podle toho to zkusit poskládat. Uvidíme, co mi to udělá v praxi. |
||
Časová prodleva: 11 let
|
0