За последние 24 часа нас посетили 8815 программистов и 454 робота. Сейчас ищут 88 программистов ...

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

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

  1. alexwebdev

    alexwebdev Новичок

    С нами с:
    19 май 2017
    Сообщения:
    6
    Симпатии:
    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
    Сообщения:
    1.183
    Симпатии:
    259
    создаешь два массива с месяцами. Один на русском, второй на английском с одинаковыми индексами для одного и того же месяца.
    (т е $ru[0]="Январь"; $en[0]="January"; и т д)
    Получаешь "Январь", находишь соответствие в первом массиве, применяешь тот же индекс ко второму массиву и получаешь "January".
     
  3. alexwebdev

    alexwebdev Новичок

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

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

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

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

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

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

    Алекс8 Новичок

    С нами с:
    18 май 2017
    Сообщения:
    81
    Симпатии:
    23
    вот как то так
    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
    Сообщения:
    6
    Симпатии:
    0
    Спасибо за массив!

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

    Алекс8 Новичок

    С нами с:
    18 май 2017
    Сообщения:
    81
    Симпатии:
    23
    У Вас там 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
    Сообщения:
    6
    Симпатии:
    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 в 09:11
  8. Алекс8

    Алекс8 Новичок

    С нами с:
    18 май 2017
    Сообщения:
    81
    Симпатии:
    23
    вставляйте пожалуйста код в тег для кода.. это первая кнопка в панели бб кодов над текстовым полем, где Вы пишите комменты к теме
    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
    Сообщения:
    6
    Симпатии:
    0
    при выборе выпадающего списка отображается Январь и в базу так и летит русский Январь ((
     
  10. TeslaFeo

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

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

    san4ez Новичок

    С нами с:
    13 авг 2016
    Сообщения:
    215
    Симпатии:
    26
    если нужен выпадающий список, то не проще ли тогда сделать подобную форму
    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
    Сообщения:
    6
    Симпатии:
    0
    Благодарю всех за помощь.Все получилось