|
|
|
|
|
для: coloboc66
(28.12.2012 в 13:28)
| | я делала такое (похожее) только по запросам к базе, а не в XML. есть таблица клиентов, в ней - поле с
названием фирмы. название может быть на английском или на греческом, а выводить записи надо подряд -
сначала на А греческую, потом на А латинскую, потом на В греческую, потом на В латинскую. вот порядок,
в котором следует выводить названия, приведен в другой таблице - где перечислены все буквы обоих
алфавитов и каждой присвоен определенный порядок. потом, когда получена выборка из таблицы с фирмами,
она сортируется не по именам фирм, которые есть в этой таблице, а по тому порядку, который указан в
таблице "Сортировка". код привести не могу, он остался на домашнем ПК. как сортировать выборку по данным
из второй таблицы, можно найти в интернете. вам же все равно нужен не MySQL- запрос, а сортировка массива. | |
|
|
|
|
|
|
|
для: elenaki
(28.12.2012 в 13:18)
| | Не очень "врубаюсь" в то, что вы рекомендуете. Можете показать примерный код? | |
|
|
|
|
|
|
|
для: coloboc66
(28.12.2012 в 12:58)
| | тогда два надо - для обоих языков.
а если потом придется слово вставить между уже существующими id?
надо сортировать массив слов на основе алфавита - это надежнее. | |
|
|
|
|
|
|
|
для: elenaki
(28.12.2012 в 12:48)
| | Весьма туманно...
Может, ввести ещё один узел типа:
<word><id>0001</id><port>aco m</port><rus>сталь</rus></word>
|
И как-то связывать соответствия через этот узел (<id>)? | |
|
|
|
|
|
|
|
для: coloboc66
(28.12.2012 в 11:41)
| | когда у меня были в одной таблице греческие и английские слова и надо было их сортировать
"в перемешку", а не сначала все английские, а потом все греческие, как делалось автоматом,
я создала еще одну таблицу, которую назвала "сортировка" и в ней перечеслила все буквы
обоих алфавитов и их порядок в списке. а при запросах сортировала результат в соответствии
с этим порядком. | |
|
|
|
|
|
|
| Португальский словарь в файле dict.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<word><port>acesso m</port><rus>доступ</rus></word>
<word><port>acidente m</port><rus>происшествие, катастрофа</rus></word>
<word><port>aco m</port><rus>сталь</rus></word>
</root>
|
Разбираю его в файле dict.php:
<body>
<form method="get" action="#">
<select name="direction"><option value="port-rus">Португальско-русский</option><option value="rus-port">Русско-португальский</option></select><input type="submit" value="Получить"/>
</form>
<?php
$direction="port-rus";
if(isset($_GET['direction'])) {$direction=stripslashes($_GET['direction']);}
$url="dict.xml";
$word_arr=array();
$a=-1;
$dom = new DOMDocument;
$dom->load($url);
$items = $dom->getElementsByTagName('word');//$items - это объект DomNodeList-список узлов word
foreach ($items as $nodelist1)
{
$a=$a+1;
$nodelist2=$nodelist1->childNodes; //получаем список дочерних узлов каждого узла word
for($i=0;$i<$nodelist2->length;$i++)
{
if ($nodelist2->item($i)->nodeType!=1) continue;
if ($nodelist2->item($i)->nodeName=='port')$word_arr[$a]['port']=$nodelist2->item($i)->nodeValue;
if ($nodelist2->item($i)->nodeName=='rus')$word_arr[$a]['rus']=$nodelist2->item($i)->nodeValue;
}
if($direction=="port-rus") echo "<br/>".$word_arr[$a]['port']. '- '.$word_arr[$a]['rus'];
else echo "<br/>".$word_arr[$a]['rus']. '- '.$word_arr[$a]['port'];
}
?>
</body>
|
Всё получается.
Но не могу сообразить, как сделать сортировку по алфавиту в каждом из направлений перевода? То есть, чтобы при направлении русско-португальский слова выводились сверху вниз в русском алфавитном порядке, а при направлении португальско-русский - сверху вниз в португальском алфавитном порядке. Сейчас словарь dict.xml по умолчанию сделан в португальском алфавитном порядке.
Спасибо. | |
|
|
|
|