여분필드 1개에 복수값 입력받기
본문
현재 별도테마나 스킨없이
여분필드 1개를 이용하여 숫자를 입력받고 있습니다.
일반적으로 write.skin.php 파일에서
<input type="text" name="wr_1" value="<?php echo $write['wr_1']?>"
이렇게 하고 사용하고 있습니다.
(질문) 혹시 같은 필드(wr_1)에서 여러개의 숫자를 입력받을 수 있나요?
- 이용자가 몇개의 값을 넣을지는 모릅니다. 1개 ~ 5개 수준
- 1개값 입력후 엔터로 입력거나 /// 특수기호(쉼표, | , 등)을 이용해서 입력받거나
어떠한 방법도 좋습니다
예 : 500 (엔터) 550 (엔터) 660 (엔터) 입력시 3개값을 wr_1[1], wr_1[2], wr_1[3]에 저장
- 만약 550 (엔터)값이 잘못되면 입력도중 삭제도 가능
상당히 초보라서 상세히알려주시기를 간절히 부탁드립니다.
나중에는 해당 필드의 값을 범위검색으로도 사용될 예정입니다.
500~540으로 검색시, 입력된 배열값중 하나라도 매칭되면 출력되도록 구성할 계획입니다.
답변 3
나중에는 해당 필드의 값을 범위검색으로도 사용될 예정입니다.<==
이렇게 하려면 한 필드에 값을 여러개 저장하도록 해서는 안됩니다
컬럼 하나에 여러값을 사용해야할때
보통 explode, implode 가 많이 사용됩니다만
https://www.php.net/manual/en/function.explode.php
https://www.php.net/manual/en/function.implode.php
검색이 목적인 경우 simple type 컬럼보다 성능이 떨어지게 됩니다.
explode 를 사용하시면 되실 것 같습니다.
저장시에는 textarea 폼에 텍스트를 그대로 입력하시고
출력시에는 explode 를 이용하시면 되겠습니다.
$wr_1_exp = explode("\n",$view['wr_1']);
for($i=0; $i<count($wr_1_exp); $i++) {
echo $wr_1_exp[$i];
}
만약 특수기호를 넣는다면 아래처럼도 가능합니다.
$wr_1_exp = explode("|",$view['wr_1']); // 어느 특수문자를 넣어도 됩니다. 구분자를 뭘로 설정하냐에 따라 틀립니다.
for($i=0; $i<count($wr_1_exp); $i++) {
echo $wr_1_exp[$i];
}
배열은 0부터 시작하므로 만약 특정 번호의 배열을 출력하고 싶으시면 아래처럼도 가능합니다.
$wr_1_exp = explode("\n",$view['wr_1']);
echo $wr_1_exp[2]; // 3번째 배열 출력
\n = <br> 같은 개념이라 texarea에서 엔터로 줄바꿈시 DB 상에는 \n 로 들어가게됩니다.
explode 는 작성자님이 말씀하신 예를 들은 질문에 그대로 부합합니다.
위에 링크 제목처럼 "문자열을 분할하여 배열로 저장하는 함수" 입니다.
변수명 $wr_1_exp 는 임의로 정한 이름이라 작성자님이 맞게 수정하시면 될 듯 합니다. !-->!-->