[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите как доработать скрипт
Markus111
Вот мой скрипт
<table>
<?php
$tur = '';
$d = '';
while($myrow=$anons->fetch(PDO::FETCH_ASSOC)){
$dir_array = explode(" ", $myrow['date']);
$date=explode("-", $dir_array[0]);
$time=substr($dir_array[1], 0, -3);

$DT=mount::mount($date[0],$date[1],$date[2]);

if($myrow['tur'] == $tur ){ }else{
?>
<tr>
<
td align="center" cellspacing="7"><? echo $myrow['tur']?> тур</td>
</
tr>

<? } ?>
<tr>
<?php
if($DT == $d ){ echo '<td rowspan="1"></td>';}else{
echo '<td rowspan="1">'.$DT.'</td>';
}
?>
<td><?php echo $time;?></td>
<
td><?php echo $myrow['doma'];?></td>
<
td>0</td>
<
td>-</td>
<
td>0</td>
<
td><?php echo $myrow['viizd'];?></td>
</
tr>

<?
$tur = $myrow['tur'];
$d = $DT;
}?>



</table>

он выводит такую структуру

                                           10 тур
28 сентября 18:30 команда1 0 - 0 команда2
              20:30 команда1 0 - 0 команда2
29 сентября 18:30 команда1  0 - 0 команда2
              20:30 команда1 0 - 0 команда2
30 сентября 17:00 команда1 0 - 0 команда2
                  18:30 команда1  0 - 0 команда2
                19:30 команда1  0 - 0 команда2
                  20:30 команда1  0 - 0 команда2

Вопрос заключается в том как мне автоматически проставить в rowspan значения которые зависят от количества матчей в этот день, а то сейчас там везде rowspan="1"



Спустя 6 минут, 58 секунд (25.09.2012 - 20:53) inpost написал(а):
Ты не сразу выводи данные, а переведи их в массив, тогда через count() можно будет узнать, сколько записей в массиве с ключом конкретной даты.
$array['2012-09-09'][] = array('date','time','team1','team2','score');
count($array['2012-09-09']);

Ну и перебор:
foreach($array as $date=>$temp) {
foreach($array[$date] as $key=>$v) {
echo $v['score'];
}
}

Это мини-мануал, как пользоваться массивами.

Спустя 5 минут, 50 секунд (25.09.2012 - 20:59) Markus111 написал(а):
Значит я делаю так
while($myrow=$anons->fetch(PDO::FETCH_ASSOC)){ 
$arr[]=$myrow;
}

а как мне потом вставить мою структуру и подсчитать количество, что то не пойму

Спустя 1 минута, 43 секунды (25.09.2012 - 21:01) inpost написал(а):
Markus111
У тебя формат массива будет не такой, как я показал выше. Первая строчка пишет о том, как должна быть.

Спустя 4 минуты, 7 секунд (25.09.2012 - 21:05) Markus111 написал(а):
так
while($myrow=$anons->fetch(PDO::FETCH_ASSOC)){
$arr[$myrow['date']][]=$myrow;
}

Спустя 44 секунды (25.09.2012 - 21:06) inpost написал(а):
Markus111
Теперь другое дело.

Спустя 5 минут, 52 секунды (25.09.2012 - 21:12) Markus111 написал(а):
дальше делаю так
foreach($arr as $date=>$v) {
foreach($arr[$date] as $key=>$v) {
echo count($arr[$v['date']]);
}
}

но выводит не то

Спустя 12 минут, 30 секунд (25.09.2012 - 21:24) Markus111 написал(а):
сделал так
while($myrow=$anons->fetch(PDO::FETCH_ASSOC)){
$dir_array = explode(" ", $myrow['date']);
$arr[$dir_array[0]][]=$myrow;
}

foreach($arr as $date=>$v) {
$dir_array = explode(" ", $date);
echo count($arr[$dir_array[0]]).'<br>';
}
вроде работает, еще буду проверять что покажет при большом масиве

Спустя 12 минут, 56 секунд (25.09.2012 - 21:37) Markus111 написал(а):
использую такую структуру, а как мне вытащить теперь время
<?php
while($myrow=$anons->fetch(PDO::FETCH_ASSOC)){
$dir_array = explode(" ", $myrow['date']);
$arr[$dir_array[0]][]=$myrow;
}

foreach($arr as $date=>$v) {
echo count($arr[$date]).'<br>';
}
?>

Спустя 4 минуты, 54 секунды (25.09.2012 - 21:42) inpost написал(а):
Я не понимаю, зачем ты дату разбиваешь на уровне обработки!!! Делай разбивание строкой ранее, ПЕРЕД echo $date;

Спустя 19 минут (25.09.2012 - 22:01) Markus111 написал(а):
не пойму что вы имели ввиду
Цитата
Я не понимаю, зачем ты дату разбиваешь на уровне обработки!!! Делай разбивание строкой ранее, ПЕРЕД echo $date;

Спустя 1 минута, 14 секунд (25.09.2012 - 22:02) inpost написал(а):
$arr[$myrow['date']][]=$myrow; - правильно сделал массив!
$arr[$dir_array[0]][]=$myrow; - уже неверно! smile.gif

Спустя 3 минуты, 3 секунды (25.09.2012 - 22:05) Markus111 написал(а):
если я сделаю $arr[$myrow['date']][]=$myrow; то как я потом буду вытаскивать время

Спустя 3 минуты, 6 секунд (25.09.2012 - 22:08) Markus111 написал(а):
Или мне сделать вот так, и потом вытаскивать время с $arr1
while($myrow=$anons->fetch(PDO::FETCH_ASSOC)){

$arr[$myrow['date']][]=$myrow;
$arr1[]=$myrow;
}

Спустя 14 минут, 38 секунд (25.09.2012 - 22:23) inpost написал(а):
Перебор:
foreach($array as $date=>$temp) {
foreach($array[$date] as $key=>$v) {
echo $v['score'];
echo $v['date'];
echo $date;
}
}

Время у тебя хранится внутри цикла в переменной: $date или $v['date'];

Спустя 10 минут, 58 секунд (25.09.2012 - 22:34) Markus111 написал(а):
что то я уже не соображаю, вот записал и не знаю как дописать
foreach($arr as $date=>$temp) {
foreach($arr[$date] as $key=>$v) {
$dir_array1 = explode(" ", $date);
$k= count(-----);
echo $k;

}
}

Спустя 3 минуты, 19 секунд (25.09.2012 - 22:37) inpost написал(а):
Для начала выведи массив:
echo '<pre>'.print_r($array);
и посмотри, что у тебя в нём записано. Далее разберись с функцией foreach, что она делает и что значат $key=>$v. Попробуй логически представить, как цикл должен обходить данный массив и выводить данные и поэкспериментируй.
Твоя задача попытаться понять, как именно работают массивы и функция foreach, если поймешь, то сможешь манипулировать данными так, как тебе надо.

Спустя 11 минут, 11 секунд (25.09.2012 - 22:49) Markus111 написал(а):
на счет времени я понял, но как посчитать количество еще нет

Спустя 17 минут, 48 секунд (25.09.2012 - 23:06) inpost написал(а):
Вторая строчка была о том, как считать по ключу массива.

Спустя 9 минут, 15 секунд (25.09.2012 - 23:16) Markus111 написал(а):
Я понял как считать но из за того что время в каждом поле разное выводит что каждой записи по одной, а по дате должно быть 2 2 4, а выводит 1 1 1 1 1 1 1 1

Спустя 3 минуты, 26 секунд (25.09.2012 - 23:19) inpost написал(а):
У тебя foreach в foreach находятся при выводе! Сколько раз пройдет цикл первый foreach, и сколько раз пройдет второй (который внутри первого)?

Спустя 3 минуты, 31 секунда (25.09.2012 - 23:23) Markus111 написал(а):
8 и 8

Спустя 5 минут, 52 секунды (25.09.2012 - 23:28) Markus111 написал(а):
вот массив
Array ( [2012-09-28 18:30:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Динамо К [viizd] => Заря [date] => 2012-09-28 18:30:00 [year] => 2012 [day] => 28 [time] => 18:30 ) ) [2012-09-28 20:30:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Шахтер Дн [viizd] => Днепр Дп [date] => 2012-09-28 20:30:00 [year] => 2012 [day] => 28 [time] => 20:30 ) ) [2012-09-29 18:30:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Волынь [viizd] => Таврия [date] => 2012-09-29 18:30:00 [year] => 2012 [day] => 29 [time] => 18:30 ) ) [2012-09-29 20:30:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Черноморец Од [viizd] => Металлист [date] => 2012-09-29 20:30:00 [year] => 2012 [day] => 29 [time] => 20:30 ) ) [2012-09-30 17:00:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Говерла-Закарпатье [viizd] => Металлург Д [date] => 2012-09-30 17:00:00 [year] => 2012 [day] => 30 [time] => 17:00 ) ) [2012-09-30 18:30:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Кривбасс [viizd] => Металлург З [date] => 2012-09-30 18:30:00 [year] => 2012 [day] => 30 [time] => 18:30 ) ) [2012-09-30 19:30:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Ворскла [viizd] => Ильичевец [date] => 2012-09-30 19:30:00 [year] => 2012 [day] => 30 [time] => 19:30 ) ) [2012-09-30 20:30:00] => Array ( [0] => Array ( [tur] => 10 [doma] => Карпаты [viizd] => Арсенал К [date] => 2012-09-30 20:30:00 [year] => 2012 [day] => 30 [time] => 20:30 ) ) )

