Придумал себе задачку а решить не могу.

proWoke

Новичок
Придумал себе задачку а решить не могу.

В общем написать в хтмл форму слово, нажать на кнопку и надо перевести это слово в транслит и записать в файл, а потом обратно вернуть в хтмл форму.
Вот хтмл файл:
<html>
<head>
<title>Opana</title>
<body>
<form action="script.php" method="POST">
<input type = "text" name="text" size="40">
<input type = "submit" value = "GO!">
</form>
</body>
</html>
Ну тут всё понятно, тут вопросов нету.
а вот пхп:

<?php
$namefile = "perevod.txt";
if (file_exists($namefile))
{$file = fopen($namefile, "a");
} else {
$file = fopen($namefile, "w");
$text= $_POST['text'];
$trans = tratsliterate ($text);
function transliterate($st)
{
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
"abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
)
);
return $st;
fwrite($file);
fclose($file);
header("Location:knopka.html");
?>



Я впринципе понимаю, что где то в коде грубейшая ошибка да и сама реализация глупая, но пока только так умею:(. В общем подскажите, пожалуйста.
 

Фанат

oncle terrible
Команда форума
я в таких случаях всегда делю задачу на части.
и разбираюсь по очереди с каждой
 

proWoke

Новичок
Ну я её впринципе и поделил на части, я плохо понимаю как их соединять.
 

Фанат

oncle terrible
Команда форума
Давай посмотрим на первую задачку.
Передача слова из формы в скрипт. передается?
 

proWoke

Новичок
Ну скрипт который бы просто принимал и записывал файл вот.

<?php
$namefile = "perevod.txt";
if (file_exists($namefile)) {
$file = fopen($namefile, "a");
} else {
$file = fopen($namefile, "w");
$text= $_POST['text']."\r\n";

Проверял, работает, только я дописал ."\r\n", чтобы он начинал с новой строки в файле.

-~{}~ 04.11.09 23:06:

Дальше нужно, чтобы он взял слово из текста и перевёд каждую его букву в транслит. Вот это я взял из книжки:
function transliterate($st)
{
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
"abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
)
);


Теперь мне надо соеденить эти 2 штуки и вернуть в форму. header возвращает всё нормально работает. Но как соеденить я не знаю.
 

Фанат

oncle terrible
Команда форума
записывает - это уже следующий шаг.
хорошо
скрипт, который переводит строку в транслит и выводит ее на экран - работает?
 

Beavis

Banned
proWoke
Про файл щас речи не было.

1. Напиши скрипт который просто принимает слово и выводит его на экран.
2. Потом сделай чтобы перед выводом на экран слово транслитерировалось.
3. И в самом конце вместо вывода на экран сделай запись в файл.

Выполни эти три пункта по отдельности, и тогда почти всё получится.
 

proWoke

Новичок
вот этот скрипт переводит, проверял. В моём есть ошибка со скобкой фигурной.

<?php
function transliterate($st)
{
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
"abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
));
return $st;}
echo transliterate ("Помидоры");
?>

Всё выводит правильно.
 

Фанат

oncle terrible
Команда форума
отлично
то есть, скрипт, который принимает, переводит и записывает - работает?
или с ним какие-то проблемы?
 

proWoke

Новичок
<?php
$namefile = "perevod.txt";
if (file_exists($namefile)) {
$file = fopen($namefile, "a");
} else {
$file = fopen($namefile, "w");
$text= $_POST['text']."\r\n";
fwrite($file);
fclose($file);
function transliterate($st)
{
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
"abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
));
return $st;}
header("Location:knopka.html");
?>

Ну вот вместе они, и когда я жму на кнопку в хтмл, он выводит HTTP 500 внутренняя ошибка сервера.
 

Beavis

Banned
proWoke
а ничего что у тебя количество { не совпадает с количеством } ?
Код вообще принято форматировать чтоб он нормально читался, а не вываливать вот в таком виде.
 

Фанат

oncle terrible
Команда форума
proWoke
при наличии внутренней ошибки сервера текст ошибки следует смотреть в логе ошибок веб-сервера
 

proWoke

Новичок
В общем скобочки где надо поставил, теперь никаких ошибок ничего не выдаёт, просто пишу слово в 'text', жму передать, страница возвращаеться назад, но в текстовый файл слово не заноситься, и не переводиться. Просто куда то уходит.
 

Beavis

Banned
proWoke
а нам это зачем знать? найди куда оно уходит
тебе baev дал ссылку как искать пропавшие слова
 

proWoke

Новичок
ок, буду пробовать.

-~{}~ 05.11.09 21:36:

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

Beavis

Banned
proWoke
никто не будет разбираться в коде, который тебе даже лень отформатировать, чтоб он нормально воспринимался.
 

whirlwind

TDD infected, paranoid
proWoke написать программу, это не то же самое, что накрошить винигрет. Сваленные в кучу программные "ингридиенты" не будут работать сами по себе. Надо обеспечить их взаимодействие. Начинать программирование надо с понимания основного принципа: каждая программа принимает входные данные и выдает предсказуемый результат. Если она этого не делает, значит это бесполезная или глючная программа. Если ты не передаешь программе ничего и ничего не хочешь от нее получить, то эта программа не нужна. К программным ингридиентам (ака функциям) это тоже в полной мере относится. Ты что нибудь передаешь в функцию транслитерации или в функцию записи в файл и как-то используешь результаты их работы?
 
Сверху