Jednoduchá situace:

potřebujete setřídit vícerozměrné pole vrácené třeba z databáze podle zadaného sloupce. Použijeme array_multisort. Definice v manuálu k PHP je poměrně krkolomná, proto se pokusím o vlastní popis a jednoduchý příklad.

Funkce array_multisort seřadí prvky druhého pole podle prvků v prvním poli. Tedy pokud bude v prvním poli prvek přesunut na druhé místo, bez ohledu na obsah bude prvek ve druhém poli přesunut také na druhé místo.

 

$data['0']['name']= 'Google';
$data['0']['url'] = 'http://www.google.com';
$data['1']['name']= 'Internet Goodies Page';
$data['1']['url'] = 'http://goodies.euweb.cz';
$data['2']['name']= 'Full Web Building Tutorials';
$data['2']['url'] = 'http://www.w3schools.com';
$data['3']['name']= 'World Wide Web Consortium';
$data['3']['url'] = 'http://www.w3.org';

foreach ($data as $val) { 
  $sortarray[] = $val['name']; 
}

array_multisort($sortarray,$data);

print_r($data);

 

Funguje to asi takhle: Nejprve si připravíme pole, podle kterého budeme řadit tak, že vybereme pole s daným indexem (name) a to pak použjeme jako ‘řadící’. Má stejnou délku, pouze má jen jeden rozměr. Jako druhé, řazené pole, použijeme už existující $data.

Array_multisort má další nepovinné parametry:

  • SORT_REGULAR – Compare items normally
  • SORT_NUMERIC – Compare items numerically
  • SORT_STRING – Compare items as strings
  • SORT_ASC – Sort in ascending order
  • SORT_DESC – Sort in descending order

A zbytek si nastudujte sami.

Chystám převést jeden z mých (relativně) větších projektů z PHP a MySQL na WIN32 aplikaci a PostgreSQL.

Jsou tam poměrně složité JOINy z několika tabulek, dočasné tabulky a další zvěrstva. Proto jsem hledal něco, co by mi pomohlo tento přechod zvládnout co nejrychleji. Přitom jsem našel velmi pěkně zpacovaný tutoriál pro práci s databázemi. Stránky se nezaměřují pouze na jednu databázi, ale najdete zde nejčastěji používané funkce pro SQL Server, Oracle, MySQL, DB2, Mimer SQL, PostgreSQL a Access.

Líbí se mi možnost zapnout si verze dotazů pro jednotlivé databázové enginy a hlavně si své selekty můžete hned vyzkoušet.

Freeware utilita pro export MS ACCESS databáze do MySQL.

http://www.bullzip.com/products/msa2mys/info.php


Access to MySQL is a small program that will convert Microsoft Access Databases to MySQL.

  • Wizard interface.
  • Transfer data directly from one server to another.
  • Create a dump file.
  • Select tables to transfer.
  • Select fields to transfer.
  • Optional transfer of indexes.
  • Optional transfer of records.
  • Optional transfer of default values in field definitions.
  • Identifies and transfers auto number field types.
  • Command line interface.
  • Easy install, uninstall and upgrade.

Zkopírováno z nějaké diskuse. Ten text neni ani tak pro vas jak pro me. Tedy až to budu někdy potřebovat… tak to asi stejně najdu jinde ;-)

Standardne u vsech ClientDatasetu se ulozeni zmen do db provede pomoci metody ApplyUpdates. Metoda Post pouze ulozi zmeny do ClientDatasetu. Dalsi problem u IB (Firebird), na ktery jsem narazil, je v SQL prikazech mit jmena vsech db objektu velkymi pismeny. Jinak hazi nejakou chybu, ze nemuze najit zaznam nebo neco takoveho.
Provider je ti na nic, pokud pouzivas TIBClientDataSet, protoze ten uz ho ma v sobe zahrnutej. Je to takova kompilace tri komponent. IBDatasetu, Providera a ClientDatasetu. Takovy 3 v 1. Jinak bys musel pouzit IBDataset, Provider.Dataset na stavit na IBDataset a ClientDataset.ProviderName na Provider.
Jinak pokud vylozene nepotrebujes zadavat update prikazy, nech to na TIBClientDataSetu, aby data ulozil sam. Pokud ale mas select pres nekolik tabulek a vylozene musis nastavovat jen par hodnot v nekolika tabulkach, pak pouzij IBDataset, Providera a ClientDataset. Pak dalsi komponentu IBUpdateSQL, kterou nastavis do IBDataset.UpdateObject. Na ni uz pak muzes editovat tve update prikazy. Jeste ale nezapomen Provider.ResolveToDataset = true, jinak se to bude snazit stale ukladat Provider sam. Takhle mu reknes, at to posle do IBDatasetu a ten, protoze ma pripojenej IBUpdateSQL, to preda prave jemu a tedy i tvym prikazum.

Včera jsem si nebyl moc jistý se slovem “bryskní” (chybělo mi 5% do jistoty, že se to píše “briskní”) tak jsem to zkusil pohledal na webu. Celý článek

« novější článkydalší články »