Mysql
 sql >> база данни >  >> RDS >> Mysql

Извличане на данни в падащото меню на ajax с помощта на PHP MySql JQuery

Малцина мислят за вашия код

  • С AJAX опитайте да използвате JSON за изпращане и извличане на данни, това ще ви даде повече свобода относно vars и потребителски интерфейс.

  • Тъй като използвате jQuery, опитайте се да го използвате колкото е възможно повече, без да дефинирате онлайн събития, ако ги групирате в скрипта, ще ви бъде по-лесно да го управлявате.

  • Относно избраните е доста трудно да ги презаредите. В IE си спомням, че не можах да добавя опции, така че трябва да заредите ЦЕЛИЯ избор.

  • Не използвайте PHP mysql_query функции, са доста отхвърлени. Прочетете и приложете това: Как мога да предотвратя SQL инжектирането в PHP?

  • Когато зареждате стойности от AJAX, трябва да прикачите манипулатора към DOM елементите, ето защо с помощта на функцията .on(), за да сте сигурни, че тя прикачва манипулатора към елементите.

  • Опитайте се да използвате по-новите библиотеки на jQuery, тъй като те са по-бързи, мощни и имат повишена производителност, 1.4 е доста стара...

Написах ви пример за падащо меню на държави, използващи горните неща, за да ви дам представа как да го постигнете, вземете това, което смятате, че ви харесва:

index.html:

<html>

    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
    </head>

    <body>

    <script>
    $(document).ready(function () {
        $(document).on('change', '#div_country select, #div_state select', function () {
            var $type = $(this).attr('data-type');
            var $id = $(this).val();

            if ( $id != -1 ) {
                loadSelect( $type, $id );
            }

        });

        function loadSelect( $type, $id ) {
            $.ajax({
                type: 'post',
                url: 'states.php',
                cache: false,
                data: {
                    'type': $type
                ,   'id': $id
                },
                dataType: 'json',
                success: function (data) {
                    if ( data.result == true ) {
                        if (data.html !== undefined) {
                            var $div = '';
                            if ( $type == 'country') {
                                $div = 'state';
                            } else {
                                $div = 'city';
                            }
                            $( "#div_" + $div ).html(data.html);
                        }
                    } else {
                        alert('Something went wrong!');
                    }
                }
            });
        }

    });
    </script>

    <div id="div_country">
        <select data-type="country">
            <option value="-1">Select Country</option>
            <option value="1">Spain</option>
            <option value="2">France</option>
            <option value="3">Germany</option>
        </select>
    </div>

    <div id="div_state">
        <select data-type="state">
            <option value="-1">Select Country</option>
        </select>
    </div>

    <div id="div_city">
        <select>
            <option value="-1">Select State</option>
        </select>
    </div>

    </body>
</html>

state.php

<?php
$type = isset( $_POST['type'] ) ? $_POST['type'] : '';

if ( !empty( $type ) ) {
    switch ($type) {
        case 'country':
            $result = true;
            $html = '<select data-type="state">
                        <option value="-1">Select State</option>
                        <option value="1">state 1</option>
                        <option value="2">state 2</option>
                    </select>';
        break;
        case 'state':
            $result = true;
            $html = '<select data-type="city">
                        <option value="-1">Select City</option>
                        <option value="1">city 1</option>
                        <option value="2">city 2</option>
                    </select>';
        break;
        default:
            $result = false;
            $html = '';
        break;
    }
}

$data = array(
    'result' => $result,
    'html' => $html
);

Добавих, за да ви дам представа как да го постигнете, това е самостоятелен пример и ще видите промените в кутията. Ще трябва да добавите PHP логиката, но исках да ви покажа по-добър подход, XD



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете дали низ съдържа числа

  2. По-добре ли е да използвате празна стойност като '' или като NULL?

  3. Как мога да емулирам WHERE 1 в динамична заявка?

  4. MySQL добавя колона NOT NULL

  5. Laravel - Querybuilder с присъединяване и concat