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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
그누스터디에서 국기나오는 소스에서 국가아이콘의 설명란에 국가넣어려면..??

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'];
}
답변을 작성하시기 전에 로그인 해주세요.
전체 8
QA 내용 검색

회원로그인

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