За последние 24 часа нас посетили 64064 программиста и 1741 робот. Сейчас ищут 885 программистов ...

Обновление контента php, ajax. Все работает, но правильно ли это?

Тема в разделе "PHP для новичков", создана пользователем v-lavr, 22 дек 2016.

  1. v-lavr

    v-lavr Новичок

    С нами с:
    22 дек 2016
    Сообщения:
    6
    Симпатии:
    0
    Добрый день.
    Надеюсь не прогадал с выбором раздела :)
    Задача примитивна, нужна форма с добавлением полей, кнопкой удалить, добавить (пока без никаких проверок, валидаций, вопросов и т.п.), подгружается ajax-ом

    Хочется что б не сильно закидали камнями когда буду показывать, ну хотя бы не насмерть)
    По этому и возник вопрос, что из этого совсем плохо?
    Или что из плохого нужно исправить в первую очередь?
    Как понимаете, вопрос возник из-за отсутствия нормального опыта, по этому буду крайне признателен объективным советам и комментам (если нетерпеж, то можно и потролить =) )
    Короче прошу самого дорогого, немного Вашего времени и совета)
    Если по сути:
    functions.php
    PHP:
    1. <?
    2. function connect_db(){
    3.     require $_SERVER["DOCUMENT_ROOT"] . '/config/config.php';
    4.     $link = mysqli_connect($host, $name, $password, $db);
    5.  
    6.     if (!$link) {
    7.     printf("Connect failed: %s\n", mysqli_connect_error());
    8.     exit();
    9.     }
    10.     return $link;
    11. }
    12. function add_user_query($arr_user){
    13.     $link = connect_db();
    14.     $query = "INSERT INTO users VALUES (NULL,
    15.                                        '".$arr_user['first_name']."',
    16.                                        '".$arr_user['second_name']."',
    17.                                        '".$arr_user['email']."')";
    18.     mysqli_query($link, $query);
    19.     mysqli_close($link);
    20. }
    21. function dell_user_query($arr_user){
    22.     $link = connect_db();
    23.     mysqli_query($link, "DELETE FROM users WHERE `email` = '".$arr_user['email']."'");
    24.     mysqli_close($link);
    25. }
    26. function load_result(){
    27.     $link = connect_db();
    28.     $result = mysqli_query($link, "SELECT first_name, second_name, email FROM users");
    29.     $resultArr = mysqli_fetch_all($result, MYSQLI_ASSOC);
    30.     mysqli_close($link);
    31.     return $resultArr;
    32. }
    33. function print_field($result){
    34.     $number = 0;
    35.         foreach($result as $key => $val)
    36.         {?>
    37.             <div class="row">
    38.                 <p id="number"><?= ++$number ?></p>
    39.                 <p id="first_name"><?= $result[$key]['first_name'] ?></p>
    40.                 <p id="second_name"><?= $result[$key]['second_name'] ?></p>
    41.                 <p id="email"><?= $result[$key]['email'] ?></p>
    42.                 <p class="control">
    43.                     <span id="del">del</span>
    44.                 </p>
    45.             </div>
    46.         <?}
    47. }
    48. ?>
    proc.php
    PHP:
    1. <?php
    2. require 'functions.php';
    3. $action = $_POST['action'];
    4. $first_name = $_POST['first_name'];
    5. $second_name = $_POST['second_name'];
    6. $email = $_POST['email'];
    7.  
    8. $arr_user = ['first_name' => $first_name,
    9.              'second_name' => $second_name,
    10.              'email' => $email
    11.              ];
    12. $arr = ['first_name', 'second_name', 'email'];
    13.        
    14. switch($action){
    15.     case 'add':
    16.         add_user_query($arr_user);
    17.         break;
    18.     case 'update':
    19.       //  update_user_query($arr_user);
    20.         break;
    21.     case 'dell':
    22.         dell_user_query($arr_user);
    23.         break;
    24.        
    25. }
    26. $result = load_result();
    27. print_field($result);
    28. ?>
    js
    Код (Javascript):
    1. $(document).ready(function(){
    2.     load_table();
    3.    
    4.     $('.add_user').bind('click', function(){
    5.         $('.fields').show();
    6.         $('.add_user').css('display', 'none');
    7.        
    8.         var button_save = '<input type="button" name="save_user" class="save_user" value="Save user" />';
    9.         var button_cansel = '<input type="button" name="cansel" class="cansel" value="Cansel" />';
    10.        
    11.         $(button_save).appendTo('.fields');
    12.         $(button_cansel).appendTo('.fields');
    13.        
    14.     });
    15.     $('.add-field').on('click','.cansel', function(){
    16.         $('.fields').hide();
    17.         $('.save_user').hide();
    18.         $('.cansel').hide();
    19.         $('.add_user').css('display', 'block');
    20.     });
    21.     $('.add-field').on('click','.save_user', function(){
    22.         var first_name = $('.first_name').val();
    23.         var second_name = $('.second_name').val();
    24.         var email = $('.email').val();
    25.        
    26.         $.ajax({
    27.             type: 'POST',
    28.             url: "inc/proc.php",
    29.            
    30.             data: "action=add&first_name="+first_name+"&second_name="+second_name+"&email="+email,
    31.             success: update_result
    32.         });
    33.        
    34.     });
    35.    
    36.     $('.table').on('click','#del', function(){
    37.        var email = $(this).closest(".row").find("#email").text();
    38.             $.ajax({
    39.             type: 'POST',
    40.             url: "inc/proc.php",
    41.             data: "action=dell&email="+email,
    42.             success: update_result
    43.             });
    44.            
    45.     });
    46.      
    47.        
    48. });
    49.  
    50.  
    51. function load_table(action){
    52.     $.ajax({
    53.             type: 'POST',
    54.             url: "inc/proc.php",
    55.             cache: false,
    56.             success: loadResult
    57.         });
    58. }
    59. function loadResult(data){
    60.     $(".table").append(data);
    61. }
    62. function update_result(data){  
    63.     $("div .row").remove();
    64.     $(".table").append(data);
    65. }
    66. function confirm_delete(){
    67.     confirm("Delete?")
    68. }
    69.  
    70.  
    71. function show_popup(){
    72.    
    73.    
    74. }
    75. function close_popup(){
    76.     var popup = document.getElementById('popup');
    77.     var overlay = document.getElementById('overlay');
    78.     popup.style.display = 'none';
    79.     overlay.style.display = 'none';
    80. }
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а кому показывать-то собрался?
     
  3. v-lavr

    v-lavr Новичок

    С нами с:
    22 дек 2016
    Сообщения:
    6
    Симпатии:
    0
    Ну главная цель, что бы это не выглядело как буд-то написано во времена царя Солосона.
    Вторая не менее важная цель, для себя понимать как делать совсем не стоит.
     
  4. v-lavr

    v-lavr Новичок

    С нами с:
    22 дек 2016
    Сообщения:
    6
    Симпатии:
    0
    п.с. а есть принципиальная разница в комментариях к коду в зависимости от того кто будет смотреть?))
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    воу воу воу, случаем не один ли прогер это все писал?, перед тем как наняли исправлять косяки
    [​IMG]
     
  6. v-lavr

    v-lavr Новичок

    С нами с:
    22 дек 2016
    Сообщения:
    6
    Симпатии:
    0
    Хм.. судя по всему я не намного далеко ушел. Вот т.к. и не хочется писать такой говнокод, которым будут потом детей пугать, по этому и спрашиваю. Но что то толку не много(
     
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @v-lavr, сначала делай чтобы работало потом занимайся оптимизацией. Купи книги, оттуда ты узнаешь как делать правильно. Чаще сиди на форуме, не важно можешь ты помочь или нет, читай темы вникай, пытайся сам сделать.
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это выглядит так, словно это писал новичок в пхп, который делает первые шаги и которого никто не учит делать правильно. Хотя заметно, что человек старается находить и использовать хорошие решения в интернете или книгах.

    Но на текущий момент там дыра на дыре, надо улучшать теорию по работе с бд.
    --- Добавлено ---
    плюс ещё смешанный синтаксис используется. не эхо а <?=, но при этом в функции.
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Не нужно так зацикливаться на том, что тебя кто-то будет тролить и закидывать камнями. Я не видел чтобы тут с нормальными людьми так поступали.