X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Расставить запятые
macbeth9
macbeth9
Topic Starter сообщение 17.8.2012, 20:20; Ответить: macbeth9
Сообщение #1


Привет всем! Появилась такая задача.

Есть таблица, в ней пять полей, например field1,field2,field3,field4,field5 тип полей varchar.

Пользователь заполняет поля, любое из них, одно заполняет обязаетльно и остальные как захочет.

Мне нужно вывести потом эти поля таким образом. Например он заполнил их так.

Field1 - Поле 1
...и далее

Я делаю условия if (!empty($list['field1'])) $value1 = $list['field1'];
И так с другими четырьмя.

Потом делаю так echo "".$value1." ".$value2." ".$value3." ".$value4." ".$value5.""

Если заполнено одно поле то выходит например : поле1
Если три заполнено то: поле1 поле2 поле5

И мне надо их вывести так чтобы было: поле1, поле2, поле5

Расставить запятые. Пробовал str_replace, заменял пробелы, но тогда он все ровно добавляет запятые если записей нет, потом что пробелы есть. Как быть?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Hombre
Hombre
сообщение 17.8.2012, 20:26; Ответить: Hombre
Сообщение #2


Я так понимаю про массивы Вы ничего не слышали?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
macbeth9
macbeth9
Topic Starter сообщение 17.8.2012, 20:31; Ответить: macbeth9
Сообщение #3


тупанул)) думаешь как такое возможно
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
macbeth9
macbeth9
Topic Starter сообщение 17.8.2012, 20:54; Ответить: macbeth9
Сообщение #4


сделал так

Помните что некотроы значений в массиве и не может быть, потому что они не обязательные. Сегодня голова не варит после вчера, так что прошу помощи.

[PHP]
$a = array($wall, $balcony, $door, $fence, $loggia);
$type_advr = join(',', $a);
$type_advr = trim($type_advr, ",");
[/PHP]

Может вывести так Стена,Балкон - все норм, потому что они стоят рядом $wall, $balcony
А может и так Балкон,,,Лоджия

Что делать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
r3ntg3n
r3ntg3n
сообщение 17.8.2012, 21:22; Ответить: r3ntg3n
Сообщение #5


[PHP]$items = array();
foreach ($list as $val)
{
if (!empty($val)) $items[] = $val;
}
echo implode(', ', $items);[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
macbeth9
macbeth9
Topic Starter сообщение 17.8.2012, 23:08; Ответить: macbeth9
Сообщение #6


у меня идет цикл while, а в нем код некорректно работает.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
r3ntg3n
r3ntg3n
сообщение 17.8.2012, 23:48; Ответить: r3ntg3n
Сообщение #7


Ну, так покажите свой цикл, посмотрим, чего у вас там некорректно работает.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 17.8.2012, 23:53; Ответить: Arks
Сообщение #8


циклы в циклах это плохо. Как правило они предполагают неумелую замену группировки. Но это так, к слову.. без кода ничего не ясно.

(macbeth9 @ 18.8.2012, 02:08) *
цикл while, а в нем код некорректно работает.

бугага... код наверное некорректно работает все-таки из-за кода а не из-за цикла, не? :hihi:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
macbeth9
macbeth9
Topic Starter сообщение 17.8.2012, 23:57; Ответить: macbeth9
Сообщение #9


[PHP]


$sql_list_city = $connect->prepare("SELECT `city`.`name_".lang_query($_SESSION['lang'])."`,`country`.`name_".lang_query($_SESSION['lang'])."`,`region`.`region_name_".lang_query($_SESSION['lang'])."`,`list`.`id`,`list`.`price`,`list`.`street`,`list`.`price`,`list`.`price_date`,`list`.`stars`,`list`.`img_dir`,`list`.`currency`,`list`.`wall`,`list`.`door`,`list`.`fence`,`list`.`loggia`,`list`.`balcony` FROM `list` INNER JOIN `country` ON `country`.`id`=`list`.`country` INNER JOIN `city` ON `city`.`id`=`list`.`city` INNER JOIN `region` ON `region`.`id`=`list`.`region` WHERE `list`.`city` = ? AND `list`.`displaynone_admin` = ? ORDER BY RAND() DESC LIMIT 4");
$sql_list_city->execute(array($city_id['id'], 0));
if ($sql_list_city->rowCount() > 2) {
while ($list = $sql_list_city->fetch()) {

if ($list['wall'] == 1) {$wall = lang('wall');}
if ($list['balcony'] == 1) {$balcony = lang('balcony');}
if ($list['door'] == 1) {$door = lang('door');}
if ($list['fence'] == 1) {$fence = lang('fence');}
if ($list['loggia'] == 1) {$loggia = lang('loggia');}

$a = array($wall, $balcony, $door, $fence, $loggia);
$type_advr = join(',', $a);
$type_advr = trim($type_advr, ",");

echo $type_advr;

}
}

[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
r3ntg3n
r3ntg3n
сообщение 18.8.2012, 9:29; Ответить: r3ntg3n
Сообщение #10


[PHP]/*
* зачем каждый раз обрабатывать это выражение,
* если можно один раз записать результат в переменную
*/
$lang = lang_query($_SESSION['lang']);

/*
* используйте синонимы в длинных запросах,
* вам же самому потом будет удобнее разбираться
*/
$sql_list_city = $connect->prepare("
SELECT
`ct`.`name_".$lang."`,
`c`.`name_".$lang."`,
`r`.`region_name_".$lang."`,
`t`.`id`,
`t`.`price`,
`t`.`street`,
`t`.`price`,
`t`.`price_date`,
`t`.`stars`,
`t`.`img_dir`,
`t`.`currency`,
`t`.`wall`,
`t`.`door`,
`t`.`fence`,
`t`.`loggia`,
`t`.`balcony`
FROM `list` as `t`
INNER JOIN `country` as `c` ON `c`.`id`=`t`.`country`
INNER JOIN `city` as `ct` ON `ct`.`id`=`t`.`city`
INNER JOIN `region` as `r` ON `r`.`id`=`t`.`region`
WHERE `t`.`city` = ? AND `t`.`displaynone_admin` = ?
ORDER BY RAND() DESC LIMIT 4
");
$sql_list_city->execute(array($city_id['id'], 0));

$keys = array('wall', 'balcony', 'door', 'fence', 'loggia');

if ($sql_list_city->rowCount() > 2) {
/*
* здесь, наверное, все-таки нужна проверка на то, что выборка закончилась,
* fetch() должен вернуть false, если мне не изменяет память
*/
while (($list = $sql_list_city->fetch()) != false) {
$a = array();
foreach ($keys as $key) {
if (!empty($list[$key]))
$a[] = $list[$key];
}
echo implode(', ', $a).'<br/>';
}
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Буквы, запятые, точки превращаю в чудо строчки.
Напишу текст увлекательный, для клиентов привлекательный.
15 Vinessa 8231 20.5.2016, 23:46
автор: parazit


 



RSS Текстовая версия Сейчас: 24.4.2024, 13:31
Дизайн