Написал скриптик, но форич никак не хочет понимать, что мне нужно и выводит 4 колонки повторяя 4 раза весь массив... подскажите что не так делаю, 3 час мучаюсь....
$viborka = 'SELECT city FROM rest_tmp';
$sql = mysql_query($viborka);
while ($cities = mysql_fetch_assoc($sql)) {
if ($cities['city'] != ''){
$c[] = $cities['city'];
$c = array_unique($c);
$td = 4;
for ($i=0;$i<=24; $i++) {
if($i <= $td) {
echo '<td>';
foreach($c as $ci) {
for ($d=0; $d<=4; $d++) {
echo $ci;}
}
}
else
foreach ($c as $ci) { echo '</td>';}
}
}
}
Спустя 8 часов, 59 минут, 17 секунд (11.06.2011 - 09:36) Mirexzpalich написал(а):
Так правильно. $cities = mysql_fetch_assoc($sql) верент тебе одномерный массим и ты в нем $c[] = $cities['city']; берешь ОДИН ЭЛЕМЕНТ!
и выводишь его 4 раза....
for ($d=0; $d<=4; $d++) {
echo $ci;}
Спустя 5 минут, 33 секунды (11.06.2011 - 09:41) Mirexzpalich написал(а):
$viborka = 'SELECT city FROM rest_tmp';
$sql = mysql_query($viborka);
while ($cities = mysql_fetch_assoc($sql))
if ($cities['city'] != '') $c[] = $cities['city'];
$c = array_unique($c);
$td = 4;
echo '<table border="2"><tr>';
for ($i=0;$i<=$td; $i++)
echo '<td>'.$c[$i].'</td>';
echo '</tr></table>';
Вот так вот тебе выведет первые 4 уникальных записи поля city в таблице rest_tmp в 4 колонках
Спустя 32 минуты, 2 секунды (11.06.2011 - 10:13) gagger написал(а):
Нет, когда я беру выборку, то вытаскиваю вайлом и получаю в массив ВСЕ элементы смотрите внимательно.
[php]
while ($cities = mysql_fetch_assoc($sql))
if ($cities['city'] != '') $c[] = $cities['city'];
В моей конструкции он печатает 12 разных уникальных элемента в 4х ячейках, в вашем он печатает таки только 1 уникальный элемент.
Вся проблема в том, что я не могу понять как объяснить машине, что ненужно повторять, что нужно вывести всего 4 элемента, затем остановится, сделать новую колонку и продолжить печатать элементы....
Если бы конструкция не нуждалась в Foreach то:
$td = 4;
for ($i=0;$i<=24; $i++) {
if($i <= $td) {
echo '<td>';
for ($d=0; $d<=4; $d++) {
echo $d;}
}
else
foreach ($c as $ci) { echo '</td>';}
}
}
}
Вот такой скрипт бы выводил 4 элемента на 4 ячейки...
Спустя 12 минут, 24 секунды (11.06.2011 - 10:26) Mirexzpalich написал(а):
Давай посмотрим...
Т.о. у тебя перебирается все элементы, согласен... но каждый раз по 1-му элементу
while ($cities = mysql_fetch_assoc($sql)) { // открылось тело цикла
if ($cities['city'] != ''){ // открылась часть, которая будет выполняться, пр выполнении условия
$c[] = $cities['city'];
/////////////////////////////////////все это выполняется, если условие выполнилось
$c = array_unique($c);
$td = 4;
for ($i=0;$i<=24; $i++) {
if($i <= $td) {
echo '<td>';
foreach($c as $ci) {
for ($d=0; $d<=4; $d++) {
echo $ci;}
}
}
else
foreach ($c as $ci) { echo '</td>';}
}
///////////////////////////////////////////////
}// закончилась часть, выполняющаая при выполнении условия
}//Закончился цикл
Т.о. у тебя перебирается все элементы, согласен... но каждый раз по 1-му элементу
Спустя 2 дня, 6 часов, 11 минут, 54 секунды (13.06.2011 - 16:38) gagger написал(а):
Я смотрю никто так и не подсказал ничего...
Спустя 46 минут, 54 секунды (13.06.2011 - 17:25) gagger написал(а):
Вот добился чтобы скрипт выводил 4 ячейки массива на одну колонку, но почему-то теперь он повторяет лишь одно значение массива.
Есть предположение что это из за того, что в массиве очень много повторяющихся значений... использовал переменную array_unique но почему-то она не работает...........
Есть предположение что это из за того, что в массиве очень много повторяющихся значений... использовал переменную array_unique но почему-то она не работает...........
<?php
$city = 'city';
$tbl = 'rest_tmp';
$viborka = 'SELECT city FROM rest_tmp';
$sql = mysql_query($viborka);
$td = 4;
$c=array();
while ($cities = mysql_fetch_array($sql)) {
$c[]=$cities;
}
for ($i=0;$i<$td; $i++){
if ($c[$i] != '') {
echo '<td>';
for ($s=0;$s<$td; $s++){
echo $c[$i]['city'].'</br>';
}
echo '</td>';
}
}
?>
Спустя 19 минут, 41 секунда (13.06.2011 - 17:44) Mirexzpalich написал(а):
Так тебе что надо-то? "Нужно вывести 4 элемента на 4 колонки..." или
"4 ячейки массива на одну колонку" или ВСЕ УНИКАЛЬНЫЕ ГОРОДА ВЫВЕСТИ В 4 КОЛОНКИ?
"4 ячейки массива на одну колонку" или ВСЕ УНИКАЛЬНЫЕ ГОРОДА ВЫВЕСТИ В 4 КОЛОНКИ?
Спустя 39 минут, 14 секунд (13.06.2011 - 18:23) gagger написал(а):
Мне нужно вывести в четыре колонки по 4 разных города
Спустя 1 час, 26 минут, 22 секунды (13.06.2011 - 19:50) Mirexzpalich написал(а):
$sql = "SELECT `city` FROM `rest_tmp` GROUP BY `city`";
$result = mysql_query($sql);
$i=0;
echo '<table><tr><td>';
while($row = mysql_fetch_assoc($result))
{
if(!($i%4) && $i) echo '</td><td>';
echo $row['city'].'<br />';
$i++;
if($i==16)break;
}
echo '</td></tr></table>';
Если вам выведет 4 ряда городов по 4 штуки в ряду.
Но если вам надо больше, что это все легко модифицируется.
Спустя 17 часов, 42 минуты, 35 секунд (14.06.2011 - 13:32) gagger написал(а):
Вроде работает. Спасибо!