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

  • Автор темы Автор темы Kare
  • Дата начала Дата начала

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 текстовые поля, чтоб при выборе определенных чекбоксов и вносом данных в текстовые поля эти данные заносились в базу. Как показано на рисунке
 

Вложения

  • 111.jpg
    111.jpg
    65,6 KB · Просмотры: 3
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 переменными. Проверяйте значение галочек и изменяйте в БД соотвественные им значения полей.
 
А дальше Ajax. Делаешь метод на js, который реагирует на событие onBlur текстового поля. При срабатывании этого события, нужно проверить флажок, если он включен то изменяем в БД. А лучше еще сделать метод, который будет реагировать на клик в чекбокс. Если флажок включили, значит отобразить текстовое поле для ввода. По умолчанию сделать его не видимым.
И при чём тут аякс? обычный жс.

можно не скрывать поля, если например понадобится редактировать не одно, а 3 поля - каждое открывать - гемор, проще сделать сразу инпуты, и одно скрытое поле, при onChange записывать id записи в это поле и передавать обработчику, которые их разберёт и заапдейтит только поля с нужным id
 
а без js никак? Просто без текстого поля чекбокс отрабатывает нормально (по id).
 
можно без js, просто тогда ты будешь апдейтить автоматом все поля, ладно если их 10, а если 1000? зачем лишняя нагрузка?
 
ну главное что теперь ты понимаешь - что будет если не будет JS, а как в итоге делать - дело твоё
 
Аякс при том, чтобы это все происходило без покидания текущей страницы сайта, а обычным js мы может только оперировать визуализацией объектов страницы. Ведь приятно когда ты изменил текстовое поле и оно уже в БД изменилась без кнопки и без покидания страницы сайта. То ли дело отправить запрос на имзменения текущей записи, то ли потом проверять значения флажков, затем в цикле формировать запрос. Для этой задачи я бы предпочел Ajax. Это мое субъективное мнение.
 
Аякс при том, чтобы это все происходило без покидания текущей страницы сайта, а обычным js мы может только оперировать визуализацией объектов страницы. Ведь приятно когда ты изменил текстовое поле и оно уже в БД изменилась без кнопки и без покидания страницы сайта. То ли дело отправить запрос на имзменения текущей записи, то ли потом проверять значения флажков, затем в цикле формировать запрос. Для этой задачи я бы предпочел Ajax. Это мое субъективное мнение.
апдейтишь ты подряд 20 полей - запаришься чекбоксы селектить ибудет туда-сюда куча запросов + куча ненужных совершенно селектов, имхо - лучше через submit

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