[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Циклы
gagger
Нужно вывести 4 элемента на 4 колонки...
Написал скриптик, но форич никак не хочет понимать, что мне нужно и выводит 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']; берешь ОДИН ЭЛЕМЕНТ!

for ($d=0; $d<=4; $d++) {

echo $ci;}
и выводишь его 4 раза....

Спустя 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 написал(а):
Давай посмотрим...

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 написал(а):
Я смотрю никто так и не подсказал ничего... sad.gif

Спустя 46 минут, 54 секунды (13.06.2011 - 17:25) gagger написал(а):
Вот добился чтобы скрипт выводил 4 ячейки массива на одну колонку, но почему-то теперь он повторяет лишь одно значение массива.

Есть предположение что это из за того, что в массиве очень много повторяющихся значений... использовал переменную 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 КОЛОНКИ?

Спустя 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 написал(а):
Вроде работает. Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.