동적인 더블 콤보 박스 (javascript+php)

출처 – phpschool.com
작성자 – 인포

이제 여기 팁에 다단계로직에 이어 두번째 올리내요…
오늘은 동적인 더블콤보박스라고 해야 하려나… 예를 들어 제조사를 선택
할경우 그 회사의 브랜드가 리플레쉬 되지 않고 출력하는 것입니다…

물론 데이터베이스 연결해서요…

저도 정적으로 나와 있는 자바스크립트를 조금 응용한 것이고 테스트용으로
만든것이라 팁이라 할 수도 없습니다…

그리고 아래 소스는 위에서 언급했듯이 테스트용으로 작업했기에 부적절한
변수들이 많이 사용되었고 소스가 다소 어지럽게 되어있으며, 소스를 시간
상의 관계로 줄이는 작업을 하지 못했으니… 여러분들은 소스를 줄여
보세요… .

여기 테스트 URL입니다.
http://www.inforweb.pe.kr/~inforweb/test/double_combo.php

아! 그리고 테이블 구조[2개]는 간단해서 설명을 드리지 않겠습니다…
허접하지만 도움이 될 분들에게는 미약하나마 도움이 되길…*^.^*

====================================================================
데이터베이스 연결

$qry_b=”select * from brand_name order by company_id asc, brand_name asc”;
$ret_b=mysql_query($qry_b);

$qry_c=”select * from company order by company_id asc”;
$ret_c=mysql_query($qry_c);
?>

인포카페 더블콤보 테스트


제조사 브랜드명


가로세로 비율틀려지지 않고 크기에 맞는 썸네일 만들기

출처 – phpschool.com

이런게 필요해서 검색해봤더니 가로세로 비율 유지하면서 만드는거나, 무조건 크롭시키는 소스는 있는데 알맞는 크기로 비율을 유지하며 만드는건 없더군요.. 하나 있긴 했는데 리눅스 명령을 사용하는거라서 이식성부족했구요..
그냥 gd만을 이용해서 썸네일을 만들어주는 함수입니다.
600×400 이미지를 300×200 으로 만들라고 하면 당연히 비율에 맞게 줄여지겠지만 400×600이미지를 300×200으로 만들라고 하면 3/4 비율로 줄인후 세로를 가운데를 중심으로 crop 시켜줍니다.
이미지에서 중요한 부분은 가운데쪽에 있을꺼같아서 가운데를 중심으로 양쪽 또는 위아래를 잘라내도록 했습니다. 특별한 기술이라기 보다 이런걸 찾는분들 쉽게 찾으시라고 올려드립니다.. 검색에 잘 걸리게 키워드도 넣어두지요. ㅎㅎ

사용법은 thumbnail(파일명,x사이즈,y사이즈) 입니다.
그럼 소스 갑니다.
/****************************************************************************
* thumbnail.lib.php
* 가로세로 비율이 흐트러지지 않고 지정한 크기로 썸네일을 만들어줌
* 2002.2.18 – 거친마루
*****************************************************************************/

## Image LoadJpeg (String $fName);
function LoadImage ($fName) {
$file_ext = strtolower(substr(strrchr($fName,”.”), 1)); //확장자
switch ($file_ext) {
case “jpg”: case “jpeg”:
$im = @ImageCreateFromJPEG ($fName);
break;
case “gif”:
$im = @ImageCreateFromGIF ($fName);
break;
case “png”:
$im = @ImageCreateFromPNG ($fName);
break;
}

if (!$im) {
$im = ImageCreate (150, 30);
$bgc = ImageColorAllocate ($im, 255, 255, 255);
$tc = ImageColorAllocate ($im, 0, 0, 0);
ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc);
ImageString ($im, 1, 5, 5, “Error loading $fName”, $tc);
}
return $im;
}

## Image thumbnail_jpg(String $filepath, int $width, int $height);
function thumbnail ($filepath,$width=””,$height=””) {
$size=getimagesize($filepath); //원본 이미지사이즈를 구함
$shr_rateX = $width / $size[0];
$shr_rateY = $height / $size[1];
$base = ($shr_rateX <= $shr_rateY) ? "y" : "x";
$src_im=LoadImage($filepath);
if($base == “y”) {
$new_width=round(($size[0] * $height)/$size[1]); // (가로크기 * 새로운 세로 크기) / 세로크기
$offsetX = round(($new_width – $width) / 2); //각각 좌우로 잘라낼 길이
$offsetY = 0;
}
if($base == “x”) {
$size=getimagesize($filepath); //원본 이미지 사이즈 구함
$new_height=round(($size[1] * $width)/$size[0]); // (세로크기 * 새로운 가로크기) / 가로크기
$offsetX = 0;
$offsetY = round(($new_height – $height) / 2); // 각각 상하로 잘라낼 길이
}

$dst_im=ImageCreate($width,$height); //결과물 이미지 생성
ImageCopyResized($dst_im,$src_im,0,0,$offsetX,$offsetY,$width,$height,ImageSX($src_im)-$offsetX,ImageSY($src_im)-$offsetY); //만들기
return $dst_im;
}

?>