RotarYMonkeY
@RotarYMonkeY
Изучаю HTML, CSS, JS и PHP

Почему перестали записываться данные в БД после 200 строки?

Суть в следующем.
На странице выводятся пункты самовывоза из БД (пока 208 штук) в виде таблицы-формы.
На этой странице можно менять значения полей произвольно (выводятся в инпуты) и присутсвует кнопка "Сохранить".
Начиная с 200 пункта самовывоза и далее, данные не записываются в БД. Просто обновляется страница.
Вот код:
if ((isset($_REQUEST['point_id'][0])) && ($_REQUEST['point_id'][0]>0)) {
			 
			$sizearcount = sizeof($_REQUEST['point_id']);
			for($i=0;$i<$sizearcount;$i++)
			{
				 $this->db->query("UPDATE `" . DB_PREFIX . "pickup_point` SET point_iml = '" . $this->db->escape($_REQUEST['point_iml'][$i]) . "', 
					city_iml = '" . $this->db->escape($_REQUEST['city_iml'][$i]) . "' WHERE pickup_point_id = '" . (int)$_REQUEST['point_id'][$i] . "'");

			}
			 
		 }
		
		
		// Выдача
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "pickup_point ORDER BY pickup_point_id");
		$ords = $query->rows;
		
		foreach ($ords as $result) {
			
				$this->data['orders'][] = array(
				'point_id'      => $result['pickup_point_id'],
				'point_name'      => $result['point_name'],
				'point_addres'        => $result['point_address'],
				'point_iml'        => $result['point_iml'],
				'city_iml' => $result['city_iml']
			);
		}

<div class="content">
      <form action="" method="post" enctype="multipart/form-data" id="form">
        <table class="list">
          <thead>
            <tr>
              
              <td class="left">Название</td>              
              <td class="left">Адрес пункта</td>
              <td class="left">IML код пункта самовывоза</td>
			  <td class="left">IML регион пункта самовывоза</td>
			 
              <td class="right"><?php echo $column_action; ?></td>
            </tr>
          </thead>
          <tbody>

            <?php if ($orders) { ?>
            <?php foreach ($orders as $order) { 

			?>
            <tr>

              <td class="left">
			  <input type="hidden" name="point_id[]" value="<?php echo $order['point_id']; ?>">
			  <input type="text" name="point_name[]" value="<?php echo $order['point_name']; ?>">
			  </td>
              <td class="left">
			  <input type="text" name="point_addres[]" value="<?php echo $order['point_addres']; ?>">
			  </td>
              <td class="left">
			   <input type="text" name="point_iml[]" value="<?php echo $order['point_iml']; ?>" >
			   </td>
              <td class="left">
			  <input type="text" name="city_iml[]" value="<?php echo $order['city_iml']; ?>">
			  </td>
             

              <td class="right"><br>
				<input type="submit" value="Сохранить">
				
				</td>
            </tr>
            <?php } ?>
            <?php } else { ?>
            <tr>
              <td class="center" colspan="8"><?php echo $text_no_results; ?></td>
            </tr>
            <?php } ?>
          </tbody>
        </table>
      </form>


Собственно вопрос: как так?)
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Точная причина мне неизвестна, но есть сильное подозрение, что проблема связана с количеством UPDATE'ов.
Все изменения можно внести одним запросом. Использовать для этого можно, например, конструкцию
INSERT INTO ... ON DUPLICATE KEY UPDATE
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Tokenchik
Попробуйте увеличить время выполнения скриптов в настройках сервера.
И при распечатке в коде удобнее использовать не ваши конструкции в коде через фигурные скобки, а через двоеточие:
<?php if ($orders) : ?>
    <?php foreach ($orders as $order) :  ?>
        <?= $order['point_id'];  ?>
    <?php endforeach;  ?>
<?php else : ?>
<?php endif; ?>

Читаемость в разы выше, не нужно отлавливать скобки.
Вот тут про это
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы