řazení desetinných čísel – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

řazení desetinných čísel – PHP – Fórum – Programujte.comřazení desetinných čísel – PHP – Fórum – Programujte.com

 

hrabosh
~ Anonymní uživatel
9 příspěvků
1. 6. 2016   #1
-
0
-

Zdravím, upravuji web postavený na opencartu a dodělávám pár řazení dle různých parametrů, ale nedaří se mi. Mám v mysql zapsané číselné hodnoty ve formátu float, většina jsou celá čísla, ale mám i pár desetinných čísel (konkrétně 0,10; 0,25; 0,70). PHP kód jsem se snažil začlenit podle stávajícího kódu řazení a téměř vše funguje, ale pořád se mi zobrazuje, že číslo 0,25 je údajně vyšší jak číslo 0,10, jinak celá čísla se řadí dobře. Nevíte, čím by to mohlo být? 

Pokud budete potřebovat nějaký kód, tak se ozvěte. Zatím přikládám jen část, která je upravená podle původního kódu.  

Děkuji

			$data['sorts'][] = array(
				'text'	=> $this->language->get('text_prostorftp_asc'),
				'value'	=> 'p.prostor_ftp-ASC',
				'href'	=> $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.prostor_ftp&order=ASC' . $url)
			);
Nahlásit jako SPAM
IP: 46.33.103.–
Kit+15
Guru
1. 6. 2016   #2
-
0
-

#1 hrabosh
Číslo 0,25 je vyšší než 0,10.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
hrabosh
~ Anonymní uživatel
9 příspěvků
1. 6. 2016   #3
-
0
-

#2 Kit
To je samozřejmě omyl, má tam být, že číslo 0,25 je nižší jak číslo 0,10. Omlouvám se. Ještě dodám, že je to řazení od nejnižšího po nejvyšší.

Nahlásit jako SPAM
IP: 46.33.103.–
chita0
Newbie
1. 6. 2016   #4
-
0
-

Číslo 0,25 je určitě vyšší než 0,10. 

0,25 > 0,10

-0,10 > -0,25

Nahlásit jako SPAM
IP: 77.104.198.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 6. 2016   #5
-
0
-

Udaje jsi v podstate neposkytl zadne. Kde nic neni... ani to kure nehrabe.

Je treba pridat cely kod na testovani, vstup, vystup, sql dotaz. Si to udelej treba nekde bokem minikod. Predvedu 

<?php
var_dump('0.25'>'0.1');
var_dump(0.25>0.1);
var_dump('0,25'>'0,1');
var_dump(0,25>0,1);
?>

boolean true
boolean true
boolean true
int 0
boolean true
int 1

var_dump(0,25>0,1); je chapano jako
var_dump(0, 25>0, 1); vypis integer 0, vypis 25>0 (coz je true), vypis integer 1

 Opacne znamenko vypise

boolean false
boolean false
boolean false
int 0
boolean false
int 1

Kdyz tam dam 0,10 nebo 0.10
 

boolean true
boolean true
boolean true
int 0
boolean true
int 10

boolean false
boolean false
boolean false
int 0
boolean false
int 10

Takze? Podle meho to funguje, chyba je asi jinde. Kde? No, presne v tom, co sis nechal pro sebe :)

 

$data['sorts'][] = array(
	'text'	=> $this->language->get('text_prostorftp_asc'),
	'value'	=> 'p.prostor_ftp-ASC',
	'href'	=> $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.prostor_ftp&order=ASC' . $url)
	);

pokud mas data, tri sloupce
text, value, href
aaa, 5, bbb
ccc, 1, ddd
a radi to podle sloupce 1, pak podle sloupce2, tak logicky aaa je mensi nez ccc

Nahlásit jako SPAM
IP: 2001:718:2601:26c:c191:bd...–
hrabosh
~ Anonymní uživatel
9 příspěvků
1. 6. 2016   #6
-
0
-

#5 peter
Aha, děkuji za konstruktivní příspěvek, už se do toho trochu dostávám, nejsem žádný expert.  Podle toho kódu na testování to opravdu funguje, takže bude chyba někde v kódu, který zajišťuje řazení.  Měl jsem pocit, že se to mohlo řadit, ještě podle nějakých id produktů (každá položka má své ID), takže se na to dneska podívám a zkusím něco najít. 

Jinak ten kód, co jsem vložil je akorát k tomu, aby člověk zvolil jaké chce řazení. Hodnoty, podle kterých se to má řadit jsou uloženy ve "value".

Nahlásit jako SPAM
IP: 46.33.103.–
hrabosh
~ Anonymní uživatel
9 příspěvků
1. 6. 2016   #7
-
0
-

#6 hrabosh
Edit: Tak jsem zkusil dát všem 3 produktům, u kterých řazení blblo stejné jméno a už se to řadí dobře, takže budu muset nějak vymyslet, aby se to neřadilo podle toho jména, ale jen čistě podle těch parametrů.

Nahlásit jako SPAM
IP: 46.33.103.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 6. 2016   #8
-
0
-

A jo, tak v tom sort by melo stacit prehodit, aby vzdy prvni bylo cislo a az pak ostatni, jako jmeno, link. A budes teda muset zjistit, jak se to policko jmenuje pro preklad, sql a odkaz. Pripadne vubec nedovolit zmenu razeni odkazem.

$data['sorts'][] = array(
	'text'	=> $this->language->get('text_CISLOPRODUKTU_asc'),
	'value'	=> 'p.CISLOPRODUKTU-ASC',
	'href'	=> $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.CISLOPRODUKTUr=ASC' . $url)
	);

$data['sorts'][] = array(
	'text'	=> $this->language->get('text_prostorftp_asc'),
	'value'	=> 'p.prostor_ftp-ASC',
	'href'	=> $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.prostor_ftp&order=ASC' . $url)
	);
Nahlásit jako SPAM
IP: 2001:718:2601:26c:c191:bd...–
hrabosh
~ Anonymní uživatel
9 příspěvků
1. 6. 2016   #9
-
0
-

#8 peter
Týjo, už jsem na to přišel! Chyba byla jinde v kódu. Já jsem na tom pracoval pár měsíců zpátky a proto jsem si moc nepamatoval, co jsem kam zapisoval, ale našel jsem část kódu, která se mi nějak nezdála, tak jsem ji zkusil odmazat a už to zatím funguje v pořádku.  Nicméně i tak děkuji za pomoc a rady!   

Nahlásit jako SPAM
IP: 46.33.103.–
fitor0
Duch
2. 10. 2017   #10
-
0
-

@ hrabosh

sory za offtopic, ale nedělal jsi číslicovou stupnici pro FM vysílač?

Potřeboval bych poradit s programem.

Dík

Nahlásit jako SPAM
IP: 185.51.248.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý