php

[php 에러] Call to undefined function create_function() 해결 방법

Uncaught Error: Call to undefined function create_function() 에러는 create_function() 가 php8.x부터는 지원하지 않아 발생하는 오류이다.  create_function 부분을 function을 다르게 정의해서 수정하면 된다. 수정전add_action( 'plugins_loaded', create_function( '', 'global $BBCode; $BBCode = new BBCode();' ) ) 수정 후function my_hacked_function(){ global $BBCode; $BBCode = new BBCode();}add_action( 'plugins_loaded', 'my_hacked_function'); ..

[php] explode 배열 최소값, 최대값 구하기 min(), max()

explode 배열 최소값, 최대값 구하기 보통 데이터가 array 배열로 되어있으면 min(), max()함수를 써서 바로 최소값 최대값을 구할 수 있다.$arr = array(1,2,3,4,5,6,7); $price1 = min($arr);$price2 = max($arr);  하지만 데이터가 이미 구분자로 합쳐서 들어가져있다면 (예 : 100000|1500000|200000|130000)배열로 변경한 후에 최소값, 최대값을 구할 수 있다.$str = $view['sp_price'];$sub_str = explode("|", $str);$new_str = array();foreach ( $sub_str as $row ) { $arr = explode( ',', $row );}echo min($a..

[php] DB 텍스트 특수문자 (<, >, &, ", ' 등) 인식 / html 변환

DB 데이터 자체에는 특수문자를 포함한 데이터가 잘 들어가지는데, 불러올 때 꺽쇠나 특수문자가 들어간 부분은 삭제되고 보여지는 오류가 있어 해결할 수 있는 방법을 알아보았다.를 태그로 인식하지 않게 하기 위해서는 htmlspecialchars() 함수를 써주면 된다. htmlspecialchar()PHP 4, PHP 5, PHP 7, PHP 8 사용가능 어떤 문자들은 HTML에서 특별한 정의를 지니는데 그 의미를 보존하려면 HTML엔티티로 표현해야한다. 이 함수는 이러한 변환을 거친 문자열을 반환해준다. CharacterReplacement& (앰퍼샌드)&amp;" (쌍따옴표)&quot;' (따옴표)&#039 (부등호)&it;> (부등호)&gt;  사용예시[예시코드1]$entity= "내용내용";echo..

[php] Undefined variable, Undefined index 에러 해결

php 에서 Undefined variable, Undefined index 에러메세지는 값(변수)이 제대로 정의되지 않아 발생하는 오류이다. 값이 없는 경우를 대비해서 아래처럼 미리 지정을 해주어야한다. [에러 해결방법] isset()를 사용한 변수 선언 에러메세지가 Undefined variable : XX in /web/home/, Undefined index : XX in /web/home/ 이런식으로 뒤에 어떤 변수에 대한 오류인지 뜰텐데, 해당 변수를 isset()함수를 사용하여 값을 정해줘야한다. 해당 변수에 대한 값이 있으면 해당값을 보여주고 아니면 공백으로 값을 전달할 수 있도록 해야한다. $value = isset($_POST['value']) ? $_POST['value'] : '';..

[php] 입력 필드 쪼개기 (체크박스 값 DB 저장)

체크박스 또는 여러개의 입력필드 내용을 한 필드안에 저장해서 사용해야하는 경우가 있다. 아래와 같이하면 필드 하나에 데이터를 저장해 관리할 수 있다. 글쓰기 페이지 코드 'wr_1'라는 필드를 쪼개서 사용할 것이다. 값을 받을 체크박스 name은 임의로 관리하기 편한 이름으로 지정하면 된다. (type1~type4) * wr_1 : 값을 저장할 필드 (type1~type4에서 받은 값을 wr_1에 한번에 저장한다) * type1~type4 : 임의로 값을 받을 필드 (DB에 해당 필드 없음) [코드 설명] - 상단의 $wr1 = explode("|", $write['wr_1']); 와 체크박스 태그 안의 checked 부분은 글쓰기 페이지를 수정 페이지로도 사용하는 경우에 필요하다. 해당 값이 있는 경우..

[Sql/php] rownum 결과 값에서 몇번째 행인지 구하기

SQL 쿼리를 통해 데이터를 가져와서 해당 데이터가 몇번째에 위치해 있는지 구할때 ROWNUM 기능을 활용해 불러올 수 있다. 나의 경우에는 해당 날짜의 주문건을 불러와 주문번호 순서대로 1부터 차례대로 번호를 매기는 작업이 필요하여 아래와 같이 쿼리문을 작성하였다. SELECT @ROWNUM: = @ROWNUM + 1 AS rownum, od_id FROM table as a, ( SELECT @ROWNUM: = 0 ) r WHERE od_invoice_time between '2023-05-31 00:00:00' and '2023-05-31 23:59:59' ORDER BY od_id ASC 그러면 이렇게 조건에 해당하는 데이터들이 순서대로 번호가 매겨지게 된다. 이 중에서도 특정 데이터가 몇번째에 ..

[php] mysql 결과 카운트 / 행 개수 구하기

테이블의 데이터 총개수를 구하고 싶을 때 아래와 같이 함수를 사용해 개수를 구할 수 있다. [방법1] sql_num_rows() 함수 사용 테이블 행 개수는 sql_num_rows 함수로 간편하게 구할 수 있다. 쿼리문으로 데이터도 가져오면서 개수도 세야 할 때 유용하게 사용이 가능하다. sql_num_rows 함수는 리절트 셋(result set)의 총 결과 값 개수를 숫자로 반환한다. php5 이상부터는 mysqli_num_rows로도 사용 가능하다. $sql = " SELECT * FROM table ----- "; $result = sql_query($sql); //sql_query($db_conn, $selSql); $count = sql_num_rows($result); echo $count;..

[php] csv 파일 다운 한글 깨짐 해결 방법

온라인상에서 csv파일로 데이터를 다운받게하면 종종 한글이 깨져보일 때가 있다. 메모장으로 열어서 EUC-KR로 변경한 뒤 저장한다음 엑셀로 여는 방법도 있지만, 일일히 변경해서 열려면 번거롭다. 한글이 깨져보이지 않고 csv 파일을 다운 받을 수 있도록 아래 코드들을 추가하여 해결이 가능하다. 1) charset을 UTF-8로 설정한다. header('Content-type: text/csv; charset=utf-8'); 2) header아래쪽에 echo "\xEF\xBB\xBF"; 한줄(엔티안이라고 부른다고 한다)을 추가한다. echo "\xEF\xBB\xBF"; * 참고로 \xEF\xBB\xBF 이 문자는 UTF-8을 16진수로 표기한 것인데, 특정 문구를 넣어서 문서가 제대로된 캐릭터셋 값을 가..

[php] 에러메시지 나타내기 / php 오류 찾기

php 코드작업을 하다가 제대로 작동안할 때, 일부러 에러메세지를 출력하여 어디서 오류가 났는지 확인 할 수가 있다. 아래 코드를 파일 안에 넣어준다. 그러면 아래처럼 코드를 추가한 페이지에 에러메세지가 뜨게 된다. 이 에러메세지를 확인한 후, 알맞게 코드를 수정하면 된다. 아래 메세지의 경우에는 변수들이 제대로 정확히 정의되지 않아서 발생한 에러이다. 반대로 에러메세지가 뜨는 경우, 뜨지 않게 하려면 아래 코드를 추가하면 된다.

[php] Warning: Illegal string offset 'file' 오류수정

파일을 수정한 적도 없는데, 어느 날 갑자기 게시판 글 수정 페이지에서 파일 에러 문구가 떴다. Warning: Illegal string offset 'file' in /web/home/xxx/html/skin/board/basic/write.skin.php on line 156 Warning: Illegal string offset 'source' in /web/home/xxx/html/skin/board/basic/write.skin.php on line 157 Warning: Illegal string offset 'size' in /web/home/mymoodae/html/skin/board/basic/write.skin.php on line 157 글 신규 등록시에는 뜨지 않는 에러인데, 첨부..

[php] PHPExcel 엑셀로 데이터 다운받기

1. PHPExcel 다운받기 PHPExcel은 데이터를 엑셀로 다운받을 수 있게 해주는 라이브러리이다. https://github.com/PHPOffice/PHPExcel 홈페이지에서 다운받거나 아래 파일을 다운 받는다. 2. 다운로드 파일 코드 별도의 php파일을 만든 후, 파일 상단에 include_once('/PHPExcel.php');를 넣어 PHPExcel.php을 불러온다. include_once('/PHPExcel.php'); 그 다음으로 SQL문 등 데이터를 가져오는 구문들을 넣어주고 $rows[] = array(1열데이터,2열데이터, 3열데이터, 4열데이터, 5열데이터); 이런식으로 array()안에 데이터를 콤마로 구분하여 넣어준다. 나는 세개의 시트로 나누어서 다운받게 할 예정이라 ..

fullcalendar 이벤트 표기 안되는 오류 (Fatal error: Cannot redeclare class Event)

FullCanlendar는 자바스크립트 기반으로 월별/주별/일별 다양한 포멧으로 달력 기능을 제공해주는 오픈소스이다. https://fullcalendar.io/ FullCalendar - JavaScript Event Calendar Open Source... With over 10 years of open source and over 120 contributors, FullCalendar will always have a free and open source core. Learn more fullcalendar.io 잘 잘동하던 fullcalendar가 갑자기 어느날 부터 이벤트를 달력에 표기하지 못하는 오류가 발생. 1. 오류 찾기 fullcalendar 파일 중 이벤트를 불러오는 get-event..

php + ajax return false 처리하기

php로 폼 내용을 전송하는 경우, 폼 스크립트 안에 ajax를 넣어 값을 체크한 뒤에 문제가 없는 경우 전송하는 스크립트를 짜는데, ajax success 안에 바로 return false를 쓰니 제대로 실행되지 않고 그냥 submit이 되어버렸다. 해결 방법은 ajax 구문안에 return false를 직접적으로 쓰기보다는 스크립트 상단 부분에 rtn=false;를 정의한뒤 ajax 구문안에서 실패한 경우 rtn = false; 성공한 경우 rtn = true 값을 넣어주고 스크립트 맨 마지막에 return rtn을 호출하면 된다. 이때 ajax 구문안에 async: false를 꼭 넣어줘야한다. function checkform() { var rtn = false; // 변수선언 $.ajax({ t..

[php] strpos(), strrpos(), in_array() 특정 문자열 검색하기

strpos()와 strrpos() 함수는 strstr()과 유사한 방식으로 동작한다. 하지만 strpos()의 실행 속도가 더 빠르기 때문에 strstr()대신 strpos()의 사용을 권장한다고 한다. 문장이나 특정 변수에서 특정 문자가 있는지 체크하려면 strpos(), strrpos() 함수를 사용하면 된다. strpos([대상 문자열], [조건 문자열]) strpos([대상 문자열], [조건 문자열], [검색시작위치(숫자)]) strrpos([대상 문자열], [조건 문자열]) strrpos([대상 문자열], [조건 문자열], [검색시작위치(숫자)]) 둘의 차이는 strpos 함수는 영문자의 대소문자를 구별하여 검색한다. 영문자 대소문자를 구별하지 않고 검색하려면 strrpos()함수를 사용하면 ..