Как добавить 3 выпадающих в одной переменной в php? - PullRequest
1 голос
/ 12 февраля 2020

Два дня go У меня было интервью как разработчика php, и мне дали задание выполнить. Я выполнил 90% задания, но мне не удалось добавить дату, месяц и год вместе.

У меня есть 3 выпадающих списка для даты, месяца и года:

Date Of Birth : <br />
Date : <select name="date">
            <?php $i=1; for($i=1; $i<=31; $i++){ ?> <option> <?php echo $i?> </option> <?php } ?>    
       </select>  
Month :  <select name="month">
            <option value="January">January</option>
            <option>Febuary</option>
            <option>March</option>
            <option>April</option>
            <option>May</option>
            <option>June</option>
            <option>July</option>
            <option>August</option>
            <option>September</option>
            <option>October</option>
            <option>November</option>
            <option>December</option>

        </select>
Year :    
<?php
    $currently_selected = date('Y'); 
    $earliest_year = 1950; 
    $latest_year = date('Y'); 

    print '<select name="year">';
    foreach ( range( $latest_year, $earliest_year ) as $i ) {
    print '<option value="'.$i.'"'.($i === $currently_selected ? ' selected="selected"' : '').'>'.$i.'</option>';
    }
    print '</select>';
?>

У меня есть только один столбец в базе данных на дату рождения. Я хочу добавить дату, месяц и год вместе, что должно привести к следующему: date/month/year. Как я мог совершить sh это?

if(isset($_POST['submit'])){
    $name = trim($_POST['username']);
    $date = $_POST['date'];
    $month = $_POST['month'];
    $year = $_POST['year'];

    if($name == ''){
        $error = "Add Name";
    }    

    $DateOfBirth = $date.'/'$month;

    if(!$error){
        echo $DateOfBirth;
    }
}

Ответы [ 2 ]

3 голосов
/ 12 февраля 2020

Предполагая, что ваше поле даты рождения является полем MySQL DATE, вам необходимо убедиться, что вы создаете дату в правильном формате, т.е. YYYY-MM-DD. Вы можете сделать это, используя strtotime для преобразования ваших входных данных в метку времени, а затем date для преобразования этого в соответствующий формат:

$DateOfBirth = date('Y-m-d', strtotime("$date $month $year"));

Например:

$year = 2015;
$month = 'August';
$date = 5;
$DateOfBirth = date('Y-m-d', strtotime("$date $month $year"));
echo $DateOfBirth;

Выход:

2015-08-05

Демо на 3v4l.org

Примечание

Если вы действительно хотите, чтобы результат был в формате dd/mm/yyyy, просто измените первый ввод с date на 'd/m/Y'.

1 голос
/ 12 февраля 2020

Причина в том, что вы не объединяете переменные в php. Проверьте ниже код. Вы почти там, но с небольшой ошибкой кодирования.

Что вы пытаетесь сделать, это объединить переменную со строкой. Таким образом, вы должны объединить переменную с «.» и затем добавьте свою строку. Здесь / работает как строка. При добавлении строки она должна быть в кавычках '/'. И конечный результат будет примерно таким. $variable . '/'. Теперь объедините другую переменную. Тогда это будет так. $variable01 . '/' . $variable02.

 $DateOfBirth = $date.'/'.$month.'/'.$date ;

Вывод

12/02/2020

Проверьте добавленный пример по вашему требованию

пример

...