2011-11-14 5 views
1

У меня есть таблица html, которую я заполняю PHP, теперь она заполнена, и у нее есть кнопка с названием «обновление», есть также поле для каждой строки, которое имеет 'client_id', также есть поля с текстовыми полями.Как сохранить только идентификатор строки, опубликованной

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

Код ниже

print("<table id='results'><tr><th>ID</th><th>Image</th><th>Name</th><th>Price</th><th>Price Label</th><th>Description</th><th>Update</th></tr>"); 

while($row2 = mysql_fetch_array($result2)){ 
    $client_id = $row2["client_id"]; 
    $client_name = $row2["client_name"]; 
    $client_disc = $row2["client_disc"]; 
    $client_price = $row2["client_price"]; 
    $client_image = $row2["client_image"]; 
    $client_price_label = $row2["client_price_label"]; 

    print("<tr>"); 
    print("<td>"); 
    print("<p style='font-size:14px; color:blue; padding:0;'>$client_id</p>"); 
    print("</td>");   
    print("<td>"); 
    print("<img class='custom_rate' alt='' src='$client_image' />"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<input type='text' value='$client_name' name='clientname'/>"); 
    print("</td>"); 
    print("<td>"); 
    print("<input type='text' value='$client_price' name='clientprice'/>"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<input type='text' value='$client_price_label' name='clientpricelabel'/>"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<textarea cols='15' rows='2' name='description'>$client_desc</textarea>"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<input type='submit' value='Update' name='update'/>"); 
    print("</td>"); 
    print("</tr>"); 
} 

print("</table>"); 
+1

добавить тег '

' в эту строку? –

+0

@ Col.Shrapnel: Где его можно разместить там, где он действителен? – Eric

+0

Форма способ, не работает .. Я думаю, что другой из include в другой файл вызывает проблему, но .. как я могу это сделать с Ajax или Json .. или просто, если бы я мог просто получить значения когда в этой строке нажата кнопка «Обновить». Я мог бы просто сделать свой материал в php. – user710502

ответ

1

Вы можете сделать каждую строку формы. Однако это будет недействительным HTML. Хотя, это все равно будет работать.

Я бы создал некоторый javascript, чтобы вытащить все значения входов внутри строки в один объект json, а затем отправить этот объект на сервер через ajax.

jQuery будет моей библиотекой выбора для этого, если у вас нет более крупного приложения.

Надежда, что помогает ...

Обновлено: предоставляется пример кода для представления JSON для ряда ...

<script> 
    $(function(){ 
     $('.submit_button').click(function(){ 

      var form_values = {}; 

      $(this).closest('tr').find('input, select').each(function(){ 
       form_values[ $(this).attr('name') ] = $(this).val(); 
      }); 
      if(form_values.undefined){ 
       delete form_values.undefined; 
      } 

      $.post("/test.php", 
       form_values, 
       function(data){ 
        //success 
        alert(data); 
       }, 
       "json" 
      ); 

     }); 
    }); 
</script> 

Update:

Я не был доволен моим предыдущим ответом , поэтому я создал автономный html-файл, чтобы продемонстрировать, что он работает.

https://gist.github.com/1367465

Вы не можете обернуть тег вокруг, как и другие предполагают, потому что это будет нарушать HTML таблицы.

+0

Можете ли вы дать мне представление о том, как я мог бы достичь этого, используя JSON и Javascript? может быть, небольшой пример, если его не так много спросить? – user710502

+0

Как это работает для вас? – Homer6

+0

Большое вам спасибо, поэтому, если моя кнопка обновления называется «обновление», как бы я изменил этот код, чтобы он использовал Update и где он знал бы каждое поле строки? извините новичок в этом :) – user710502

0

Оберните все свои отдельные строки отдельными <form> тегами. Когда вы отправите, будет отправлено только одно сообщение <form>.

Другое решение - вместо этого вы можете использовать AJAX.

0

Вы должны создать <form> для каждой строки и пунктов действия: example.php?client_id=x. В сценарии PHP You вы можете проверить, что GET Param и измененные значения (или вы просто используете client_id, отправленный POST).

Нет другого способа использования афаика.

0

Сделайте отдельную форму с уникальным именем/идентификатором для каждой строки. И отправить на JavaScript с помощью нажатия кнопки (представляемого имени формы/идентификатор соответствующей строки.)

function submitrow(id) 
{ 
    document.forms[id].submit(); 
} 
0

Я предполагаю, что вы хотите, идентификатор строки, для которой кнопка обновления щелкнуло, так что вы можете манипулировать идентификатор на стороне сервера. Может быть, лучше хав функции Javascript

function update (id) 
{ 

} 

затем вызвать эту функцию на OnClick случае кнопки отправки и передать идентификатор в качестве параметра.

вероятно, это то, как вы можете сделать это, но вы можете проверить синтаксис

print("<input type='submit' value='Update' name='update' onclick=JavaScript:update('$client_id')/>"); 

функция обновления будет называться, то установите значение идентификатора в запросе и отправить форму.

0

У вас есть несколько подходов здесь:

  1. сделай каждую строку формы, поэтому только эта строка получает представлены
  2. Есть форма полностью состоит из скрытых полей. Добавьте обработчик события javascript к каждой кнопке отправки, которая копирует поля из таблицы в эту форму и отправляет ее
  3. Вариант № 2 вместо копирования полей в скрытую форму создает запрос AJAX для отправки данных только для одного ряд
+0

Я бы с удовольствием сделал запрос AJAX просто не уверен, как .. Спасибо – user710502

0

, как я понимаю, вы хотите, чтобы обновить отдельные записи нажатием на кнопку обновления, вы также можете сделать это с JQuery .each() событие поможет вам обновить отдельный результат. с помощью .each() запустить цикл и получить отдельную строку с помощью кнопки обновления .. но не уверен, что будет работать с использованием в <input type="submit" name="update" value="Update">

<input type="button" name="update" value="Update">

0
 print("<form name="" action="your method to be triggered or url">" method="POST"); 
    print("<tr>"); 
    print("<td>"); 
    print("<p style='font-size:14px; color:blue; padding:0;'>$client_id</p>"); 
    print("</td>");   
    print("<td>"); 
    print("<img class='custom_rate' alt='' src='$client_image' />"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<input type='text' value='$client_name' name='clientname'/>"); 
    print("</td>"); 
    print("<td>"); 
    print("<input type='text' value='$client_price' name='clientprice'/>"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<input type='text' value='$client_price_label' name='clientpricelabel'/>"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<textarea cols='15' rows='2' name='description'>$client_desc</textarea>"); 
    print("</td>"); 
    print("<td width='100px'>"); 
    print("<input type='submit' value='Update' name='update'/>"); 
    print("</td>"); 
    print("</tr>"); 
    print("</form>"); 

, если передать URL, то вы можете согласовать идентификатор клиента и отправить его.

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