Добавление в базу из текстовых полей

Kare

Новичок
Есть скрипт
PHP:
 <?php
  
  $query = "SELECT * FROM products 
            ORDER BY name";
  $prd = mysql_query($query);
  if(!$prd) exit(mysql_error());
 
  if(mysql_num_rows($prd) > 0)
  {
    echo "<form method=post>";
    echo "<table border=1>
            <tr>
              <td> </td>
              <td>Название</td>
              <td>Цена</td>
              <td>Оценка</td>
              <td>Количество</td>
            </tr>";
    $i = 0;
    while($product = mysql_fetch_array($prd))
    {
      echo "<tr>
              <td><input type=checkbox name=product[] value=$product[id_product]></td>
              <td>$product[name]</td>
              <td>$product[price]</td>
              <td>$product[mark]</td>
              <td>$product[count]</td>
            </tr>";
      $i++;
    }
    echo "</table>";
    echo "</br><input type=submit name=send value=Удалить>";
    echo "</form>";
  }

  if(!empty($_POST))
  {
   
    $temp = array();
    foreach($_POST['product'] as $id_product)
    {
      
      if(preg_match("|^[\d]+$|",$id_product))
      {
        $temp[] = $id_product;
      }
    }
   
   БЛОК АПДЕЙТА......
    {
      echo "<HTML><HEAD>
            <META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'>
            </HEAD></HTML>";
    }
  }
?>
При нажатии на чекбокс все нормально, хотелось добавить вместо поля count текстовые поля, чтоб при выборе определенных чекбоксов и вносом данных в текстовые поля эти данные заносились в базу. Как показано на рисунке
 

Вложения

Avron2

Новичок
PHP:
 while($product = mysql_fetch_array($prd))
    {
  echo "<form method=post>";
    echo "<table border=1>
      echo "<tr>
              <td><input type=checkbox name=product[] value=$product[id_product]></td>
              <td>$product[name]</td>
              <td>$product[price]</td>
              <td>$product[mark]</td>
              <td><input name=count[] type=text value=$product[count] /></td>
            </tr>";
      $i++;
    }
А дальше Ajax. Делаешь метод на js, который реагирует на событие onBlur текстового поля. При срабатывании этого события, нужно проверить флажок, если он включен то изменяем в БД. А лучше еще сделать метод, который будет реагировать на клик в чекбокс. Если флажок включили, значит отобразить текстовое поле для ввода. По умолчанию сделать его не видимым.
Почитайте об Ajax.

Можно, кончено сделать редактирование только средствами PHP, но для этого нужно будет всю таблицу заключить в тегу <form action=changeCount.php> </form> в конце формы разместить <input type=submit name=changeCount value=Применить>

В changeCount.php работайте с $_POST переменными. Проверяйте значение галочек и изменяйте в БД соотвественные им значения полей.
 

KorP

Новичок
А дальше Ajax. Делаешь метод на js, который реагирует на событие onBlur текстового поля. При срабатывании этого события, нужно проверить флажок, если он включен то изменяем в БД. А лучше еще сделать метод, который будет реагировать на клик в чекбокс. Если флажок включили, значит отобразить текстовое поле для ввода. По умолчанию сделать его не видимым.
И при чём тут аякс? обычный жс.

можно не скрывать поля, если например понадобится редактировать не одно, а 3 поля - каждое открывать - гемор, проще сделать сразу инпуты, и одно скрытое поле, при onChange записывать id записи в это поле и передавать обработчику, которые их разберёт и заапдейтит только поля с нужным id
 

Kare

Новичок
а без js никак? Просто без текстого поля чекбокс отрабатывает нормально (по id).
 

KorP

Новичок
можно без js, просто тогда ты будешь апдейтить автоматом все поля, ладно если их 10, а если 1000? зачем лишняя нагрузка?
 

KorP

Новичок
ну главное что теперь ты понимаешь - что будет если не будет JS, а как в итоге делать - дело твоё
 

Kare

Новичок
это, да! А php как мне это сделать? Я просто в ступоре
 

Avron2

Новичок
Аякс при том, чтобы это все происходило без покидания текущей страницы сайта, а обычным js мы может только оперировать визуализацией объектов страницы. Ведь приятно когда ты изменил текстовое поле и оно уже в БД изменилась без кнопки и без покидания страницы сайта. То ли дело отправить запрос на имзменения текущей записи, то ли потом проверять значения флажков, затем в цикле формировать запрос. Для этой задачи я бы предпочел Ajax. Это мое субъективное мнение.
 

KorP

Новичок
Аякс при том, чтобы это все происходило без покидания текущей страницы сайта, а обычным js мы может только оперировать визуализацией объектов страницы. Ведь приятно когда ты изменил текстовое поле и оно уже в БД изменилась без кнопки и без покидания страницы сайта. То ли дело отправить запрос на имзменения текущей записи, то ли потом проверять значения флажков, затем в цикле формировать запрос. Для этой задачи я бы предпочел Ajax. Это мое субъективное мнение.
апдейтишь ты подряд 20 полей - запаришься чекбоксы селектить ибудет туда-сюда куча запросов + куча ненужных совершенно селектов, имхо - лучше через submit

апдейтить нужно будет не все, а только те, у которых checkbox checked.
ну да, в массив же запихать и по id разобрать, что то торможу
 
Сверху