Самостоятельно изучаю php.Собрал с разных скриптов код . Это содержимое самопального файла translit.php.Не могу найти решение ,чтобы при обновлении страницы в браузере ,старое содержимое не записывалось в файл 1.dat ,а div выводился на странице... Код (Text): <?php ob_start(); error_reporting (E_ALL); echo"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"><html ><head> <title>Translit</title> <meta http-equiv='content-type' content='text/html; charset=windows-1251'> <script language='javascript'> function sendform() { if ((document.forms[0].contentru.value == '' ) || (document.forms[0].contentru.value.length >2000)){ alert('Ваше сообщение пустое или больше 2000 символов'); document.REPLIER.contentru.focus(); return false } return true;}; </script> </head> <body><h2>\"Транслитерация\"</h2> <form method='post' action='' name=REPLIER onsubmit='return sendform();'> <textarea cols=50 rows=4 size=500 name='contentru' ></textarea><br /><br /> <input type='submit' name='submit' value='Транслитировать'> </form><div style='clear:both'> </div>"; function rutoen($content){ $transA=array('А'=>'A','Б'=>'B','В'=>'V','Г'=>'G','Ґ'=>'G','Д'=>'D','Е'=>'E','Є'=>'E','Ё'=>'Yo','Ж'=>'Zh','З'=>'Z','И'=>'I','І'=>'I','Й'=>'Y','Ї'=>'Y','К'=>'K','Л'=>'L','М'=>'M','Н'=>'N','О'=>'O','П'=>'P','Р'=>'R','С'=>'S','Т'=>'T','У'=>'U','Ў'=>'U','Ф'=>'F','Х'=>'H','Ц'=>'C','Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Sch','Ъ'=>'','Ы'=>'Y','Ь'=>'','Э'=>'E','Ю'=>'Yu','Я'=>'Ya'); $transB=array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','ґ'=>'g','д'=>'d','е'=>'e','ё'=>'yo','є'=>'e','ж'=>'zh','з'=>'z','и'=>'i','і'=>'i','й'=>'y','ї'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ў'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'sch','ъ'=>'','ы'=>'y','ь'=>'','э'=>'e','ю'=>'yu','я'=>'ya','"'=>'','&'=>'','µ'=>'u','№'=>''); $content=trim(htmlspecialchars($content)); $content=strtr($content,$transA); $content=strtr($content,$transB); return $content; } if(isset($_POST['submit'])&& $_POST['contentru']){ $contentru =($_POST['contentru']); $contentru=wordwrap($contentru ,50,' ',1); $content =rutoen($contentru); echo "<div style='float:left;width:46%;border: 1px #b7b7b7 solid; background: #FFDDDD; padding:10px; margin: 5px ;'>$contentru </div> <div style='float:left;width:46%;color:red;border: 1px #ffacac solid; background: #fafacf; padding:10px; margin: 5px ;'> $content </div>"; $text="||$contentru";//Запись в файл $fp=fopen("1.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); flock ($fp,LOCK_UN); fclose($fp); header("Location:translit.php");exit;} echo "</body></html>"; ?>
Схватываешь на лету Если хочешь на той же странице, могу предложить ajax. Ну и так на будущее, если хочешь стать хорошим программистом, начни делать отступы, не пиши все в 1 строку.
Получается без ajax в одном файле такую логику невозможно реализовать?Подскажите,чтобы не мудрить,насчет одной страницы. Нехотелось небольшой простой код размазывать.
эм. может я че не понял, но можно написать ченить типа echo "<div>$contentru</div>"; echo "</body></html>";
Сейчас php стал для меня немного понятнее.Но пока его не освою до ооп и мускуля,ajax изучать не буду.Слишком много информации надо понять и первые самостоятельные скрипты подтверждают ,что знаний маловато и не хотят работать , как задумывались.Я выбрал тактику изучения php с помощью разбора чужих рабочих скриптов.Таким способом изучил html и css.Создал сайтик на cmsms .Но практика показывает,что все-таки без теории далеко не уедешь.Но интересует ответ сообщества на тот же вопрос.Получается без ajax в одном файле такую логику невозможно реализовать?
Изучать аякс? Это яваскрипт чувак, это даже не язык программирования, это сценарий! Уйдёт максимум 2 дня даже если ты упорот вкрай.
А то! =D Но я ленивая скотина На самом деле это был подьёб автора - он оценивает материал, который ещё не прошёл, как книгу по обложке, зовёт mysql "мускулем", что делают реально только олдфаги и употребляет его в равнозначии с ООП, видимо по сложности, чем естественно не является. В общем, автор вызывает у меня одно негодование. И ОМГ, через пару недель будет 3 года как я тут зареган, ужас как летит время. И ОМГ!!! Ты зареган на 4 дня позже меня О_О, я думал ты тут с тех пор когда на пхп.ру инсталили phpbb =D
форум для новичков как раз и создан чтоб мы - (ох как это нескромно) крутые кодеры - помогали новичкам. подумаешь устроили междусобойчик)
Чтобы в файл не записывалось при обновлении нашел такой код. Код (Text): $file = '1.dat'; // Файл $string = trim( "*$contentru".PHP_EOL ); // Строка для записи $data_file = file($file); // Считываем данные из файла $data_file = array_map( "trim", $data_file ); // Тут убираем пробелы по краям записей if( !in_array($string, $data_file) )// Смотрим, есть ли такая запись { $user = fopen( $file, 'a' ); fwrite( $user, $string."\r\n" ); fclose( $user ); } Получилось без ajax,ob_start и header.Но форму вынес в отдельный файл.Теперь можно предоставлять сервис транслитерации,правда кому он нужен.Но что радостно скрипт заработал.)
при "обновлении" уже отправленной формы? т.е. F5 результата? Но при этом происходит посылка данных заново. Есть только два способа борьбы с этим - уникальный идентификатор и редирект.
Код (Text): Но при этом происходит посылка данных заново. Видимо да ,но задача блокировки записи в файл через F5 была решена.Теперь нужно разобраться насчет "блокировки" повторной посылки данных с помощью id и редиректа.
не "видимо да" а "да", для того эта кнопка и существует. зачем ты вообще с этим борешься? зачем пишешь в файл?