Autor Zpráva
Jcas
Profil *
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
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 *
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 *
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.

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