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

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: