[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: двуязычный сайт
pvst
Нужна ваша помощь. Создаю двуязычный сайт. Имею меню с определенными неизменными статьями, которые есть в то же время ссилками. Пользователь нажимаючи по той или другой ссилци получает настоящую определенную статью по id. как мне сделать, чтобы выводилась статья из базы на другом языке
вот код моей функцииКод PHP

	<?php
mysql_connect('localhost','root','');
mysql_select_db('la la la');
$NewsId = isset($_GET['id']) ? (integer)$_GET['id'] : 0;
$result=mysql_query('SELECT * FROM `articles` WHERE `id`=' . $NewsId)
or die('Invalid query: ' . mysql_error());
while($row = mysql_fetch_assoc($result))
{ echo $row['title'].$row['full_text'];;
}
mysql_close();
?>
Lumix
Держать в базе статью на всех языках на которых хочешь вывести,
предварительно грамотно перевести статью на желаемый язык.
pvst
так обычно но я не проце. как мне из базы вывести в то же время по id и за языком! благодарю за помощь!
Lumix
Цитата (pvst @ 21.06.2013 - 01:17)
так обычно но я не проце. как мне из базы вывести в то же время по id и за языком! благодарю за помощь!

чаво ? сам понял что сказал ?
Valick
pvst, вам просто нужно правильно организовать структуру БД.
Варианты статьи на разных языках должны быть связаны ключом (идентификатор статьи).
таблица должна содержать
id - идентификатор строки (автоинкремент)
idt - идентификатор статьи
lang - язык статьи
title - заголовок статьи
text - текст статьи
__
самое сложное это сделать одинаковый идентификатор статьи для всех вариантов перевода
для этого надо отдельную таблицу где
idt- идентификатор статьи (он же идентификатор строки автоинкремент)
title - заголовок статьи

_____________
Стимулятор ~yoomoney - 41001303250491
Undertaker
Valick

Цитата
самое сложное это сделать одинаковый идентификатор статьи для всех вариантов перевода

Зачем отдельную таблицу? Статей ведь будет не много, можно хранить это в одной таблице.
Самый простой на мой взгляд вариант, это хранить язык юзера в базе (если есть регистрация), если регистрации нет то необходимы "долгие" куки, статью выводить как раз по "значению" языка в базе или куках. Если я конечно правильно понял вопрос

_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
kristall
Сделать составной первичный ключ id+lang. id у всех языковых вариантов одной статьи одинаковый, а в сочетании с языком получается уникальным.

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
sergeiss
Можно сделать поля в таблице такие: id, article_ru, article_en. То есть, в каждой записи будет хранится и русская, и англйцская версии. При формировании запроса указыааешь нужное поле и даешь ему алиас, независимый от языка. Тогда код обработки выборки уже не будет зависеть от языка.
Естественно, что такой подход хорош только тогда, когда набор языков четко определен. 2, 3 или больше - любое количество, но известное с самого начала.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
sergeiss, я как раз хотел уйти от определенного количества заранее известных языков, разные статьи могут быть на разных языках и не зависить друг от друга.
Undertaker, можно и без отдельной таблицы, но вам придется генерить уникальный идентификатор для статьи и её переводов, а по мне так лучше пусть этим занимается СУРБД своим автоинкрементом.
Сложность именно в том, что бы не привязывать оригинал статьи к определенному языку.
kristall, составной первичный ключ тоже можно, но пока на пальцах рано говорить как будет оптимальнее, это уже зависит от запросов, поэтому я и оставил обычный ключ. Опять же от доп таблицы или генерации идентификатора своими силами составной ключ вас не избавит.

_____________
Стимулятор ~yoomoney - 41001303250491
Valick
pvst, почему такие сложные советы для решения казалось бы простой задачи?
Да для того чтобы вы изначально не набрасывали себе петлю на шею, СУРБД не упустит возможности затянуть её потуже smile.gif


_____________
Стимулятор ~yoomoney - 41001303250491
rooor
1 таблица, язык -> id_lang | language
2 таблица, статьи -> id | id_lang | text

выбор статей по id_lang, зачем ещё что-то сочинять?
pvst
всех благодарю за советы, пора уже экспериментировать
Valick
pvst, эксперементировать это хороошо, но попробуйте сначала расписать алгоритм на бумаге. Допустим у вас есть две кнопки, "добавить статью" и "добавить перевод". Распишите по пунктам дальнейшие действия.
Добавление статьи.
1) Нажимаем на кнопку "добавить статью" и отправляем переменную на сервер.
2) Принимаем GET переменную означающую добавление статьи на сервере и возвращаем клиенту форму добавления новой статьи.
3) Заполняем форму и отправляем POST данные на сервер.
4) ...
___
Цитата
зачем ещё что-то сочинять?

может для того чтобы все работало?

_____________
Стимулятор ~yoomoney - 41001303250491
rooor
Цитата
для того чтобы все работало?

а что может не работать в моём варианте?
Valick
rooor, а покажите запрос на выборку статьи и всех её переводов из вашей таблицы.


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.