За последние 24 часа нас посетили 21737 программистов и 1020 роботов. Сейчас ищут 646 программистов ...

Как в форме ввести название по русски а в базу должно идти по английски?

Тема в разделе "Прочие вопросы по PHP", создана пользователем alexwebdev, 19 май 2017.

  1. alexwebdev

    alexwebdev Новичок

    С нами с:
    19 май 2017
    Сообщения:
    15
    Симпатии:
    0
    Помогите пожалуйста!

    Есть форма

    PHP:
    1. <form name="form1" method="post" action="add_data.php">
    2.   <p>
    3.   <label>Month<br>
    4.   <input type="text" name="month" id="month">
    5.   </label>
    6.   </p>
    7.   <p>
    8.   <label>Day<br>
    9.   <input type="text" name="day" id="day">
    10.   </label>
    11.   </p>
    12.   <p>
    13.   <label>Year<br>
    14.   <input type="text" name="year" id="year">
    15.   </label>
    16.   </p>
    17.  
    18. Есть обработчик
    19.  
    20. <?php
    21. if (isset($month) && isset($day) && isset($year))
    22. {
    23. $result = mysql_query ("UPDATE countdata SET month='$month', day='$day', year='$year' WHERE id='$id'");
    24.  
    25. if ($result == 'true') {echo "<p>Succes!</p>";}
    26. else {echo "<p>Fall</p>";}
    27.  
    28.  
    29. }
    30. else
    31.  
    32. {
    33. echo "<p>3var.</p>";
    34. }
    35.  
    36.  
    37.  
    38.   ?>
    Мне необходимо вводить в форму название месяца по русски, например - (Январь).
    А в базу должно лететь - January
    Думаю нужна подмена переменной типа str_replace. Но как это реализовать?
     
    #1 alexwebdev, 19 май 2017
    Последнее редактирование модератором: 19 май 2017
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    создаешь два массива с месяцами. Один на русском, второй на английском с одинаковыми индексами для одного и того же месяца.
    (т е $ru[0]="Январь"; $en[0]="January"; и т д)
    Получаешь "Январь", находишь соответствие в первом массиве, применяешь тот же индекс ко второму массиву и получаешь "January".
     
  3. alexwebdev

    alexwebdev Новичок

    С нами с:
    19 май 2017
    Сообщения:
    15
    Симпатии:
    0
    Простите я новичок!

    Массив должен быть таким?

    $month = array(
    '$ru'[0]="Январь" => '$en'[0]="January");

    Каким образом я получаю соответствие в первом массиве?

    Как мне это вставить в мой скрипт?

    Напишите пожалуйста пример
     
  4. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    вот как то так
    PHP:
    1. $month = array(
    2.       'ru' => array(
    3.             0 => 'Январь,
    4.      ),
    5.      'en' => array(
    6.            0 => 'January',
    7.      ),
    8. );
    а если привыкать к пхп7 то вот так
    PHP:
    1. $month = [
    2.       'ru' => [
    3.             0 => 'Январь,
    4.      ],
    5.      'en' => [
    6.            0 => 'January',
    7.      ],
    8. ];
    --- Добавлено ---
    если несколько элементов добавить надо, то вот так..
    PHP:
    1. $month = array(
    2.       'ru' => array(
    3.             0 => 'Январь,
    4.            1 => 'Февраль',
    5.     ),
    6.     'en' => array(
    7.           0 => 'January',
    8.           1 => 'february',
    9.     ),
    10. );
     
  5. alexwebdev

    alexwebdev Новичок

    С нами с:
    19 май 2017
    Сообщения:
    15
    Симпатии:
    0
    Спасибо за массив!

    Как мне массив с формой соединить? Как это в форму ввести?
     
  6. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    У Вас там input type text - это форма для ввода текста..
    Я так понимаю хочется что бы был выбор из списка? тогда как то так
    PHP:
    1. <select>
    2. <? foreach($month['ru'] AS $m) ?>
    3. <option><?=$m?></option>
    4. <? endforeach; ?>
    5. </select>
     
  7. alexwebdev

    alexwebdev Новичок

    С нами с:
    19 май 2017
    Сообщения:
    15
    Симпатии:
    0
    Если так ,то не работает

    HTML:
    1. <form name="form1" method="post" action="add_data.php">
    2.  
    3.  
    4.   <select>
    5.   <option><? $month = array(
    6.  'ru' => array(
    7.   0 => 'Январь',
    8.   1 => 'Февраль',
    9.   ),
    10.   'en' => array(
    11.   0 => 'January',
    12.   1 => 'february',
    13.   ),
    14. );
    15.  
    16.   foreach($month['ru'] AS $m) ?></option>
    17.   <option><?=$m?></option>
    18.   <? endforeach; ?>
    19.   </select>
    20.  
    21.  
    22.  
    23.   <p>
    24.   <label>Month<br>
    25.   <input type="text" name="month" id="month">
    26.   </label>
    27.   </p>
    28.   <p>
    29.   <label>Day<br>
    30.   <input type="text" name="day" id="day">
    31.   </label>
    32.   </p>
    33.   <p>
    34.   <label>Year<br>
    35.   <input type="text" name="year" id="year">
    36.   </label>
    37.   </p>
    38.  
    39. <p>
    40.   <label>
    41.   <input type="submit" name="submit" id="submit" value="Save new data">
    42.   </label>
    43.   </p>
    44.   </form>
    Ошибку выдает с endforeach
     
    #7 alexwebdev, 19 май 2017
    Последнее редактирование модератором: 20 май 2017
  8. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    вставляйте пожалуйста код в тег для кода.. это первая кнопка в панели бб кодов над текстовым полем, где Вы пишите комменты к теме
    PHP:
    1. <?php
    2. $month = array(
    3.     'ru' => array(
    4.         0 => 'Январь',
    5.         1 => 'Февраль',
    6.     ),
    7.     'en' => array(
    8.         0 => 'January',
    9.         1 => 'february',
    10.     ),
    11. );
    12. ?>
    13.  
    14. <form name="form1" method="post" action="add_data.php">
    15.     <select>
    16.         <?php foreach($month['ru'] as $m) : ?>
    17.         <option><?=$m?></option>
    18.         <?php endforeach; ?>
    19.     </select>
    20.     <p>
    21.         <label>Month<br>
    22.             <input type="text" name="month" id="month">
    23.         </label>
    24.     </p>
    25.     <p>
    26.     <label>Day<br>
    27.         <input type="text" name="day" id="day">
    28.     </label>
    29.     </p>
    30.     <p>
    31.     <label>Year<br>
    32.         <input type="text" name="year" id="year">
    33.         </label>
    34.     </p>
    35.  
    36.     <p>
    37.         <label>
    38.             <input type="submit" name="submit" id="submit" value="Save new data">
    39.         </label>
    40.     </p>
    41. </form>
     
  9. alexwebdev

    alexwebdev Новичок

    С нами с:
    19 май 2017
    Сообщения:
    15
    Симпатии:
    0
    при выборе выпадающего списка отображается Январь и в базу так и летит русский Январь ((
     
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    В форме просто:
    HTML:
    1.  
    2.       <option>Январь</option>
    3.       <option>Февраль</option>
    4.       <option>Март</option>
    5. <!-- и т д... Можешь вцикле выводить из массива, можешь просто прописать. -->
    6.  
    А массивы в обработчике формы.
    Почитай про array-search
    Принимаешь свой "Январь", скармливаешь его этой функции, она возвращает индекс элемента со значением "Январь"
    По этому индексу находишь свой "January" во втором массиве. Всё просто.
     
  11. san4ez

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

    С нами с:
    13 авг 2016
    Сообщения:
    331
    Симпатии:
    47
    если нужен выпадающий список, то не проще ли тогда сделать подобную форму
    HTML:
    1. <select name="month">
    2.     <option disabled>Выберите месяц</option>
    3.     <option value="January">Январь</option>
    4.     <option value="February">Февраль</option>
    5.     <option value="March">Март</option>
    6.     <option value="April">Апрель</option>
    7.    /* и так далее */
    8.    </select>
    и никаких массивов не надо...
    --- Добавлено ---
    @alexwebdev в коде выше в базу полетят англ. названия
     
    TeslaFeo нравится это.
  12. alexwebdev

    alexwebdev Новичок

    С нами с:
    19 май 2017
    Сообщения:
    15
    Симпатии:
    0
    Благодарю всех за помощь.Все получилось