|
|
|
|
|
для: confirm
(12.02.2016 в 14:54)
| | Судя по тому, что MySQL написано именно в таком регистре, смею предположить, что речь идет не о способах доступа к мускулу...
А о том, что нужно забыть о самой СУБД.
Не расскажите почему? | |
|
|
|
|
|
|
|
для: Oleg2016
(20.02.2016 в 08:10)
| | Опять не вижу - где ваш массив $rows_count?
Структура таблицы мне не нужна, можно только заметить, что использование верхнего регистра в именах полей, это постоянно помнить об этом. По большому счету это кроме геморроя ничего не дает. | |
|
|
|
|
|
|
|
для: Oleg2016
(20.02.2016 в 08:07)
| | структура таблицы:
create table print(
IDprint INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Model VARCHAR(100) NOT NULL,
Block VARCHAR(100) NOT NULL,
Unit VARCHAR(80) NOT NULL,
Xnumber VARCHAR(80) NOT NULL,
Dprint DATE NOT NULL,
Snumber VARCHAR(80) NOT NULL,
Count INT NOT NULL,
IPaddress VARCHAR(80) NOT NULL
)
ENGINE=INNODB;
|
| |
|
|
|
|
|
|
|
для: Oleg2016
(20.02.2016 в 05:52)
| |
Array
(
[0] => ОИТ
[1] => ОИТ
[2] => КИБ
[3] => КИБ
[4] => Кредитный
[5] => Кредитный
[6] => ООЮЛ
[7] => ООЮЛ
[8] => ООЮЛ
[9] => ООЮЛ
[10] => ООЮЛ
[11] => ООЮЛ
[12] => ДП_УМБ
[13] => ДП_УМБ
[14] => ДП_УМБ
[15] => ДП_УМБ
[16] => ДП_УМБ
[17] => ДП_УМБ
[18] => ДП_УМБ
[19] => ДП_УМБ
[20] => ДП_УМБ
[21] => ДП_УМБ
[22] => ОО_Волочаевский
[23] => ОО_Волочаевский
[24] => ОО_Континентальный
[25] => ОО_Континентальный
[26] => ОО_Маршала_Жукова
[27] => ОО_Маршала_Жукова
[28] => ОО_Маршала_Жукова
[29] => ОО_Маршала_Жукова
[30] => ОО_Проспект_культуры
[31] => ОО_Проспект_культуры
[32] => ОО_Проспект_культуры
[33] => ОО_Проспект_культуры
[34] => ОО_Юность
[35] => ОО_Юность
[36] => ГФМ
[37] => ГФМ
[38] => Касса
[39] => Касса
[40] => ОТОР
[41] => ОТОР
[42] => ОТОР
[43] => ОТОР
[44] => ОТОР
[45] => ОТОР
[46] => Служба_инкассации
[47] => Служба_инкассации
[48] => АХО
[49] => АХО
[50] => Бухгалтерия
[51] => Бухгалтерия
[52] => Кадры
[53] => Кадры
[54] => Приёмная
[55] => Приёмная
[56] => Тренера
[57] => Тренера
[58] => Юридический
[59] => Юридический
[60] => БПК
[61] => БПК
[62] => БПК
[63] => БПК
[64] => ККО_Академический
[65] => ККО_Академический
[66] => ККО_Академический
[67] => ККО_Академический
[68] => ККО_Академический
[69] => ККО_Академический
[70] => ККО_Академический
[71] => ККО_Академический
[72] => ККО_Академический
[73] => ККО_Академический
[74] => ККО_Иртыш
[75] => ККО_Иртыш
[76] => ККО_Иртыш
[77] => ККО_Иртыш
[78] => ККО_Иртыш
[79] => ККО_Иртыш
[80] => ККО_Иртыш
[81] => ККО_Иртыш
[82] => ККО_Иртыш
[83] => ККО_Иртыш
[84] => ККО_Омск-Парк_культуры
[85] => ККО_Омск-Парк_культуры
[86] => ККО_Омск-Парк_культуры
[87] => ККО_Омск-Парк_культуры
[88] => ККО_Омск-Парк_культуры
[89] => ККО_Омск-Парк_культуры
[90] => ККО_Омск-Парк_культуры
[91] => ККО_Омск-Парк_культуры
[92] => ККО_Омск-Парк_культуры
[93] => ККО_Омск-Парк_культуры
[94] => ККО_Омск-Парк_культуры
[95] => ККО_Омск-Парк_культуры
[96] => ККО_Омск-Тополиный
[97] => ККО_Омск-Тополиный
[98] => ККО_Омск-Тополиный
[99] => ККО_Омск-Тополиный
[100] => ККО_Омск-Тополиный
[101] => ККО_Омск-Тополиный
[102] => ККО_Омск-Тополиный
[103] => ККО_Омск-Тополиный
[104] => ККО_Омск-Тополиный
[105] => ККО_Омск-Тополиный
[106] => ККО_Омск-Успенский
[107] => ККО_Омск-Успенский
[108] => ККО_Омск-Успенский
[109] => ККО_Омск-Успенский
[110] => ККО_Омск-Успенский
[111] => ККО_Омск-Успенский
[112] => ККО_Омск-Успенский
[113] => ККО_Омск-Успенский
[114] => ККО_Омск-Успенский
[115] => ККО_Омск-Успенский
[116] => ККО_Омск-Юбилейный
[117] => ККО_Омск-Юбилейный
[118] => ККО_Омск-Юбилейный
[119] => ККО_Омск-Юбилейный
[120] => ККО_Омск-Юбилейный
[121] => ККО_Омск-Юбилейный
[122] => ОРКК
[123] => ОРКК
[124] => ОРКК
[125] => ОРКК
[126] => ОРКК
[127] => ОРКК
[128] => ОРКК
[129] => ОРКК
[130] => СЭБ
[131] => СЭБ
)
|
| |
|
|
|
|
 13.7 Кб |
|
|
для: Oleg2016
(20.02.2016 в 05:52)
| | Почему записи полученные из базы дубликатами по две записи, при этом count у них разный?
Я говорил о трех массивах: данные из базы, массив $row_unit и массив $rows_count. Где третий?
Проверяйте, вот по примеру неких данных:
Array
(
[0] => Array
(
[block] => Другой
[unit] => ККО Другой
[xnumber] => 34532
[model] => 34534
[snumber] => 564564
[ipaddress] => 45634
[count] => 2
)
[1] => Array
(
[block] => Другой
[unit] => ККО Другой
[xnumber] => 563453
[model] => 234526543
[snumber] => 34534
[ipaddress] => 32534
[count] => 4
)
[2] => Array
(
[block] => Иной
[unit] => ККО Академический
[xnumber] => 53453
[model] => 564634
[snumber] => 45345
[ipaddress] => 3453
[count] => 5
)
[3] => Array
(
[block] => Иной
[unit] => ККО Академический
[xnumber] => 643453
[model] => 234235
[snumber] => 34536
[ipaddress] => 4657332
[count] => 7
)
[4] => Array
(
[block] => Иной
[unit] => ККО Еще
[xnumber] => 345362
[model] => 3465346
[snumber] => 234234
[ipaddress] => 3453453
[count] => 4
)
[5] => Array
(
[block] => Розничный
[unit] => ККО Академический
[xnumber] => 3465346
[model] => 23523653
[snumber] => 4536346
[ipaddress] => 2352345
[count] => 6
)
[6] => Array
(
[block] => Розничный
[unit] => ККО Академический
[xnumber] => 4534
[model] => 5745745
[snumber] => 346436
[ipaddress] => 457454
[count] => 7
)
[7] => Array
(
[block] => Розничный
[unit] => ККО Успенский
[xnumber] => 43532452
[model] => 2342342
[snumber] => 234523523
[ipaddress] => 534534
[count] => 3
)
[8] => Array
(
[block] => Розничный
[unit] => ККО Успенский
[xnumber] => 43543635
[model] => 352324523
[snumber] => 4623523
[ipaddress] => 46534634
[count] => 5
)
[9] => Array
(
[block] => Розничный
[unit] => ККО Успенский
[xnumber] => 4534632
[model] => 23452352
[snumber] => 4563456324
[ipaddress] => 23523543
[count] => 5
)
[10] => Array
(
[block] => Розничный
[unit] => ККО Юбилейный
[xnumber] => 574573
[model] => 656456
[snumber] => 2342
[ipaddress] => 22323232
[count] => 2
)
[11] => Array
(
[block] => Розничный
[unit] => ККО Юбилейный
[xnumber] => 656845
[model] => 34534634
[snumber] => 43543
[ipaddress] => 4323423
[count] => 3
)
)
|
Массив $row_unit будет таким:
Array
(
[0] => ККО Другой
[1] => ККО Другой
[2] => ККО Академический
[3] => ККО Академический
[4] => ККО Еще
[5] => ККО Академический
[6] => ККО Академический
[7] => ККО Успенский
[8] => ККО Успенский
[9] => ККО Успенский
[10] => ККО Юбилейный
[11] => ККО Юбилейный
)
|
А массив $rows_count будет иметь такую структуру:
Array
(
[Другой] => Array
(
[ККО Другой] => 2
)
[Иной] => Array
(
[ККО Академический] => 2
[ККО Еще] => 1
)
[Розничный] => Array
(
[ККО Академический] => 2
[ККО Успенский] => 3
[ККО Юбилейный] => 2
)
)
|
и вывод таблицы --> | |
|
|
|
|
|
|
|
для: confirm
(19.02.2016 в 14:57)
| |
Array
(
[0] => Array
(
[block] => ИТ
[unit] => ОИТ
[xnumber] => 0930070136
[model] => Xerox_WorkCentre_6505_DN
[snumber] => 3188387003
[ipaddress] => 192.168.218.239
[count] => 1495
)
[1] => Array
(
[block] => ИТ
[unit] => ОИТ
[xnumber] => 0930070136
[model] => Xerox_WorkCentre_6505_DN
[snumber] => 3188387003
[ipaddress] => 192.168.218.239
[count] => 1569
)
[2] => Array
(
[block] => Корпоративный
[unit] => КИБ
[xnumber] => 0930070125
[model] => Xerox_WorkCentre_3325
[snumber] => 3259926474
[ipaddress] => 192.168.218.247
[count] => 21670
)
[3] => Array
(
[block] => Корпоративный
[unit] => КИБ
[xnumber] => 0930070125
[model] => Xerox_WorkCentre_3325
[snumber] => 3259926474
[ipaddress] => 192.168.218.247
[count] => 21698
)
[4] => Array
(
[block] => Корпоративный
[unit] => Кредитный
[xnumber] => 0930070110
[model] => Xerox_WorkCentre_3315
[snumber] => 3972680779
[ipaddress] => 192.168.218.48
[count] => 11554
)
[5] => Array
(
[block] => Корпоративный
[unit] => Кредитный
[xnumber] => 0930070110
[model] => Xerox_WorkCentre_3315
[snumber] => 3972680779
[ipaddress] => 192.168.218.48
[count] => 11565
)
[6] => Array
(
[block] => Корпоративный
[unit] => ООЮЛ
[xnumber] => 0930070065
[model] => HP_LaserJet_M2727nf
[snumber] => CNHTC3POPS
[ipaddress] => 192.168.218.43
[count] => 66604
)
[7] => Array
(
[block] => Корпоративный
[unit] => ООЮЛ
[xnumber] => 0930070114
[model] => Xerox_WorkCentre_3615
[snumber] => 3152361342
[ipaddress] => 192.168.218.137
[count] => 71869
)
[132] =>
)
Array
(
[0] => ОИТ
[1] => ОИТ
[2] => КИБ
[3] => КИБ
[4] => Кредитный
[5] => Кредитный
[6] => ООЮЛ
[7] => ООЮЛ
[8] => ООЮЛ
[9] => ООЮЛ
[10] => ООЮЛ
|
| |
|
|
|
|
|
|
|
для: Oleg2016
(19.02.2016 в 14:45)
| | - | |
|
|
|
|
|
|
|
для: Oleg2016
(19.02.2016 в 14:45)
| | Когда пишите сообщение в форме справа видно сообщение "Используйте теги для выделения текста"? Нужно только щелкнуть по ВВ тегу, [сode][/сode] и внутрь этих тегов поместить код, все. А то что вы сами написали <code></code>, это не ВВ-теги, и они не будут обрабатываться.
Я вас просил показать содержание массивов, кода вашего не нужно. Выполните то что я писал перед циклом foreach, и то что будет выведено покажите здесь. Только если записей много, то скопируйте строк 10 и хватит. | |
|
|
|
|
|
|
|
для: confirm
(19.02.2016 в 13:55)
| | Я хочу исправить вот эти ошибки. Тот скрипт что вы прислали возвращает эти ошибки, и прибавляет пустую строку в конце таблицы , мне нужно это побороть.
<code>
array_sum() expects parameter 1 to be array, null given гласит о том, что функция ожидает первым параметром массив, а ему передается null, то есть не существует указанного массива.
Ошибка implode() [function.implode]: Invalid arguments passed сообщает, что ей переданы не верные аргументы.
</code>
<code>
<html>
<head>
<title>Статистика печати
</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<?php
header('Content-type: text/html; charset=utf-8');
$dnow=date("d.m.Y");
$host="192.168.218.119";
$user="root";
$pw="123456";
$db="allprint";
$connection=mysql_connect($host,$user,$pw) or die("Ошибка соединения");
mysql_select_db($db) or die("Ошибка соединения с базой данных");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
if($q = mysql_query('SELECT block, unit, xnumber, model, snumber, ipaddress, count FROM print ORDER BY block, unit')) {
if(mysql_num_rows($q)) {
//получить все записи в массив
$a = array();
while($a[] = mysql_fetch_assoc($q));
$tbl = '<table border=1>
<thead>
<tr>
<th>Блок</th>
<th>Подразделение</th>
<th>Номер Xerox</th>
<th>Модель</th>
<th>Серийный номер</th>
<th>IP адрес</th>
<th>Всего отпечатков</th>
</tr>
</thead>';
function arrayColumn($a, $i) {
return array_values(array_diff(array_map(function($v) use($i) {
return $v[$i];
}, $a), array(null)));
}
$row_unit = arrayColumn($a, 'unit');
$block = $unit = null;
$n = 0;
foreach(array_count_values(arrayColumn($a, 'block')) as $k=>$v) {
$rows_count[$k] = array_count_values(array_slice($row_unit, $n, $v));
$n += $v;
}
foreach($a as $v) {
if($block != $v['block']) {
$block = $v['block'];
$tbl .= '<tr><td rowspan="'.array_sum($rows_count[$block]).'">'.$block.'</td>';
}
if($block == $v['block'] && $unit != $v['unit']) {
$unit = $v['unit'];
$tbl .= '<td rowspan="'.$rows_count[$block][$unit].'">'.$unit.'</td>
<td>'. implode('</td><td>', array_slice($v, 2, 3)) .'</td>
<td><a href=http://'.$v['ipaddress'].'>'.$v['ipaddress'].'</a></td>
<td>'.$v['count'].'</td></tr>';
continue;
}
$tbl .= '<tr><td>'. implode('</td><td>', array_slice($v, 2, 3)) .'</td>
<td><a href=http://'.$v['ipaddress'].'>'.$v['ipaddress'].'</a></td>
<td>'.$v['count'].'</td></tr>';
}
echo $tbl . '</table>';
}
}
?>
</body>
</html>
</code>
PS: теги не работают :) | |
|
|
|
|
|
|
|
для: Oleg2016
(19.02.2016 в 12:54)
| | Не надо ничего править, если о массивах, нужно вывести их, чтобы видеть что твориться, так:
<?
echo '<pre>';
print_r($a);
print_r($row_unit);
print_r($rows_count);
echo '</pre>';
|
Если о своем сообщении, то уже никак, это на будущее - обрамляйте код своей тегами code, чтобы была подсветка и форматирование. | |
|
|
|
|