셀렉트 질문입니다 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

셀렉트 질문입니다 정보

셀렉트 질문입니다

본문

<tr>
 <td>게시판ID</td>
 <? for ($i=7; $i<=11; $i++) {
 echo"<td>";
 echo"<select name='cf_$i_2htablatest' class=cssfl>";
 
$sql = " select bo_table, bo_subject from $g4[board_table] order by bo_table asc ";
$result = sql_query($sql);
while($data = sql_fetch_array($result))
 {
 echo "<option value='".$data[bo_table]."'>".$data[bo_subject]."</option>\n";
}
echo"</select>";
echo "<script language='JavaScript'> document.getElementById('cf_$i_2htablatest').value = '$row[cf_$i_2htablatest]'";
echo"</script>\n";
echo"</td>";
?>
 </tr>

위에서 무엇이 문제인지요..


Parse error: syntax error, unexpected T_VARIABLE, expecting ']' in F:\htdocs3\gnu\adm\builder400\config_form_tab_latest.php on line 96

실행하면 위와 같이 오류가 뜨네요..

96line 은 echo "<script language='JavaScript'> document.getElementById('cf_$i_2htablatest').value = '$row[cf_$i_2htablatest]'";
 입니다

댓글 전체

먼저 변수명이 올바른 방식으로 쓰이지 않은 점은 고치셔야 겠습니다. $i_2htablatest에서 $i만 생각했을지 모르지만 php 변수는 a에서 z, A에서 Z, 그리고 _ 및 숫자가 가능합니다. 그러므로 php에서 $i_2htablatest로 인지해서 값이 없는 것으로 인지될 가능성이 존재하므로 떼어서 생각하셔야 합니다.

예로 echo"<select name='cf_$i_2htablatest' class=cssfl>"; 는
echo"<select name='cf_".$i."_2htablatest' class=cssfl>";로 하는 습관을 가지시구요.

문제가 되는 96라인 역시 위에서 언급한 그 문제와 $row[cf_$i_2htablatest]입니다. 생각해보면 쉽게 답이 나옵니다. 그 문장이 따옴표 안으로 들어가 있다는데 주의하셔야 합니다. 변수안에 변수 식은 따옴표 안에서는 인식이 잘 되지 않습니다.

여기를 = '".$row['cf_'.$i.'_2htablatest']."'";라고 하거나 혹은
$tmp = $row['cf_'.$i.'_2htablatest'];
echo "<script language='JavaScript'> document.getElementById('cf_$i_2htablatest').value = '$tmp'"; 식으로 하셔야 코드가 분명해 집니다.
답변감사합니다...아래와 같이 하니 오류는 없어지는데...문제는 데이타 저장이 안되네요..
<tr>
 <td>게시판ID</td>
 <? for ($i=7; $i<=11; $i++) {
 echo"<td>";
echo"<select name='cf_".$i."_2htablatest' class=cssfl>";
 
$sql = " select bo_table, bo_subject from $g4[board_table] order by bo_table asc ";
$result = sql_query($sql);
while($data = sql_fetch_array($result))
 {
 echo "<option value='".$data[bo_table]."'>".$data[bo_subject]."</option>\n";
}
echo"</select>";
echo "<script language='JavaScript'> document.getElementById('cf_$i_2htablatest').value = '".$row['cf_'.$i.'_2htablatest']."'";
echo"</script>";
echo"</td>";
}
?>
 </tr>



'cf_7_2htablatest'  에서 'cf_11_2htablatest' 까지의 게시판 목록을 저장하고자 셀렉트박스를 구현하였으나 코딩이 너무 길어 배열로 처리해보려고 했는데...

위처럼하니 배열로 셀렉트박스가 출력되기는 하는데..선택하여 저장하면 필드에 맞게 저장이 안되네요....
그건 맨 마지막 document.getElementById를 쓰셨는데 각 select구문에 id값이 없어서 그런 겁니다.  다음으로 수정해서 테스트 해보세요.

echo"<select name='cf_".$i."_2htablatest' id='cf_".$i."_2htablatest' class=cssfl>";

그리고 맨 마지막도 마찬가지로 echo "<script language='JavaScript'> document.getElementById('cf_".$i."_2htablatest').value = '".$row['cf_'.$i.'_2htablatest']."'";로 수정하시구요. 이 부분은 처음에 저도 보질 못했네요. --
다음이 테스트 버젼입니다...

<table>
  <tr>
 <td>게시판ID</td>
 <?php


for ($i=7; $i<=11; $i++) {

$row['cf_'.$i.'_2htablatest'] = 'tbl_'.$i.'_'.$i;

$result = array(
1=>array('bo_table'=>'tbl_'.$i.'_7', 'bo_subject'=>'tbl_'.$i.'_7_subject'),
2=>array('bo_table'=>'tbl_'.$i.'_8', 'bo_subject'=>'tbl_'.$i.'_8_subject'),
3=>array('bo_table'=>'tbl_'.$i.'_9', 'bo_subject'=>'tbl_'.$i.'_9_subject'),
4=>array('bo_table'=>'tbl_'.$i.'_10', 'bo_subject'=>'tbl_'.$i.'_10_subject'),
5=>array('bo_table'=>'tbl_'.$i.'_11', 'bo_subject'=>'tbl_'.$i.'_11_subject'));


echo"<td>";
echo"<select name='cf_".$i."_2htablatest' id='cf_".$i."_2htablatest' class=cssfl>";

//$sql = " select bo_table, bo_subject from $g4[board_table] order by bo_table asc ";
//$result = sql_query($sql);
//while($data = sql_fetch_array($result))
while($data = array_shift($result))
{
echo "<option value='".$data[bo_table]."'>".$data[bo_subject]."</option>\n";
}
echo"</select>";
echo "<script language='JavaScript'> document.getElementById('cf_".$i."_2htablatest').value = '".$row['cf_'.$i.'_2htablatest']."'";
echo"</script>";
echo"</td>";
}
?>
 </tr>
</table>

잘 되는 거 확인하고 원하는 대로 수정해서 사용하세요.
장문의 예제까지 수고를 해주시니 더욱 감사드립니다..

그런데 위의 주석처리하신 부분은 그누보드의 데이타베이스에서 전체 게시판을 불러오는 부분인데..주석처리하시니 위에 입력한 부분의 아이디만 출력이 되네요...

저의 요지는

전체게시판을 셀렉트형으로 불러들여 5개의 필드에 저장하고 해당 게시판의 최신글을 게시판을 선택하여 출력하고 싶거든요...

그런데 배열로하지 않고 코딩을 하니 셀렉트문을 5번이나 해야하니 코딩의 길이가 너무 길어서..

필드값5 개에 출력하는 것을 배열로 하고 싶습니다..
헐... 예제는 작동이 잘된다는 점을 보이려고 한 것이지... 당연히 그대로 붙이시면 안되구여...

그럼 아래것으로 그대로 쓰세요:

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

  <tr>
 <td>게시판ID</td>
 <?
for ($i=7; $i<=11; $i++) {
echo"<td>";
echo"<select name='cf_".$i."_2htablatest' id='cf_".$i."_2htablatest' class=cssfl>";

$sql = " select bo_table, bo_subject from $g4[board_table] order by bo_table asc ";
$result = sql_query($sql);
while($data = sql_fetch_array($result))
{
echo "<option value='".$data[bo_table]."'>".$data[bo_subject]."</option>\n";
}
echo"</select>";
echo "<script language='JavaScript'> document.getElementById('cf_".$i."_2htablatest').value = '".$row['cf_'.$i.'_2htablatest']."'";
echo"</script>";
echo"</td>";
}
?>
 </tr>
감사합니다..... 그런데...뭔가 또 문제가 있네요....

역시 안되는 군요....

혹시 시간 되시면 저의 사이트에서 한번 봐주세요..

홈페이지주소 : http://www.math21.net/gnu/index.php

관리자 페이지에.. 서..

상단의 메인페이지 / 최신글:탭/메인중앙 탭 최신글 설정에서 게시판ID 설정부분입니다..

상단의 관리용게시판 메뉴에서...
파일관리 / gnu/adm/builder400/config_form_tab_latest.php

입니다...

무리한 부탁을 드려죄송합니다..
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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