DB의 컬럼을 새창으로 띄우고 싶습니다!

DB의 컬럼을 새창으로 띄우고 싶습니다!

QA

DB의 컬럼을 새창으로 띄우고 싶습니다!

본문

<?php
$sql = "select * from record order by no desc limit 0,10";
$res = dbquery($sql);
$i=1;
while($row = dbfetch($res)) {
?>

<td class="text-center"><?=$row['aa']?></td>
<td class="text-center"><?=$row['bb']?></td>
<td class="text-center"><?=$row['cc']?></td>
<td class="text-center"><?=$row['dd']?></td>
<td class="text-center"><?=$row['ee']?></td>


<?
$i++;
}?>


대략 이런 구조로 사용중입니다.
대부분 한두글자에서 많아야 7-8글자 정도로 짧은데
이번에 몇천자 정도 되는 내용을 표기해야하는데
이걸 그대로 보여주게 할수는 없으니 링크형식으로
누르면 새창에서 보여지게 하려고 하는데요.
문제가 바로...
$i++;
이거 때문에...ㅠ_ㅠ

window.open 으로 해서 document.Write 라던지 innerHTML 라던지
해보았는데 내용에 php가 들어가면 본문과 겹쳐져서 안되고..

대략 적인 느낌은

날짜  이름  번호  (로그)
12      길동  123    몇천글자이상...
34      무개  456    만오천글자이상..
56      산적  789    6750글자이상..


그래서 저 로그를 클릭형태로 만들어서 해주고싶은데요!!

고수님들의 조언 부탁드려도 될까요!
방향성만 제시해주셔도 열심히 파보겠습니다.

일단은 진짜 진짜 진짜 다른 가능성이 없다면
Datatable이라도 생각을 해보고 있는데 너무 큰 공사라서..
ㅠ_ㅠ 조심스럽고 정중하게 조언 부탁드립니다!!

이 질문에 댓글 쓰기 :

답변 2

$i는 사용할 필요 없으면 빼도 됩니다.
로그 내용 필드명이 뭔지 모르니까 편의상 마지막 ee라 치고…
-

<?php
// DB 연결 등
mb_internal_encoding('UTF-8');
$sql = 'SELECT * FROM record ORDER BY `no` DESC LIMIT 0, 10'; // LIMIT 10 해도 무방
$res = dbquery($sql);
echo '<style>.log { cursor: pointer; color: blue; }</style>
<table>'; // 스타일은 알아서…
while($row = dbfetch($res)) {
    $len = mb_strlen($row['ee']);
    $content = mb_substr($row['ee'], 0, 100).'..'; // 앞 100자 + ..
    $content = htmlspecialchars($content, ENT_QUOTES);
?>
  <tr>
    <td class="text-center"><?=$row['aa']?></td>
    <td class="text-center"><?=$row['bb']?></td>
    <td class="text-center"><?=$row['cc']?></td>
    <td class="text-center"><?=$row['dd']?></td>
    <td class="text-center"><span onclick="logview(<?=$row['no']?>)" class="log"><?=$content?></span></td>
  </tr>
<?php
}
echo '</table>';
?>
<script>
function logview(no) { // 또는 ".log" 클래스 대상으로 클릭 이벤트 처리 등
  window.open("logview.php?no="+no, "log", "width=800,height=600");
}
</script>

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

logview.php
<?php
// DB 연결 등
$no = $_GET['no'] ?? ''; // PHP v7.0 이상이면 사용 가능
if ( !preg_match('/^\d+$/', $no) ) exit('잘못된 접근!'); // ※ $no 값이 숫자로만 구성되지 않았다면 중단. 숫자만 받기 때문에 부담 없음.
$sql = "SELECT ee FROM record WHERE `no`={$no}";
$res = dbquery($sql);
$row = dbfetch($res);
echo $row['ee']; // 내용 출력

+ EventTarget: addEventListener() method
- https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
- https://developer.mozilla.org/ko/docs/Web/API/EventTarget/addEventListener

위는 로그 일부 내용 클릭 시, 팝업창으로 상세 내용 보이기 예제입니다.
별도의 팝업창 사용하지 않고 레이어 팝업으로 보여준다거나,
클릭 시 전체 내용으로 바꿔준다거나 등등 정책 정하고 구현은 질문자분 몫이니 생략합니다.

로그 부분을 

<span onclick="show_log(this)" data-log="<?=$row[$i]?>"><?=substr($row[$i], 0, 20 ?></span>
요런식으로 작성하셔서, show_log를 누르면 해당 요소의 data-log 를 보여주는 창을 띄워주는 형식으로 스크립트를 만드시는게 좋을 것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 17
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT