За последние 24 часа нас посетили 64004 программиста и 1740 роботов. Сейчас ищут 844 программиста ...

День рождения в mysql

Тема в разделе "PHP для новичков", создана пользователем viktor72, 2 апр 2017.

Метки:
  1. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Надо вносить дату рождения в базу данных.
    Два вопроса:
    PHP:
    1. <?php
    2. $day = $_POST['day'];
    3. $m = $_POST['m'];
    4. $y = $_POST['y'];
    5. $kandidat = $_POST['kandidat'];
    6. $array = array($y, $m, $day);
    7. $borthd = implode(",", $array);
    8. if(!empty($_POST['kandidat'])){
    9. $ins = "INSERT INTO kandidat (kandidat, data) VALUES ('$kandidat', '$borthd')";
    10. $query = mysqli_query($db, $ins);
    11.     }
    12. $sql = "SELECT * FROM kandidat";
    13. $qwer = mysqli_query($db, $sql);
    14.  
    15. ?>
    16.  
    17. <form action='' method='post'>
    18. <input type="date" атрибуты name='data'>
    19. <input type='submit'>
    20. </form>
    21.  
    22. <form action='' method='post'>
    23. <input type='text' name='kandidat'><br>
    24. <select name='day' >
    25. <?php
    26.     for($d = 1; $d <=31; $d++){
    27.     echo "<option value='".$d."'>".$d."</option>";
    28.     }
    29. ?>
    30. </select>
    31. <select name='m'>
    32. <?php
    33.     for($m = 1; $m<=12; $m++){
    34.     echo "<option value='".$m."'>".$m."</option>";
    35.     }
    36. ?>
    37. </select>
    38. <select name='y'>
    39. <?php
    40.     for($y = date(Y); $y>1950; $y--){
    41.         echo "<option value='".$y."'>".$y."</option>";
    42.     }
    43. ?>
    44. </select>
    45. <input type='submit' value='день рождения'>
    46. </form>
    47. <?php
    48. while($row = mysqli_fetch_array($qwer)){
    49.     echo "$row[kandidat]<br>";
    50.     echo 'возраст - '.calculate_age ($row[data]).'<br>';
    51.     echo $row[data].'<br><br>';
    52.      
    53. }
    54. ?>
    Вопрос 1 - есть ли более правильный вариант для внесения дня рождения юзера?

    вопрос 2 - вот этот кусочек :
    PHP:
    1. echo $row[data].'<br>';
    - выглядит не красиво, вот так - 1998-01-18
    Как вывести красиво, например вот так - 02:04:2017
    Вот так не работает -
    PHP:
    1. echo date('d,m,y',$row[data]).'<br>';
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    PHP:
    1. echo date('d,m,y',strtotime($row[data]));
    А в какой локали дата через запятую выводится?
    Почему запятую? Хорошо, что база тебя понимает и не плюётся. И так, для справки, он не borithday, он birthday.

    Логика обработки POST-запроса неверная. Запомни правило: успешно отработав post-запрос (если не было ошибок), скрипт не должен ничего выводить в браузер, он должен делать редирект на любую страницу сайта, хотя бы и на саму себя. Это защита от повторной отправки данных. Некоторые программисты (к примеру, уважаемый @Fell-x27) считают, что и в случае ошибки тоже, т.е. в ошибку записать в сессию и переадресовать снова на форму.
     
    viktor72 нравится это.
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    strtotime (), date ();
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    как же мы любим писать массивы и вызывать их по ключу без апострофов
    --- Добавлено ---
    а эт вовсе круть - date(Y)
     
    viktor72 нравится это.
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    зарегался, чтобы выложить открытку.
    какой милый бот)))
     
    SamyRed нравится это.
  6. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    это я так, для тренировки. я поставил двоеточие.

    это я делал пробы и забыл убрать я сделал через тире -
    PHP:
    1. implode("-", $array);
    - не уверен , что я правильно понял замечание, но я сделал так -
    PHP:
    1. if(!empty($_POST['kandidat'])){header('location: index.php');}
    --- Добавлено ---
    забыл поставить кавычки, я так понимаю. date('Y');
    Вопрос -
    PHP:
    1. $_POST['user'];
    2. $_POSR[user];
    если я не ошибаюсь работает и так и так , но необходимы кавычки. почему без кавычек это зло?
    --- Добавлено ---
    это вы о чём? Это мне?
     
  7. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Причина в том,что здесь $_POST[user]; код содержит неопределенную константу user,вместо строки.
    Вот тебе пример для наглядности:

    PHP:
    1. <?php
    2. define('name', 1);
    3. $arr=[1=>'Вася','name'=>'Петя',3];
    4. echo $arr[name];
    5. echo $arr['name'];
    Код (Text):
    1. ВасяПетя
     
    TeslaFeo, viktor72, denis01 и ещё 1-му нравится это.
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    хороший пример
     
  9. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Насколько я помню цифры пишутся без кавычек а строки в кавычках. $_POST[user] - для сервера что то не понятное, я так понимаю. И сервер мыслит так - что это не понимаю, выдам как попало, сам разбирайся. не до конца понимаю в чём конкретно риски?
    Пример кстати выдает ошибку -
    спасибо.
     
  10. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Не совсем. Можно так писать, но не стоит. Обычную строку сервер пропустит как строку.
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    нет. наверное модеры удалили сообщение.
     
  12. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Да, там чётенька открытка была. С поздравлением :D
     
    TeslaFeo нравится это.