-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
Подсчет строк ячейки в таблице html
Добрый день.
Подскажите, вообще реально ли на php сделать такую вещь. Необходимо посчитать сколько значений в ячейке. Есть 8 столбцов, последний столбец при выводе строки переходит на другую строку и выводит еще результат если такой есть.
Пример части таблицы такой:
HTML код:
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>
NOTE - 1
<br>NOTE - 2
<br>NOTE - 3
<br>NOTE - 4
<br>NOTE - 5
<br>NOTE - 6
<br>NOTE - 7
</td>
</tr>
Как посчитать количество NOTE - Х ?
Если считать количество br, то не получится ли так, что я посчитаю br на всей странице?
|
DOMXpath'ом можно
Код:
$doc = new \DOMDocument();
$doc->loadHTML(<<<'STR'
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>
NOTE - 1
<br>NOTE - 2
<br>NOTE - 3
<br>NOTE - 4
<br>NOTE - 5
<br>NOTE - 6
<br>NOTE - 7
</td>
</tr>
STR
);
$xpath = new \DOMXpath($doc);
$elements = $xpath->query('//tr/td[8]/br');
var_dump($elements->length);//кол-во тегов br
|
Sham, подскажите, а как быть, когда вывод в таблице будет:
HTML код:
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>NOTE - 1</td>
</tr>
Имеется ввиду будет отсутствовать тег <br>
|
Надо структуру документа знать и как образуются эти NOTE. Если считается количество ячеек td, то это можно и в xpath посчитать, а не использовать regexp'ы.
|
Sham, значения берутся из базы.
PHP код:
<?php
require_once("db.php");
$conn = mysqli_connect($server, $username, $password, $database);
if ($conn === false) {
die("Ошибка: " . mysqli_connect_error());
}
$sql = "SELECT * FROM $db_table ORDER BY $db_table.User DESC";
if($result = $conn->query($sql)){
$rowsCount = $result->num_rows;
echo "$rowsCount";
}
?>
после выводятся в html:
Код:
<table class="table table-striped">
<thead>
<tr>
<th scope="col">1</th>
<th scope="col">2</th>
<th scope="col">3</th>
<th scope="col">4</th>
<th scope="col">5</th>
<th scope="col">6</th>
<th scope="col">7</th>
<th scope="col">8</th>
</tr>
</thead>
<tbody>
<?php foreach($result as $row){ ?>
<tr>
<td><?php echo $row["1"] ?></td>
<td><?php echo $row["2"] ?></td>
<td><?php echo $row["3"] ?></td>
<td><?php echo $row["4"] ?></td>
<td><?php echo $row["5"] ?></td>
<td><?php echo $row["6"] ?></td>
<td><?php echo $row["7"] ?></td>
<?php $row["8"] = str_replace(PHP_EOL, '<br>', $row["8"]); ?>
<td><?php echo $row["8"] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
В зависимости от количества строк в 8 столбце, происходит переход на новую строку.
|
В таблице 8 колонок и неограниченное количество строк. 8-ая ячейка в каждой строке содержит этот список, который уже лежит в базе. Считать нужно все NOTE по всей 8 колонке? Проще наверное узнать, как формируется этот список и сделать отдельный запрос в базу. PHP_EOL - системо-зависимая константа, а должен заменяться конкретный знак переноса, который в базе.
|
Время: 02:22.
© OSzone.net 2001-