Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сделать словарь с изменяющимся направлением перевода и сортировкой по алфавиту...

Сообщения:  [1-6] 

 
 автор: elenaki   (28.12.2012 в 13:43)   письмо автору
 
   для: coloboc66   (28.12.2012 в 13:28)
 

я делала такое (похожее) только по запросам к базе, а не в XML. есть таблица клиентов, в ней - поле с
названием фирмы. название может быть на английском или на греческом, а выводить записи надо подряд -
сначала на А греческую, потом на А латинскую, потом на В греческую, потом на В латинскую. вот порядок,
в котором следует выводить названия, приведен в другой таблице - где перечислены все буквы обоих
алфавитов и каждой присвоен определенный порядок. потом, когда получена выборка из таблицы с фирмами,
она сортируется не по именам фирм, которые есть в этой таблице, а по тому порядку, который указан в
таблице "Сортировка". код привести не могу, он остался на домашнем ПК. как сортировать выборку по данным
из второй таблицы, можно найти в интернете. вам же все равно нужен не MySQL- запрос, а сортировка массива.

  Ответить  
 
 автор: coloboc66   (28.12.2012 в 13:28)   письмо автору
 
   для: elenaki   (28.12.2012 в 13:18)
 

Не очень "врубаюсь" в то, что вы рекомендуете. Можете показать примерный код?

  Ответить  
 
 автор: elenaki   (28.12.2012 в 13:18)   письмо автору
 
   для: coloboc66   (28.12.2012 в 12:58)
 

тогда два надо - для обоих языков.

а если потом придется слово вставить между уже существующими id?
надо сортировать массив слов на основе алфавита - это надежнее.

  Ответить  
 
 автор: coloboc66   (28.12.2012 в 12:58)   письмо автору
 
   для: elenaki   (28.12.2012 в 12:48)
 

Весьма туманно...
Может, ввести ещё один узел типа:
<word><id>0001</id><port>aco m</port><rus>сталь</rus></word>

И как-то связывать соответствия через этот узел (<id>)?

  Ответить  
 
 автор: elenaki   (28.12.2012 в 12:48)   письмо автору
 
   для: coloboc66   (28.12.2012 в 11:41)
 

когда у меня были в одной таблице греческие и английские слова и надо было их сортировать
"в перемешку", а не сначала все английские, а потом все греческие, как делалось автоматом,
я создала еще одну таблицу, которую назвала "сортировка" и в ней перечеслила все буквы
обоих алфавитов и их порядок в списке. а при запросах сортировала результат в соответствии
с этим порядком.

  Ответить  
 
 автор: 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 по умолчанию сделан в португальском алфавитном порядке.
Спасибо.

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования