그누스터디에서 국기나오는 소스에서 국가아이콘의 설명란에 국가넣어려면..??

그누스터디에서 국기나오는 소스에서 국가아이콘의 설명란에 국가넣어려면..??

QA

그누스터디에서 국기나오는 소스에서 국가아이콘의 설명란에 국가넣어려면..??

본문

https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=235&sfl=wr_subject%7C%7Cwr_content&stx=%EA%B5%AD%EA%B8%B0&sop=and

 

그누스터디의 국기나오는 소스에서 국기의 아이콘을 보고자있자면 여러나라들이 국기가 

보이곤 합니다. 

 

그런데 우리나라 미국 일본 등 몇개의 나라만을 알겠는데 다른 나라 국기를 보니 이게 어느 나라일까

궁금해졌어요

 

그래서 사진에는 alt="설명" 알트기능을 이용해서 설명을 넣을수 있잖아요

그 설명란에 국가를 글자로보여지게 그누스터디의 소스를 넣으려고 하는데...잘 안되네요

 

===================================================

## 추가 내용 ##

 

아이콘 대신에 국가 이름으로 출력하기

 

$row_ip  = " SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$list[$i]['wr_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ";
$result = sql_query($row_ip );
$ip_nation = sql_fetch_array($result);

 

위 코드로 대체 후 원하는 위치에 추가

 

<?php echo $ip_nation['country'] ?>
===============================================

 

제가 한 방법은

 

$row_ip = sql_fetch(" SELECT country FROM ip2nation WHERE ip < INET_ATON('{$row['mb_login_ip']}') ORDER BY ip DESC LIMIT 0,1 ");
$ip_flag = $row_ip['country'];
            
$row_country  = " SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$row['mb_login_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ";
$result = sql_query($row_country );
$ip_nation = sql_fetch_array($result);

 

 

두개의 소스를 같이 넣고 

 

<img src="<?php echo G5_IMG_URL ?>/flags/<?php echo $ip_flag ?>.png">

 

을 변형해서 아래와 같이 넣었는데..

 

<img src="<?php echo G5_IMG_URL ?>/flags/<?php echo $ip_flag ?>.png" alt="<?php echo $ip_nation['country'] ?>">

 

안되는군요

역시 고수님들의 조언이 필요한듯 합니다.

이 질문에 댓글 쓰기 :

답변 5

우선 2개의 결과물이 정상적으로 노출이 된다고 하셨으니 

결과가 나온다면 

$ip_nation = sql_fetch_array($result);

라고 했을때 

$ip_nation 에 어떠한 값이 있어야 합니다. 즉 korea 이든 뭐든 디비의 값이 해당 변수에 들어가 있어야 합니다.

따라서

echo $ip_nation;

했을때 값이 노출되는지 확인하시고

결과값이 정상적으로 노출된다면 

alt="<?=$ip_nation?>"

하시면 alt 에 값이 들어가게 됩니다

 

혹시 모르니

$row_country  = " SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$row['mb_login_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ";
$result = sql_query($row_country );
$ip_nation = sql_fetch_array($result);

 

이걸

$row_country = sql_fetch("SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$row['mb_login_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ");

$ip_nation = $row_country['country'];

 

로 변경해서 해보세요

 

그런데 문제가있습니다.
소스상에는 <img src="http://www.test.com/img/flags/kr.png" alt="Korea (South)">

잘 들어가셔서 테스트로 불러서 마우스를 올려보면 설명이 잘 올라오는데...??
그누보드 소스에 넣어서하면 소스상에는 위와 같이 보이나 마우스를 올리면 설명란이 안올라옵니다.
그누보드 코어소스에서 문제인지요.? 여기서 또 막힙니다.?

<img src="http://www.test.com/img/flags/kr.png" alt="Korea (South)">
를 아래처럼 title을 사용해 보셔요.


<img src="http://www.test.com/img/flags/kr.png" title="<?php echo $ip_nation?>">

1. 

echo " SELECT country FROM ip2nation WHERE ip < INET_ATON('{$row['mb_login_ip']}') ORDER BY ip DESC LIMIT 0,1 ";

해서 나온 값을 디비에 넣어보고 결과가 나오는지 확인

 

2. 

echo " SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$row['mb_login_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ";

해서 나온 값을 디비에 넣어보고 결과가 나오는지 확인

 

위 2가지를 모두 확인해보시기 바랍니다

 

 

 

 

 

두개의 소스는 다 잘 되는것입니다.
그런데 제가질문을 드린것은 img 사진 html 코드에 art 기능에 <?php echo $ip_nation['country'] ?> 기능을 넣으려고 하는것입니다.

그런데 이렇게 두개를 같은 곳에 넣으니 ...

$row_ip = sql_fetch(" SELECT country FROM ip2nation WHERE ip < INET_ATON('{$row['mb_login_ip']}') ORDER BY ip DESC LIMIT 0,1 ");
$ip_flag = $row_ip['country'];
           
$row_country  = " SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$row['mb_login_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ";
$result = sql_query($row_country );
$ip_nation = sql_fetch_array($result);


결과물이 안되는것입니다.

그래서 질문을 드린것이었습니다.

alt 에 정상적으로 글이 들어가있는데

마우스 롤오버시 글자가 안나오는 것은

그누보드 문제가 아닌 브라우져 문제입니다

 

이경우

1. alt 역확을 하는 레이어팝업 형식으로 처리하든지

 

2. <img src="...jpg" alt="대체 택스트" title="대체 텍스트" />  이런식으로 title 까지 주시는 방법으로 처리하시면 될듯 합니다
 

title="대체 텍스트"  를 같이 넣으니 설명란이 뜨는군요

