2010-11-13 2 views
0

Я работаю над попыткой сайта социальной сети с родственником моего как побочного проекта. Я пишу большую часть этого по отдельности. Я сделал так, чтобы каждый пользователь хранился в таблице со своими данными (mysql), и я хочу сделать один оператор сравнения, чтобы, если поле пусто, чтобы изменить полученную переменную на «Нет данных».Присвоение значения по умолчанию пустому полю вызванной базы данных

Например: данные лица является

name=john 
age=34 
mobile number=(empty because it hasnt been entered) 

поэтому, когда я получить идентификатор ресурса с функцией mysql_func_assoc $ Результат = mysql_query ($ SQL);

$db_field = mysql_fetch_assoc($result); 
$szUser_name=$db_field['user_name']; 
$szAge=$db_field['user_age']; 
$szNumber=$db_field['user_number']; 

теперь я хочу, если заявление о признании пустое поле (что-то вроде если ($ szUser == "" || $ szAge == "" || $ szNumber == "")), а затем автоматически измените соответствующее поле на «Нет данных». я мог бы просто установить все значения = «Нет данных» выше и переназначить их функцией-ассоциированным, но я ищу опрятный простой вариант. Заранее спасибо

+0

Если вы использовали Smarty, это было бы просто: '{$ что-то | по умолчанию:» Нет данных '} '. –

ответ

0

Это, как правило, такие вещи, где вы используете тройной оператор:

$szNumber = (!empty($db_field['user_number'])) ? $db_field['user_number'] : 'No data'; 

Или, вы можете использовать полный, если/иначе блок.

Вы можете также саз в запросе:

SELECT CASE WHEN user_number = '' THEN 'No data' ELSE user_number END AS user_number 
FROM yourtable 

Но это может сделать запросы трудно читать.

2

Возможно, это функция, чтобы вы могли повторно использовать код?

function getField($fieldName, $fields, $default="No data") { 
    return empty($fields[$fieldName]) ? $default : $fields[$fieldName]; 
} 

Так

$szNumber=$db_field['user_number']; 

становится

$szNumber=getField('user_number', $db_fields); 

EDIT: Да, вы правы

// придираться: Добавить 'S' до $ db_field, а так он содержит несколько полей. Или переименуйте его. $ Db_row

+0

большое спасибо. я видел код, похожий на этот код на некоторых сайтах, но не был уверен, как его реализовать. –

+0

просто возится с этим кодом atm, является ли ближайшая скобка, которая должна быть в конце второй строки? im не пытаюсь вас исправить, я просто не уверен, что это такое для –

0

Лучший выбор - выбрать архитектуру на основе MVC для вашего приложения, перенести необработанные данные sql из контроллера в представление и решить, какие данные вывести на экран. Например, Zend Framework позволяет использовать классы, называемые «помощники вида», которые будут отображать «Нет данных» вместо пустых строк.

+0

Вам не нужно реализовывать шаблон MVC для этого. На самом деле это абсолютно не имеет никакого отношения к какому-либо шаблону проектирования. – Treffynnon

1

Если «пустые» поля фактически установлены NULL:

Для чистого решения MySQL вы можете использовать COALESCE, чтобы достичь того, чего вы хотите, предполагая, что «пустые» поля установлены на NULL.Например:

SELECT COALESCE(`user_name`, 'No data') AS `username` FROM `users` 

IFNULL работает аналогичным образом и, вероятно, лучше всего подходит для этой конкретной работы, чем COALESCE:

SELECT IFNULL(`username`, 'No data') AS `username` FROM `users` 

COALESCE может иметь много аргументов и просто возвращает первый NOT NULL аргумент, тогда как IFNULL только принимает два аргумента и принимает первый аргумент NOT NULL.

Если «пустые» поля фактически пустые строки:

Если значения являются пустыми строками, а не NULL, то вы можете использовать:

SELECT IF('' = `username`, 'No data', `username`) AS `username` FROM `users` 

Для получения дополнительной информации о функции MySQL IFsee the manual.

Если у вас есть сочетание обеих пустых строк и NULL:

Вы можете использовать:

SELECT IF('' = `username` OR `username` IS NULL, 'No data', `username`) AS `username` FROM `users` 
+0

Просто хочу отметить, что NULL! = '' (Пустая строка). И NULL даже не равен NULL, для записи. Вот почему я не предлагал COALESCE, так как OP сказал, что это «пустой [столбец]». –

+0

Следовательно, строка «Предполагая, что пустые» поля установлены в «NULL» – Treffynnon

+0

Я не исправлял вас, я просто что-то делал. –

Смежные вопросы