Добрый день. Надеюсь не прогадал с выбором раздела Задача примитивна, нужна форма с добавлением полей, кнопкой удалить, добавить (пока без никаких проверок, валидаций, вопросов и т.п.), подгружается ajax-ом Хочется что б не сильно закидали камнями когда буду показывать, ну хотя бы не насмерть) По этому и возник вопрос, что из этого совсем плохо? Или что из плохого нужно исправить в первую очередь? Как понимаете, вопрос возник из-за отсутствия нормального опыта, по этому буду крайне признателен объективным советам и комментам (если нетерпеж, то можно и потролить =) ) Короче прошу самого дорогого, немного Вашего времени и совета) Если по сути: functions.php PHP: <? function connect_db(){ require $_SERVER["DOCUMENT_ROOT"] . '/config/config.php'; $link = mysqli_connect($host, $name, $password, $db); if (!$link) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } return $link; } function add_user_query($arr_user){ $link = connect_db(); $query = "INSERT INTO users VALUES (NULL, '".$arr_user['first_name']."', '".$arr_user['second_name']."', '".$arr_user['email']."')"; mysqli_query($link, $query); mysqli_close($link); } function dell_user_query($arr_user){ $link = connect_db(); mysqli_query($link, "DELETE FROM users WHERE `email` = '".$arr_user['email']."'"); mysqli_close($link); } function load_result(){ $link = connect_db(); $result = mysqli_query($link, "SELECT first_name, second_name, email FROM users"); $resultArr = mysqli_fetch_all($result, MYSQLI_ASSOC); mysqli_close($link); return $resultArr; } function print_field($result){ $number = 0; foreach($result as $key => $val) {?> <div class="row"> <p id="number"><?= ++$number ?></p> <p id="first_name"><?= $result[$key]['first_name'] ?></p> <p id="second_name"><?= $result[$key]['second_name'] ?></p> <p id="email"><?= $result[$key]['email'] ?></p> <p class="control"> <span id="del">del</span> </p> </div> <?} } ?> proc.php PHP: <?php require 'functions.php'; $action = $_POST['action']; $first_name = $_POST['first_name']; $second_name = $_POST['second_name']; $email = $_POST['email']; $arr_user = ['first_name' => $first_name, 'second_name' => $second_name, 'email' => $email ]; $arr = ['first_name', 'second_name', 'email']; switch($action){ case 'add': add_user_query($arr_user); break; case 'update': // update_user_query($arr_user); break; case 'dell': dell_user_query($arr_user); break; } $result = load_result(); print_field($result); ?> js Код (Javascript): $(document).ready(function(){ load_table(); $('.add_user').bind('click', function(){ $('.fields').show(); $('.add_user').css('display', 'none'); var button_save = '<input type="button" name="save_user" class="save_user" value="Save user" />'; var button_cansel = '<input type="button" name="cansel" class="cansel" value="Cansel" />'; $(button_save).appendTo('.fields'); $(button_cansel).appendTo('.fields'); }); $('.add-field').on('click','.cansel', function(){ $('.fields').hide(); $('.save_user').hide(); $('.cansel').hide(); $('.add_user').css('display', 'block'); }); $('.add-field').on('click','.save_user', function(){ var first_name = $('.first_name').val(); var second_name = $('.second_name').val(); var email = $('.email').val(); $.ajax({ type: 'POST', url: "inc/proc.php", data: "action=add&first_name="+first_name+"&second_name="+second_name+"&email="+email, success: update_result }); }); $('.table').on('click','#del', function(){ var email = $(this).closest(".row").find("#email").text(); $.ajax({ type: 'POST', url: "inc/proc.php", data: "action=dell&email="+email, success: update_result }); }); }); function load_table(action){ $.ajax({ type: 'POST', url: "inc/proc.php", cache: false, success: loadResult }); } function loadResult(data){ $(".table").append(data); } function update_result(data){ $("div .row").remove(); $(".table").append(data); } function confirm_delete(){ confirm("Delete?") } function show_popup(){ } function close_popup(){ var popup = document.getElementById('popup'); var overlay = document.getElementById('overlay'); popup.style.display = 'none'; overlay.style.display = 'none'; }
Ну главная цель, что бы это не выглядело как буд-то написано во времена царя Солосона. Вторая не менее важная цель, для себя понимать как делать совсем не стоит.
воу воу воу, случаем не один ли прогер это все писал?, перед тем как наняли исправлять косяки Спойлер
Хм.. судя по всему я не намного далеко ушел. Вот т.к. и не хочется писать такой говнокод, которым будут потом детей пугать, по этому и спрашиваю. Но что то толку не много(
@v-lavr, сначала делай чтобы работало потом занимайся оптимизацией. Купи книги, оттуда ты узнаешь как делать правильно. Чаще сиди на форуме, не важно можешь ты помочь или нет, читай темы вникай, пытайся сам сделать.
это выглядит так, словно это писал новичок в пхп, который делает первые шаги и которого никто не учит делать правильно. Хотя заметно, что человек старается находить и использовать хорошие решения в интернете или книгах. Но на текущий момент там дыра на дыре, надо улучшать теорию по работе с бд. --- Добавлено --- плюс ещё смешанный синтаксис используется. не эхо а <?=, но при этом в функции.
Не нужно так зацикливаться на том, что тебя кто-то будет тролить и закидывать камнями. Я не видел чтобы тут с нормальными людьми так поступали.