Как сделать правильно сохранение?

5f8828096a8e3448913364.png
Вся логика работает нормально, за исключением того что
в POST при открытие странички пусто, и при открытие страницы первый раз , все данные в БД стираются.
НО я не могу сделать проверку на пустое значение поскольку стирать телефоны совсем тоже нужно.
Как сделать проверку чтоб при первом открытие страницы не удалялись данные ?
Я так понимаю это или в пост как-то помещять значения бд до отрисовки, но как-то это нездорово, но и проверить массив на пустые значения я не могу.
<div class="m-grid__item m-grid__item--fluid m-wrapper">
		<? include 'core/GUI/subheader.php'; ?>
			<div class="m-content">
				<div class="m-portlet m-portlet--mobile">
					<div class="m-portlet__body">
					 <form method="POST" action="">
							<table class="table table-hover">
							  <thead class="thead-dark">
							    <tr>
							      <th scope="col">Название ЖК   в фидах</th>
							      <th scope="col">Привязан к ЖК</th>
							      <th scope="col">Новыый телефон</th>
							      
							      <th></th>
							    </tr>
							  </thead>
							  <tbody>
							<?
						$array = filter_input_array(INPUT_POST);
						$newArray = array();
						foreach (array_keys($array) as $fieldKey) {
						    foreach ($array[$fieldKey] as $key=>$value) {
						        $newArray[$key][$fieldKey] = $value;
						    }
						}  
							?>
											<?


												while($row = mysql_fetch_assoc($w))
												 	{
													 	 $sql = "
																	UPDATE
																	    `nk_xml_import`.`xml_places`
																	SET
																	    `nk_xml_import`.`xml_places`.`my_phone` = '{$array['my_phone'][$row['yandex_building_id']]}'
																	WHERE
																	    `nk_xml_import`.`xml_places`.`yandex_building_id` = '{$row['yandex_building_id']}' AND `nk_xml_import`.`xml_places`.`build_place` = '{$row['build_place']}' ";

														echo'  	 <tr>';
														echo'	 <td> <a href="https://naydikvartiru.ru/drupal/node/'. $row['build_place'].'"><i class="m-menu__link-icon flaticon-edit-1"> </i> '. $row['building_name'] .'</a> </td>';
														echo'	 	<td>  <a href="https://naydikvartiru.ru/drupal/node/'. $row['build_place'].'"> <button type="button" class="btn btn-outline-success btn-sm m-btn m-btn--custom">Drupal</button></a> 	</td></td>';
																if($array['my_phone'][$row['yandex_building_id']] == ''){ 
														echo'	  	<td> <input name="my_phone['.$row['yandex_building_id'].']" placeholder="+7 xxx xxx xx xx" type=" number" class="form-control m-input" value="'. $row['my_phone'] .'" data-col-index="0">  </td>';
												    			}else{
												         echo'	  	<td> <input name="my_phone['.$row['yandex_building_id'].']" placeholder="+7 xxx xxx xx xx" type=" number" class="form-control m-input" value="'. $array['my_phone'][$row['yandex_building_id']] . '" data-col-index="0">  </td>';	
												         }		
													 	echo'	</tr>';
													 	mysql_query($sql);
													} 
											?>
									  </tbody>
								</table>
					 		<div class="modal-footer">                
								<a href="#" class=" btn btn-secondary" role="button">Закыть</a>
								<button type="submit" onClick="window.location.href=window.location.href" class="btn btn-primary" >Сохранить</button>
							 </div>
						 </form>
					</div>
				</div>
			</div>
		</div>
	</div>
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Проверяйте $_SERVER['REQUEST_METHOD'] - там будет метод, которым открыли страницу. Если POST- значит отпраили форму - тогда и сохраняйте значение, если нет - то отрисовывайте форму со значениями из базы. Для предотвращения повторной отправки формы при обновлении страницы можно еще редирект сделать на ту же страничку после сохранения данных в БД, чтобы она открылась через метод GET
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Автор вопроса
Все вопрос решил вот так

if ($array['my_phone'][$row['yandex_building_id']] !== NULL) {
		 	mysql_query($sql);    
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