За последние 24 часа нас посетили 25026 программистов и 1737 роботов. Сейчас ищут 846 программистов ...

Учусь php

Тема в разделе "PHP для новичков", создана пользователем nixx, 23 фев 2013.

  1. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Самостоятельно изучаю php.Собрал с разных скриптов код . Это содержимое самопального файла translit.php.Не могу найти решение ,чтобы при обновлении страницы в браузере ,старое содержимое не записывалось в файл 1.dat ,а div выводился на странице...
    Код (Text):
    1. <?php
    2. ob_start();
    3. error_reporting (E_ALL);
    4.     echo"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"><html ><head>
    5. <title>Translit</title>
    6.  <meta http-equiv='content-type' content='text/html; charset=windows-1251'>
    7. <script language='javascript'>
    8. function sendform() {
    9. if ((document.forms[0].contentru.value == '' )  || (document.forms[0].contentru.value.length >2000)){
    10. alert('Ваше сообщение пустое или больше 2000 символов');
    11. document.REPLIER.contentru.focus();
    12. return  false }  return true;};  </script>
    13. </head>
    14.  <body><h2>\"Транслитерация\"</h2>
    15.  
    16. <form method='post' action=''  name=REPLIER  onsubmit='return sendform();'>
    17.    <textarea cols=50 rows=4 size=500 name='contentru' ></textarea><br /><br />
    18.    <input type='submit' name='submit' value='Транслитировать'>
    19. </form><div style='clear:both'>&nbsp;</div>";
    20.     function rutoen($content){
    21. $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');
    22. $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','&quot;'=>'','&amp;'=>'','µ'=>'u','№'=>'');
    23. $content=trim(htmlspecialchars($content));
    24. $content=strtr($content,$transA);
    25. $content=strtr($content,$transB);
    26. return $content;
    27. }
    28.  
    29.     if(isset($_POST['submit'])&& $_POST['contentru']){ $contentru =($_POST['contentru']);
    30.  
    31. $contentru=wordwrap($contentru ,50,' ',1); $content =rutoen($contentru);
    32. 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>";
    33.  
    34. $text="||$contentru";//Запись в файл
    35.  $fp=fopen("1.dat","a+");
    36. flock ($fp,LOCK_EX);
    37. fputs($fp,"$text\r\n");
    38. flock ($fp,LOCK_UN);
    39. fclose($fp);
    40.  
    41. header("Location:translit.php");exit;}
    42.  
    43. echo "</body></html>";
    44. ?>
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Отобрази другую страницу а не ту же самую.
     
  3. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Тогда надо будет часть кода перенести на ту другую страницу?
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Схватываешь на лету :)

    Если хочешь на той же странице, могу предложить ajax.

    Ну и так на будущее, если хочешь стать хорошим программистом, начни делать отступы, не пиши все в 1 строку.
     
  5. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Получается без ajax в одном файле такую логику невозможно реализовать?Подскажите,чтобы не мудрить,насчет одной страницы.
    Нехотелось небольшой простой код размазывать.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Делай аякс, выучишь еще и JS, это легко.
    Пиши если возникнут проблемы
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    эм. может я че не понял, но можно написать ченить типа

    echo "<div>$contentru</div>";
    echo "</body></html>";
     
  8. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Сейчас php стал для меня немного понятнее.Но пока его не освою до ооп и мускуля,ajax изучать не буду.Слишком много информации надо понять и первые самостоятельные скрипты подтверждают ,что знаний маловато и не хотят работать , как задумывались.Я выбрал тактику изучения php с помощью разбора чужих рабочих скриптов.Таким способом изучил html и css.Создал сайтик на cmsms .Но практика показывает,что все-таки без теории далеко не уедешь.Но интересует ответ сообщества на тот же вопрос.Получается без ajax в одном файле такую логику невозможно реализовать?
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно, я ж написал.
     
  10. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Решение найдено переносом формы в другой файл
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    фейспалм
     
  12. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Изучать аякс?
    Это яваскрипт чувак, это даже не язык программирования, это сценарий!
    Уйдёт максимум 2 дня даже если ты упорот вкрай.
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    крутой ты стал =)
     
  14. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    А то! =D Но я ленивая скотина
    На самом деле это был подьёб автора - он оценивает материал, который ещё не прошёл, как книгу по обложке, зовёт mysql "мускулем", что делают реально только олдфаги и употребляет его в равнозначии с ООП, видимо по сложности, чем естественно не является. В общем, автор вызывает у меня одно негодование.
    И ОМГ, через пару недель будет 3 года как я тут зареган, ужас как летит время.
    И ОМГ!!! Ты зареган на 4 дня позже меня О_О, я думал ты тут с тех пор когда на пхп.ру инсталили phpbb =D
     
  15. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    мартовские все =)
     
  16. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Видимо в эту ветку заходят крутые кодеры
     
  17. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    форум для новичков как раз и создан чтоб мы - (ох как это нескромно) крутые кодеры - помогали новичкам. подумаешь устроили междусобойчик)
     
  18. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Это ты о чем?
    У человека в файл записывается при рефреше...
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    убрать запись. оставить это. в чем косяк?
     
  20. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ну я так понимаю как раз ему нужна запись в файл иначе бы он ее не писал.
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =) в чем косяк-то?
     
  22. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Чтобы в файл не записывалось при обновлении нашел такой код.
    Код (Text):
    1. $file = '1.dat'; // Файл
    2.     $string = trim( "*$contentru".PHP_EOL ); // Строка для записи
    3.     $data_file = file($file); // Считываем данные из файла
    4.        
    5.     $data_file = array_map( "trim", $data_file ); // Тут убираем пробелы по краям записей
    6.        
    7.     if( !in_array($string, $data_file) )// Смотрим, есть ли такая запись
    8.     {
    9.         $user = fopen( $file, 'a' );
    10.         fwrite( $user, $string."\r\n" );
    11.         fclose( $user );
    12.     }
    Получилось без ajax,ob_start и header.Но форму вынес в отдельный файл.Теперь можно предоставлять сервис транслитерации,правда кому он нужен.Но что радостно скрипт заработал.:))
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    при "обновлении" уже отправленной формы? т.е. F5 результата? Но при этом происходит посылка данных заново. Есть только два способа борьбы с этим - уникальный идентификатор и редирект.
     
  24. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Код (Text):
    1. Но при этом происходит посылка данных заново.
    Видимо да ,но задача блокировки записи в файл через F5 была решена.Теперь нужно разобраться насчет "блокировки" повторной посылки данных с помощью id и редиректа.
     
  25. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не "видимо да" а "да", для того эта кнопка и существует.

    зачем ты вообще с этим борешься? зачем пишешь в файл?