많은 레코드가있는 데이터베이스가 있고 모든 데이터를 얻기 위해 foreach 루프를 만들어야합니다. 문제는 모든 데이터에 대한 차트가 페이지를 오버로드한다는 것입니다. 따라서 두 개의 div와 하나의 div (파란색)를 사용하여 막 대형 차트를 만들어 해당 데이터의 값에 따른 기본 div (회색 div)의 백분율을 가져와야합니다. 나는 그 모든 것을했지만 내부 div 빌드를 데이터베이스에서 가장 높은 값과 얼마나 가까운 지에 따라 백분율 너비로 변경하는 방법을 모르겠습니다. 이것이 오른쪽에 표시된 숫자를 가져 오는 방법입니다.
<?php echo @$item->{"media_count"}; ?>
내가 어떻게 보이게해야하는지 알 수 있도록 이미지를 첨부하겠습니다. 막 대형 차트
<table class="table table-bordered">
<tbody style="width: 401px; border: 0;">
<?php foreach ($data->data->data as $key => $item):
if (@$item->{"name"}) {
?>
<tr>
<td>
<?php echo @$item->{"name"}; ?>
</td>
<td>
<div class="outer">
<div class="inner" style="width: 20%;"></div>
</div>
</td>
<td>
<?php echo @$item->{"media_count"}; ?>
</td>
</tr>
<?php }
endforeach ?>
</tbody>
</table>
내부 및 외부 div에 대한 CSS :
<style type="text/css">
.outer, .inner {
height: 14px;
margin-bottom: 5px;
}
.outer {
background-color: #cccccc;
width: 200px;
margin: 0 auto;
}
.inner {
background-color: #66a3ff;
}
td {
border:none;
}
table {
border:1px solid #CCC;
border-collapse:collapse;
}
</style>
오류 억제 연산자 사용과 같이 코드에서 확실하지 않은 몇 가지 사항이 있지만 아래 코드가 원하는 작업을 수행하는 방법에 대한 멋진 작업 예제를 제공 할 것이라고 생각합니다. .
<?php
$max = 1;
foreach( $data->data->data as $tmp )
$max = ( ( $tmp->media_count > $max )? $tmp->media_count: $max );
?>
<table class="table table-bordered">
<tbody style="width: 401px; border: 0;">
<?php
foreach( $data->data->data as $item ){
if( $item->name ){
$percent = $item->media_count / $max;
?>
<tr>
<td>
<?php echo htmlspecialchars( $item->name ); ?>
</td>
<td>
<div class="outer">
<div class="inner" style="width: <?php echo round( 100 * $percent) ?>%;"></div>
</div>
</td>
<td>
<?php echo htmlspecialchars( $item->media_count ); ?>
</td>
</tr>
<?php
}
}
?>
</tbody>
</table>
데이터를 검색하는 방법에 따라 전체 구조를 반복하는 것보다 데이터를 최대한 활용할 수있는 훨씬 더 효율적인 방법이있을 수 있지만 원래 질문에서 데이터가 검색되는 방법을 보여주지 않았기 때문입니다. , 나는 내가 가진 유일한 접근 방식을 취했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다