2013-08-28 3 views
1

Хорошо, так что это беспокоило меня какое-то время. Я пытаюсь создать систему, которая будет отслеживать точки. Первое, что нужно увидеть на странице, - это выпадающее меню, из которого вы можете выбрать группу. Эта группа соответствует группе, которая может быть найдена в базе данных. Выбрав одну из этих групп, участники группы появятся в таблице. Эта таблица содержит несколько столбцов, каждая из которых (кроме столбца имен) содержит флажок. После нажатия на один (или несколько) из этих флажков и отправки формы я хотел бы иметь точки, соответствующие этим флажкам, добавленным в базу данных, и появляется одна и та же группа людей (поэтому все флажки должны быть очищены и выпадающее меню должно по-прежнему иметь одинаковое значение).Невозможно отправить форму с выпадающим меню

Ajax, вероятно, лучший способ справиться с этим, но, к сожалению, у меня нет опыта использования Ajax, поэтому я просто использую php с некоторым javascript. Я постараюсь разместить как можно меньше бит кода.

Это создает выпадающее меню:

echo "<form method=\"post\" action=\"page.php">"; 
echo "</br><select name=\"squad\" id=\"squad\" onchange=\"changeSquad(this.value)\">"; 
while($row = mysql_fetch_array($result)) 
    { 
    echo "<option value='". $row['squad_id'] . "'>" . $row['name'] . "</option>"; 
    } 
echo "</select>"; 

Функция changeSquad(), а затем открывает файл, в котором данные запрашиваются & таблица создана:

if($query_run = mysql_query($query)){ 
    $length=0;  
    echo "<table id='form'><tr> 
    <td>Member</td> 
    <td>1st box</td> 
    </tr>"; 
require 'nextfile.php'; 
} 

Это 'nextfile.php' содержит наиболее обработки контрольных точек, установки точек в них, добавления данных в базу данных и т. д. Самое главное, что он делает:

echo "</form><tr><td><input type='submit' name='submit' id='submit' value='Submit' /></td></tr>"; 
if(isset($_POST['submit'])){ 
-- Do all updates -- 
echo "<script> alert('Points have been updated!'); </script>"; 
} 

Я уже пытался добавить это сразу после кнопки отправки:

echo "<input type=\"hidden\" name=\"submitted\" id=\"submitted\" value=\"true\" />"; 

И сделал представить точки в конце концов (после нескольких корректировок в других файлах, очевидно), но не сделал бы другой группы в раскрывающемся меню, и просто удалите всю таблицу, в которой должны быть флажки. (Все, что появляется, - это выпадающее меню с ранее выбранной группой, именами участников и множеством флажков)

Не удалось кто-нибудь помогает мне? Я уже тестировал решения в течение 20 часов, поэтому я надеялся, что у кого-то есть хорошее предложение исправить эту проблему.

+0

Проведите следующие 20 часов обучения jQuery или другого фреймворка javascript. – Bruce

ответ

0

Я взял ваш сценарий: первый выход A значения из БД

<select name="squa" id="squad"> 
while($row = mysql_fetch_array($result)) 
    { 
    echo '<option value="'.$row['squad_id'].'">'.$row['name'].'</option>'; 
    } 
</select> 

Использование Ajax не сложно: // когда изменение называют запрос Ajax

$("#squad").change(function() { 
     var string = 'value='+$(this).val(); //value=to value of selected 
     $.ajax({ 
     type: 'POST', 
     data: string, //our value 
     url:url, //where to make request 
     beforeSend: function() { $('#somediv').html('Loading...'); }, 
     success:function(data){ 
      $('#somediv').html('').hide(); 
      $('#somediv').html(data); 
     },complete: function() {; 
      $('#somediv').show(); 
     },error: function(){ 

    } 
    }); 
}); 

В URL (Php файл) Сделайте свою таблицу:

Следующий файл

$value = $_POST['value']; //GET THe value that has been choosen in select 
// do whatever you want to do with this value in php and the result just 

echo $result; 

Если вы хотите, чтобы повторно запустить массив

In Jquery $.ajax specify it dataTYpe:'json', 
In php: 
$result = array(
    'st'=>$value, 
    'mp'=>$value 
); 
echo json_encode($result); 

Чтобы запустить Копание массива в JQuery использования

$('#somediv').html(data.mp+' - '+data.st); 

И он будет автоматически отображаться на странице в #somediv ...

Я дал Идею попробовать google больше о jquery, это легко, когда вы это понимаете.

+1

Это имеет смысл, спасибо, что нашли время, чтобы помочь мне. Я попробую с тем, что вы предложили, и сообщите, если я застрял! – user2665801

Смежные вопросы