2013-04-06 3 views
0

Я хочу, чтобы сделать решение для редактирования рядного с помощью PHP, JQuery, AjaxJquery Получить входное значение из цикла

Моего цикла:

$a=0; 

    while($row = $db->fetch_array($res)){ 
    if($a%2==1){ 
    $class = 'class="even"'; 
    } 
    else{ 
    $class = 'class="odd"'; 
    } 
    $a++; 

Html Таблица:

<tr <?php echo $class; ?>> 
    <td class="th table-check-cell sorting_1"><input type="checkbox" name="zones_id[]" value="<?php echo $row['zone_id']; ?>"></td> 
    <td><?php echo $a; ?></td> 
    <td><?php echo $row['zone_name']; ?></td> 
    <td><?php echo $row['zone_position']; ?></td> 
    <td><?php echo $row['status']; ?></td> 

    <td class="table-actions"> 
    <a href="javascript:void(0);" title="Edit" class="with-tip" onclick="slidemenu('innerlinks_<?php echo $a; ?>')"><img src="images/icons/fugue/pencil.png" width="16" height="16"></a></td> 
    </tr> 

    <tr style="display:none;" id="innerlinks_<?php echo $a; ?>" class="sub"> 
    <td><?php echo $a; ?></td> 
    <td><input type="checkbox" /></td> 
    <td><input type="text" class="zn" name="zone_name" id="zone_name" value="<?php echo $row['zone_name']; ?>" /></td> 
    <td><input type="text" name="zone_pos" id="zone_pos" value="<?php echo $row['zone_position']; ?>" /></td> 
    <td colspan="2"><a><?php echo $row['zone_name']; ?></a></td> 
    </tr> 



    <?php } ?> 



    function slidemenu(id){ 
     $('#'+id).slideToggle(); 
     } 





    ///second proccess 

    $(".sub").click(function(){ 
     $(this).closest('tr').find("input,select").each(function() { 




     $.ajax({ 
      type: "POST", 
      url: "<?php echo SITE_URL .'controlls/zone_add.php'; ?>", 
      data: datastring, 
      success: function (data) { 

      alert("Details saved successfully!!!"); 
      } 
      }) 

      }); 

    }); 

Я хочу два вещи:

Скрыть строку данных и показать строку для редактирования. Во-вторых, как получить все выбора входа радио и т.д. с помощью есть имя для запроса Ajax

+0

С чем вы столкнулись? – Marshmellow1328

+0

для получения определенных значений полей строки – Zia

ответ

1

Что вам нужно сделать, это сгенерировать уникальный идентификатор для каждой строки в таблице - и дать строку таблицы, идентификатор:

<tr id="<?= $id ?>" class="<?= $class ?>"> 

Затем вы можете найти эту строку с помощью jQuery $("#<?= $id ?>") и манипулировать содержимым строки, чтобы заменить статический текст элементами управления вводом и кнопками отправки/отмены.

Кроме того, если вы хотите отправить, вы можете получить входные значения, запросив их с помощью jQuery. Например:

$("tr#<?= $id ?> input#zone_name").value(); 

Ключ должен дать каждой строке уникальный идентификатор, который вы, возможно, уже есть в базе данных ...

+0

Где я могу поместить php в jquery? Код jquery в php-цикле? – Zia

+0

Нет, для каждой строки вы определяете события onclick, чтобы содержать идентификатор строки. Таким образом, он становится входным для обработчиков событий. A 'Edit row' для каждой строки. «ShowEditControls» может быть глобальным и независимым от строки. Затем сделайте это аналогично для каждого элемента управления, необходимого строке, и для каждой другой строки в таблице. – fredrik

1

Вы не хотите, чтобы сделать AJAX POST для каждого поля ,

$(".sub").click( 
    function() { 
     var data = {}; 
     $(this).closest("tr").find("input,select").each(
      function() { 
       data[$(this).attr("name")] = $(this).val(); 
      } 
     ); 
     $.post("your URL", data, function(data) { alert("Successful!"); }); 
    } 
); 

Я не смотрел на селекторов, которые у вас были. Я предполагаю, что вы их правильно. Я просто сосредоточился на процессе захвата значений из каждого поля, добавления его в объект JavaScript и публикации его через AJAX.

+0

Ваш ответ почти правильный, но вы создаете массив данных, который возвращает все значения входных данных страницы. Я делаю строку для данных типа: var data = ''; и добавьте в него значения без массива: var data + = $ (this) .attr ("name") = $ (this) .val(); В последнем я удаляю запятую javascript slice и выполнил свою работу. Спасибо за ответ. – Zia

+0

Зачем конкатенировать только, чтобы нарезать позже? – Marshmellow1328

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