Спустя 1 минута, 43 секунды (25.09.2012 - 23:30) inpost написал(а):
Почему такой бардак? Выводить так:
echo '<pre>'.print_r($array,1).'</pre>';

Ещё раз выстави.

Спустя 2 минуты, 12 секунд (25.09.2012 - 23:32) inpost написал(а):
Ну да, в массив ты помещаешь Дату и Время. Тебе же надо только дату. Верно ты первый раз написал, explode по пробелу делай! Вернись на шаг назад, и добавляй ключом именно дату, без времени!

Спустя 55 секунд (25.09.2012 - 23:33) Markus111 написал(а):
Array
(
[
2012-09-28 18:30:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Динамо К
[viizd] => Заря
[date] => 2012-09-28 18:30:00
[year] => 2012
[day] => 28
[time] => 18:30
)

)

[
2012-09-28 20:30:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Шахтер Дн
[viizd] => Днепр Дп
[date] => 2012-09-28 20:30:00
[year] => 2012
[day] => 28
[time] => 20:30
)

)

[
2012-09-29 18:30:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Волынь
[viizd] => Таврия
[date] => 2012-09-29 18:30:00
[year] => 2012
[day] => 29
[time] => 18:30
)

)

[
2012-09-29 20:30:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Черноморец Од
[viizd] => Металлист
[date] => 2012-09-29 20:30:00
[year] => 2012
[day] => 29
[time] => 20:30
)

)

