Javascript MySQL интерфейс?

0

Я вернусь через систему нумерации документов в Интернете с нескольких недель назад. Чтобы подвести итог, пользователь вводит в проект, номер класса, базы и тире (PPP-CCC-BBBB-DDD), затем он добавляется в базу данных mysql. Теперь большинство номеров doc идут по порядку в соответствии с изменениями. IE: Документ 1465-630-0001-000 становится, после пересмотра, 1465-630-0002-000.

Босс хочет, чтобы система автоматически заполняла введенное текстовое поле для базового номера, если оно обнаруживает, что пользователь вводит пересмотренный документ. Поэтому, если пользователь вводит в поле 1465 в поле проекта и 630 в поле класса, система должна автозаполнять базовое поле следующим доступным числом. В предыдущем примере это было бы 0002.

Он должен иметь возможность искать базу данных для первых двух полей, чтобы он мог найти следующий доступный. Есть ли способ сделать это с помощью javascript или что-то еще? SO был действительно полезен с моим последним вопросом javascript, относящимся к этой системе.

Вот немного моего кода, если это помогает:

`? >

<div id='preview'></div>
<form id='item' action="submit.php?item=1" method="post">
Enter Title:<input type="text" name="title" size="20"><BR>

Choose Project Code:
<SELECT NAME="project">
        <OPTION VALUE="">Project...
        <?
        $query  = "SELECT * FROM project ORDER BY project asc";
        $result = mysql_query($query);
        while($row = mysql_fetch_assoc($result))
            {
            $num = ($row['project']);
            $name = ($row['description']);
            ?>
            <OPTION VALUE="<?=$num?>" ><? echo"{$num}" . " | " . "{$name}";?>
            <?
            }
            ?>    
</SELECT><BR>

Choose Class Code:
<SELECT NAME="class">
            <OPTION VALUE="">Class...
        <?
        $query  = "SELECT * FROM class ORDER BY class asc";
        $result = mysql_query($query);
        while($row = mysql_fetch_assoc($result))
            {
            $num = ($row['class']);
            $name = ($row['description']);
            ?>
            <OPTION VALUE="<?=$num?>" ><? echo"{$num}" . " | " . "{$name}";?>
            <?
            }
            ?> 
</SELECT><BR>

Assigned Base Number:<input type="text" name="base" size="20"><BR>
Enter Dash Number:<input type="text" name="dash" size="20"><BR>
Enter Comments:<input type="text" name="comment" size="40"><BR>
<input type="hidden" name="item" value="1"/> `

Просто простая форма ввода html/php с списком кода проекта и класса, сгенерированным из базы данных, относящейся к каждому.

Спасибо за любую помощь-Thomas

Теги:

2 ответа

1
Лучший ответ

Update:
Таким образом, вам понадобится сделать вызов AJAX (см. Пример в моем комментарии ниже) к некоторому PHP script, который будет извлекать базовое значение, которое вы хотите, а затем возвращает его в запрос AJAX. Как только запрос получит ответ, вы можете использовать эти данные, чтобы заполнить значение, как я изначально сказал...

На стороне примечания, так как пример, который я вам дал, представляет собой функцию jQuery AJAX, вы должны, вероятно, проверить, как использовать jQuery для выбора элементов на странице, вместо использования прямого JS.

например. для получения по ID и замены значения:

    $("#base").attr('value', valueFromAjaxCall);

Как изменить значение с помощью JS:
Если вы используете PHP для получения базового значения, которое хотите заполнить в поле, вы можете заполнить его значением:

    var baseField = document.getElementsByName("base")[0];
    baseField.value = <?=$baseValue?>;

Вызов getElementsByName() возвращает массив, поэтому вам нужно индексировать нужное поле. Я хотел бы предложить указать <input> идентификатор, чтобы вы могли использовать document.getElementById(). Вы бы сделали что-то вроде:

    <input type="text" id="base" size="20">

и JS для получения входного элемента будет:

    var baseField = document.getElementById("base");

... поэтому нет необходимости индексировать, если вы назвали любые поля с тем же именем.

** Не уверен в синтаксисе PHP.

  • 1
    Будет ли это возможно, если пользователь ничего не отправит? Мол, сможет ли он пройти через базу данных и найти следующий номер, просто введя пользовательский тип в поля и ничего не передавая?
  • 0
    Вы правы. Вам нужно будет сделать AJAX-вызов некоторого PHP-скрипта, который запускает и получает необходимое базовое значение, а затем возвращает его в запрос AJAX. Я бы предложил вызов jQuery следующим образом: api.jquery.com/jQuery.ajax/#example-2
Показать ещё 1 комментарий
0

Ajax-вызов фокуса 3-го поля, возвращающего серверу значения первых двух полей?

во-первых, вы, вероятно, захотите использовать jQuery, поскольку он имеет большую поддержку, прост в использовании и будет хорошо знаком с тем, кто использует PHP.

поэтому включите javascript-код jQuery, который вы можете получить: http://jquery.com/

тогда возьмите форму, которая выглядит так:

{form}
<input type=text id='major' name='major' value=''>
{Or a select, your choice}
<input type=text id='minor' name='minor'>
{or a select again}
<input type=text id='sequence' name='sequence' onFocus='getNextSequence()'>
...
{/form}

в вашей голове, у вас есть javascript:

 function getNextSequence(){  
    var major=$('#major').val();  
    var minor=$('#minor').val();  
    if(!major){  
        alert('Select a major version#');  
        $('#major').focus();  
        return(false);  
    }  
    if(!minor){  
        alert('Select a minor version#');  
        $('#minor').focus();  
        return(false);  
    }  
    $.getJSON('http://url.to.getnextNumber.php',
        {major:major,minor:minor},
        function(data){  
            if(!data.error){  
                $('sequence').val(data.nextSequence);  
            }else{  
                alert(data.error);  
            }  
        }
    });  
}  

вызов jQuery getJSON перезвонит вашему URL с двумя переменными $_POST, основными и второстепенными. сделайте свой запрос, сохраните результат как $result=array('nextSequence'=>$x,'error'=>'false'); и преобразовать его в JSON с помощью echo json_encode ($ result); не включайте ЛЮБЫЕ заголовки или любой другой контент в выходном файле этого файла, а jQuery будет вытаскивать правильное значение и вставлять его там, где он должен был спать

  • 0
    Я не очень знаком с AJAX. И под этим я имею в виду, что у меня нет никакого опыта в этом вообще. Любые хорошие учебники для этого метода?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню