Показать сообщение отдельно
  #7 (permalink)  
Старый 09.02.2016, 12:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от darius32bit
Только я не совсем понял куда мне девать этот код:
Выбросить и я сделал так выбросить тоже, ибо в приведенных мною примерах сервер отдает клиенту только данные для ячеек таблицы, а таблицу, вернее html-код содержимого TBODY изменяет Javascript при каждом запросе данных. Читать еще раз и внимательно.

Выводить html-код таблицы echo '<tr>'; echo '<td>' .$reg_list['region']. '</td>';, после чего отдавать json - exit(json_encode($out));, это не только глупость, но и причина ошибки на клиенте. Можно строить html-код таблицы и на сервере, отдавая его клиенту, но обмен данными с клиентом даже у вас в простейшем случае, это диалог, организовать его данными в html формате можно, но не нужно.

Сообщение от darius32bit
я оставил огромную запись с if'ами так как мне она более понятна
Выбросить в помойку и забыть этот бред. ) И не потому, что так нельзя, а потому, что это не логично. Поля overnight_period и umber_of_overnight должны иметь значение по умолча6нию, либо "нет", либо NULL, и скорее всего у вас "нет". А значит достаточно тогда проверять, если по условию:

if(!$reg_list['overnight_period']) $reg_list['overnight_period']="-";

Для таких выражений существует тернарный условный оператор (или еще называют условной записью), который краток, лаконичен и понятен. Но можно записать его и так:

$a = $a ?: $b;

что на пальцах означает - если булево значение $a равно true ($a не пустая, не равно 0 или null), то $a будет равна себе, не изменит значения, иначе $a будет рана $b. Ничего ужасного и непонятного в этом нет, конечно если не учить конструкции языка, то тогда будет страшно все. Писать же длинные портянки там, где можно сократить код за счет иных конструкций языка, по не знанию их это не оправдание.

А вообще это все в рамках запроса делать надо. Было сказано на примере, что в запросе нужно перечислить все поля данных, данные которых нужны и обязательно в том порядке, в каком они выводятся поколоночно в html-таблицу. А для этих двух полей в запросе получать значения по условию

SELECT region, school, ... , IF(overnight_period, overnight_period, "-") overnight_period, IF(number_of_overnight, number_of_overnight, "-") number_of_overnight, id FROM ....

Если значение для этих пустых полей как "-" будет всегда уместно, тогда вообще не нужно никаких условий с преобразованиями, достаточно в SQL таблицу указать этим полям значение по умолчанию "-".


Сообщение от darius32bit
А ещё из-за exit(json_encode($out)); у меня не грузиться нижняя часть сайта ну и сама форма
Это не из-за exit(), а следствие необдуманности логической структуры кода страницы. Если Ajax запрос обращается к той же самой странице, то код обработки Ajax запросов должен быть помещен в самом начале страницы:

<?php
//здесь проверка есть ли асинхронные POST запросы от клиента
//если есть, то обработка их выдача ответа и выход 
//а далее html-код страницы, который будет выводиться единожды
//GET запросом пользователя
?>
<html>
<head>
......
</head>
<bode>
......
</body>
</html>
Ответить с цитированием