[
2012-09-30 17:00:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Говерла-Закарпатье
[viizd] => Металлург Д
[date] => 2012-09-30 17:00:00
[year] => 2012
[day] => 30
[time] => 17:00
)

)

[
2012-09-30 18:30:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Кривбасс
[viizd] => Металлург З
[date] => 2012-09-30 18:30:00
[year] => 2012
[day] => 30
[time] => 18:30
)

)

[
2012-09-30 19:30:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Ворскла
[viizd] => Ильичевец
[date] => 2012-09-30 19:30:00
[year] => 2012
[day] => 30
[time] => 19:30
)

)

[
2012-09-30 20:30:00] => Array
(
[
0] => Array
(
[
tur] => 10
[doma] => Карпаты
[viizd] => Арсенал К
[date] => 2012-09-30 20:30:00
[year] => 2012
[day] => 30
[time] => 20:30
)

)

[
2012-10-26 20:00:00] => Array
(
[
0] => Array
(
[
tur] => 11
[doma] => иить
[viizd] => ить
[date] => 2012-10-26 20:00:00
[year] => 2012
[day] => 26
[time] => 20:00
)

)

[
2012-10-26 21:00:00] => Array
(
[
0] => Array
(
[
tur] => 11
[doma] => б
[viizd] => ьтб
[date] => 2012-10-26 21:00:00
[year] => 2012
[day] => 26
[time] => 21:00
)

)

)

Спустя 1 минута, 6 секунд (25.09.2012 - 23:34) inpost написал(а):
Я выше сообщение своё написал, подправь скрипт и проверь ещё раз, сколько проходить будет первый и второй foreach.

Спустя 1 минута, 2 секунды (25.09.2012 - 23:35) Markus111 написал(а):
значит так делать
while($myrow=$anons->fetch(PDO::FETCH_ASSOC)){
$dir_array = explode(" ", $myrow['date']);
$arr[$dir_array[0]][]=$myrow;

}

Спустя 2 минуты, 15 секунд (25.09.2012 - 23:38) Markus111 написал(а):
3 и 8

Спустя 1 минута, 32 секунды (25.09.2012 - 23:39) inpost написал(а):
Markus111
Тебе надо вывести 2,2,4 = сумма 3(!) даты. Всего записей 2+2+4 = 8.
Ты имеешь 3 и 8, всё сходится.

Теперь лишь в нужном месте подставляй echo и пробуй.

Спустя 1 минута, 54 секунды (25.09.2012 - 23:41) Markus111 написал(а):
да все сходится, и в начале когда я так вывел было нормально

Спустя 6 минут, 24 секунды (25.09.2012 - 23:47) inpost написал(а):
Markus111
Я не увидел, что у тебя там время стоит! Всё, проблема решена?


_____________
https://t.me/pump_upp
Быстрый ответ:

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