제 브라우져는 크롬을 쓰는데... 요사이 다 크롬을 쓰겠죠.?
여하튼 타이틀을 같이 넣어주니 설명란 뜹니다

감사합니다.

넓은마인드님 또 문제가 생겼습니다

제가 지금 성공한것은 그누보드의 게시판에 한것이 아니고
그누보드내의 다른  곳에 했는데 설명란이 잘 올라오는데요

그누보드 게시판에 본격적으로 넣었고 당연히 되겠지 하고 마우스를 올려보니
국가설명란이 올라오지 않는것입니다 그래서  소스보기로 보았더니 설명란이 비어있더군요 그러니까 국가란을 가져오지 못합니다.

list.skin.php 수정한 소스

//국기표시
$row_ip = sql_fetch(" SELECT country FROM ip2nation WHERE ip < INET_ATON('{$list[$i]['wr_ip']}') ORDER BY ip DESC LIMIT 0,1 ");
$ip_flag = $row_ip['country'];

$row_country = sql_fetch("SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$$list[$i]['wr_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ");

$ip_nation = $row_country['country'];

if ($list[$i]['wr_ip'] == '192.168.0.1') {
$ip_flag = 'kr';
} else {
$ip_flag = $row_ip['country'];
}
//국기표시끝

이렇게 넣었는데 국가란을 불러오지 못하네요
왜 그런걸까요.?

프로그램 디버깅은 동일 합니다

데이터를 못불러온다면

1. 해당 쿼리를 실제로 디비에서 실행해본다

"SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$$list[$i]['wr_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 "

이 쿼리를 echo 하셔서 직접 출력해보세요

 

2. 1번에서 문제가 없다면 $ip_nation  을 echo 해본다

 

1번 2번 중에 하나는 반드시 문제가 있으므로 해당 부분을 수정 하시면 됩니다

역시 넓은마인드님이 말이 맞았습니다
제가 소스를 잘못 적어넣은것이였습니다.

게시판 아닌곳에서는 <?=$ip_nation?> 넣어서도 잘 구현되었는데
이렇게 넣었던 것이었습니다

<?=$ip_nation?> 을 <?php echo $ip_nation ?> 넣어주니 잘됩니다
감사합니다

필요하신분이 있으실까봐 자료로 남겨놓습니다

도와주신 넓은마인드님께 다시한번 감사의 글 남깁니다

 

국기표시에 마우스 올려놓으면 나라가 표시되는 소스

=======================================

쓰시는 스킨파일에서 3개 파일 수정

1. list.skin.php

 

 

        for ($i=0; $i<count($list); $i++) {

==> 밑에 소스 추가

 


        //국기표시
            $row_ip = sql_fetch(" SELECT country FROM ip2nation WHERE ip < INET_ATON('{$list[$i]['wr_ip']}') ORDER BY ip DESC LIMIT 0,1 ");
            $ip_flag = $row_ip['country'];
            
            $row_country = sql_fetch("SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$list[$i]['wr_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ");
            $ip_nation = $row_country['country'];
            if ($list[$i]['wr_ip'] == '192.168.0.1') {
            $ip_flag = 'kr';
            } else {
            $ip_flag = $row_ip['country'];
                    }
        //국기표시끝
         ?>

보이고자 하는 곳에  


<img src="<?php echo G5_IMG_URL ?>/flags/<?php echo $ip_flag ?>.png" alt="<?php echo $ip_nation ?>" title="<?php echo $ip_nation ?>">

2.  view_comment.skin.php 파일수정

 

    for ($i=0; $i<$cmt_amt; $i++) {

 

=====> 밑에 소스 추가


        //국기표시
            $row_ip = sql_fetch(" SELECT country FROM ip2nation WHERE ip < INET_ATON('{$list[$i]['wr_ip']}') ORDER BY ip DESC LIMIT 0,1 ");
            $ip_flag = $row_ip['country'];
            
            $row_country = sql_fetch("SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$list[$i]['wr_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ");
            $ip_nation = $row_country['country'];
            if ($list[$i]['wr_ip'] == '192.168.0.1') {
            $ip_flag = 'kr';
            } else {
            $ip_flag = $row_ip['country'];
                    }
        //국기표시끝

보이고자 하는 곳에 


<img src="<?php echo G5_IMG_URL ?>/flags/<?php echo $ip_flag ?>.png" alt="<?php echo $ip_nation ?>" title="<?php echo $ip_nation ?>">

 

3. view.skin.php 파일수정

제일 상단에...

 

<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/thumbnail.lib.php');

// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);

 

===== 밑에 소스 추가


//국기표시 
$row_ip = sql_fetch(" SELECT country FROM ip2nation WHERE ip < INET_ATON('{$view['wr_ip']}') ORDER BY ip DESC LIMIT 0,1 ");
$ip_flag = $row_ip['country'];
$row_country = sql_fetch("SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('{$view['wr_ip']}') AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1 ");
$ip_nation = $row_country['country'];
if ($view['wr_ip'] == '192.168.0.1') {
$ip_flag = 'kr';
} else {
$ip_flag = $row_ip['country'];
}
//국기표시 

?>

 

보이고자 하는 부분에 ..


<img src="<?php echo G5_IMG_URL ?>/flags/<?php echo $ip_flag ?>.png" alt="<?php echo $ip_nation ?>" title="<?php echo $ip_nation ?>">

 

추가사항: 아래소스는 자체서버를 두어 아이피가 내부아이피 192.168.0.1 등으로 나오올때 국가 넣는방법

 


if ($view['wr_ip'] == '192.168.0.1') {
$ip_flag = 'kr';
} else {
$ip_flag = $row_ip['country'];
}
답변을 작성하시기 전에 로그인 해주세요.
전체 1,012
QA 내용 검색

회원로그인

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