Надо вносить дату рождения в базу данных. Два вопроса: PHP: <?php $day = $_POST['day']; $m = $_POST['m']; $y = $_POST['y']; $kandidat = $_POST['kandidat']; $array = array($y, $m, $day); $borthd = implode(",", $array); if(!empty($_POST['kandidat'])){ $ins = "INSERT INTO kandidat (kandidat, data) VALUES ('$kandidat', '$borthd')"; $query = mysqli_query($db, $ins); } $sql = "SELECT * FROM kandidat"; $qwer = mysqli_query($db, $sql); ?> <form action='' method='post'> <input type="date" атрибуты name='data'> <input type='submit'> </form> <form action='' method='post'> <input type='text' name='kandidat'><br> <select name='day' > <?php for($d = 1; $d <=31; $d++){ echo "<option value='".$d."'>".$d."</option>"; } ?> </select> <select name='m'> <?php for($m = 1; $m<=12; $m++){ echo "<option value='".$m."'>".$m."</option>"; } ?> </select> <select name='y'> <?php for($y = date(Y); $y>1950; $y--){ echo "<option value='".$y."'>".$y."</option>"; } ?> </select> <input type='submit' value='день рождения'> </form> <?php while($row = mysqli_fetch_array($qwer)){ echo "$row[kandidat]<br>"; echo 'возраст - '.calculate_age ($row[data]).'<br>'; echo $row[data].'<br><br>'; } ?> Вопрос 1 - есть ли более правильный вариант для внесения дня рождения юзера? вопрос 2 - вот этот кусочек : PHP: echo $row[data].'<br>'; - выглядит не красиво, вот так - 1998-01-18 Как вывести красиво, например вот так - 02:04:2017 Вот так не работает - PHP: echo date('d,m,y',$row[data]).'<br>';
PHP: echo date('d,m,y',strtotime($row[data])); А в какой локали дата через запятую выводится? Почему запятую? Хорошо, что база тебя понимает и не плюётся. И так, для справки, он не borithday, он birthday. Логика обработки POST-запроса неверная. Запомни правило: успешно отработав post-запрос (если не было ошибок), скрипт не должен ничего выводить в браузер, он должен делать редирект на любую страницу сайта, хотя бы и на саму себя. Это защита от повторной отправки данных. Некоторые программисты (к примеру, уважаемый @Fell-x27) считают, что и в случае ошибки тоже, т.е. в ошибку записать в сессию и переадресовать снова на форму.
как же мы любим писать массивы и вызывать их по ключу без апострофов --- Добавлено --- а эт вовсе круть - date(Y)
это я так, для тренировки. я поставил двоеточие. это я делал пробы и забыл убрать я сделал через тире - PHP: implode("-", $array); - не уверен , что я правильно понял замечание, но я сделал так - PHP: if(!empty($_POST['kandidat'])){header('location: index.php');} --- Добавлено --- забыл поставить кавычки, я так понимаю. date('Y'); Вопрос - PHP: $_POST['user']; $_POSR[user]; если я не ошибаюсь работает и так и так , но необходимы кавычки. почему без кавычек это зло? --- Добавлено --- это вы о чём? Это мне?
Причина в том,что здесь $_POST[user]; код содержит неопределенную константу user,вместо строки. Вот тебе пример для наглядности: PHP: <?php define('name', 1); $arr=[1=>'Вася','name'=>'Петя',3]; echo $arr[name]; echo $arr['name']; Код (Text): ВасяПетя
Насколько я помню цифры пишутся без кавычек а строки в кавычках. $_POST[user] - для сервера что то не понятное, я так понимаю. И сервер мыслит так - что это не понимаю, выдам как попало, сам разбирайся. не до конца понимаю в чём конкретно риски? Пример кстати выдает ошибку - спасибо.