Autor | Zpráva | ||
---|---|---|---|
Lokutus7323 Profil * |
#1 · Zasláno: 27. 7. 2012, 18:07:52 · Upravil/a: Lokutus7323
Dobrý den,
mám problém. Tahám data z DBF databáze pomocí PHP a dle této databáze hledám v eshopu produkty, za určitých podmínek porovnám a eventuelně produkt smažu z MySQL. Jenže nastal problém. Řekněme, že mám v databázi v kolonce "kod_zbozi" u jednoho produktu hodnotu "123456 CERNE" a v dbf mám v jiné kolonce to samé, také "123456 CERNE". Když obě tyto hodnoty přehraju do proměnné a dám porovna if ($val1 == $val2), podmínka splněna není a to i přesto, že řetězce jsou stejné. Když si oba nechám vedle sebe vypsat přes echo jsou vizuelně totožné (žádné skryté mezery nebo tak). Původně jsem chtěl hodnotu z DBF dosazovat přímo do dotazu do databáze, ale samozřejmě, že přes PHP dotaz nefungoval. opět jsem si SQL dotaz vytiskl přes echo na obrazovku, CTRL-C -> CTRL-V do phpmyadmin a dotaz funguje. Tak už nevím co dlěám špatně. Problém s kódováním by to být neměl, jelikož se edná o data bez deiakritiky. Děkuji za rady Když dám z obou řetězců vygenerovat MD5 hashe, tak jsou rozdílné, takže už vidím, že asi bude chyba v k´dování nebo v něčem takovym. Ovšem jak to opravit? |
||
Keeehi Profil |
#2 · Zasláno: 27. 7. 2012, 18:28:33
Lokutus7323:
Nejdřív zkuste var_dump($promenna) , jestli nebudete chytřejší.
Když nic nepomůže, tak toto vypíše ASCII hodnoty jednotlivých znaků. Tipuji to na tu mezeru. normální mezera = 32, tvrdá mezera = 160 for ( $i = 0 ; $i < strlen($promenna) ; $i++ ) { echo ord($promenna[$i])."," } |
||
Lokutus7323 Profil * |
#3 · Zasláno: 27. 7. 2012, 18:46:52
Zkusil jsem oboje. Cyklus for se zasekl, nicméně var_dump vyhodil pár pěkných informací . První řádek jsou data z dbf, 2řádek z mysql.
string(20) "15110 CERNE" string(11) "15110 CERNE" No já jsem asi blbec, ale nepřijde mi, že by 15110 CERNE bylo 20 znaků. Že by kódování? |
||
Keeehi Profil |
Lokutus7323:
Tak tam do toho cyklu u dat z dbf nacpi na tvrdo 20. Teď to vypadá, že jsou tam někde znaky, které se nevypisují. Bude potřeba zjistit kde a pak se jich zbavit. Případně se pokuste uložit ty data do souboru file_get_contents("soubor.txt",$data_z_dbf); a ten prozkoumejte nějakým hexaeditorem nebo ho někam nahrajte a já se na to podívám.
|
||
Lokutus7323 Profil * |
#5 · Zasláno: 27. 7. 2012, 20:12:43
Děkuji za rady. Už jsem to vyřešil. Jelikož jsem kód 15265 CERNA skladal ze dvou proměných z DBF chop($zaznam["CISLO"]." ".$zaznam["BARVA"]), tak stačilo poupravit na chop(chop($zaznam["CISLO"])." ".chop($zaznam["BARVA"])) a problém byl vyřešen.
PS: To první chop() tam mám z toho důvodu, když je pole $zaznam["BARVA"] prazdne,aby nevzniklo např: "15265 ". Děkuji za rady |
||
Časová prodleva: 12 let
|
0