그누스터디에서 국기나오는 소스에서 국가아이콘의 설명란에 국가넣어려면..??
본문
그누스터디의 국기나오는 소스에서 국기의 아이콘을 보고자있자면 여러나라들이 국기가
보이곤 합니다.
그런데 우리나라 미국 일본 등 몇개의 나라만을 알겠는데 다른 나라 국기를 보니 이게 어느 나라일까
궁금해졌어요
그래서 사진에는 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'];
로 변경해서 해보세요
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가지를 모두 확인해보시기 바랍니다
alt 에 정상적으로 글이 들어가있는데
마우스 롤오버시 글자가 안나오는 것은
그누보드 문제가 아닌 브라우져 문제입니다
이경우
1. alt 역확을 하는 레이어팝업 형식으로 처리하든지
2. <img src="...jpg" alt="대체 택스트" title="대체 텍스트" /> 이런식으로 title 까지 주시는 방법으로 처리하시면 될듯 합니다
프로그램 디버깅은 동일 합니다
데이터를 못불러온다면
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번 중에 하나는 반드시 문제가 있으므로 해당 부분을 수정 하시면 됩니다
필요하신분이 있으실까봐 자료로 남겨놓습니다
도와주신 넓은마인드님께 다시한번 감사의 글 남깁니다
국기표시에 마우스 올려놓으면 나라가 표시되는 소스
=======================================
쓰시는 스킨파일에서 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'];
}