비주얼스튜디오코드

[ 24일차 ] 자료실 만들기 1

ggosoon 2022. 6. 20. 17:30

**오토셋 오류나서 재 설치하고 korea에 examtbl 테이블 만들때 이름 examtbl2 로변경해서 만들어서 

코드에 테이블명 examtbl2로 다 변경함 ! **


22.06.21

세가지 기본적인 웹 프로그래밍: php     jsp    asp

파일을 첨부하는 것은 type을 file로 잡아준다 
<tr><td> 사 진  </td><td><input type=file name=img></td></td>

값을 넘기는 것은 form 안에 있어야한다 & 액션이 필요하다

<form action=member_ok.php method=post 
      enctype="multipart/form-data">
</form>

※요즘엔 method를 post를 많이 쓴다 get의 단점을 보완한 것이기 때문에 
get은 소량의 데이터 보낼 수 있음/ post는 파일, 대량의 데이터 전송가능, 보안성이 있다 
get으로 보내면 url의 값이 노출이 되지만 post로 보내면 url의 값이 보이지 않음 

member.php




<? include "top.php"?>

<style>
    table{
        width:350px;
        height:250px;
    }
td{
    text-align:center;
}
</style>

<script>
  function ck1(){
    if(f1.sno.value==""){
    alert("학번을 입력해주세요");
    f1.sno.focus();
    return false;
    } else{
    alert("학생 성적이 정상적으로 입력되었습니다");
    }
  }
</script>

<section>
     <br><br><div id=section1><b>학생 정보 입력</b></div>
     <br>
<div align=center>
<form name="f1" action="member_ok.php" onSubmit="return ck1()"
      method="post" 
      enctype="multipart/form-data">

<table border=1>
<tr><td >학번</td><td><input type=text name=sno></td></tr>
<tr><td>주소</td><td><input type=text name=addr></td></tr>
<tr><td>사진</td><td><input type=file name=img></td></tr>

<tr><td colspan=2 align=center><input type=submit value="저장하기">
</table>
</form>
</div>
 
</section>
<? include "bottom.php"?>

 

-member_ok.php 파일 만들기 

<?
$sno=$_POST['sno'];
$addr=$_POST['addr'];
$img=$_FILES['img'];  // files 로 받아오면 array (배열) 로 받아온다
echo $sno. ":" .$addr. ":" .$img;

?>

member_ok.php

<?
 include "DBConn.php"
?>

<?
$sno=$_POST['sno'];
$addr=$_POST['addr'];
$mfile=$_FILES['img']['name']; //실제 파일명이 넘어옴(고양.png)
$tmp=$_FILES['img']['tmp_name'];
echo $sno. ":" .$addr .":".$mfile ;

if($mfile==""){
    echo "빈파일";
    $mfile='space.png';
}else{
    if(file_exists("./img/$mfile")){ //파일 중복에 대한 것
       
        $f_fname = basename($mfile,strrchr($mfile,'.'));  //basename에 파일변수만 넣으면 파일명가져오고 뒤에 '.png'써주면 확장자명 제거된다 
        //strrchr 은 파일에서 .이하의 모든 것(중복이 있는경우에 제일 마지막에있는 . 이하)을 반환해주는 옵션
      
        $time = date("His",time()); //시간 나타내기 (시분초)

        $ext=strrchr($mfile,'.'); //확장자 나타내기     

        echo "<br>". $f_fname ."_".$time.$ext; //고양_111608.PNG 으로 나타난다 
    }else{
        echo $mfile;
    move_uploaded_file($tmp,"./img/$mfile");
    }
    move_uploaded_file($tmp,"./img/$mfile"); //첨부된 파일 img파일에 저장하기 
}

-------------------------------------------------------
if문 부분 아래거로 수정

if($mfile==""){
    echo "빈파일";
    $mfile='space.png';
}else{
    if(file_exists("./img/$mfile")){ //파일 중복에 대한 것
       
        $f_fname = basename($mfile,strrchr($mfile,'.')); 
       
        $time = date("His",time()); //시간 나타내기 (시분초)

        $ext=strrchr($mfile,'.'); //확장자 나타내기     
        $mfile= $f_fname."_".$time.$ext;
        move_uploaded_file($tmp,"./img/$mfile");
    }else{
        move_uploaded_file($tmp,"./img/$mfile"); 
    }
}


$SQL= "insert into member(sno,addr,img) values ('$sno','$addr','$mfile')"; //데이터베이스 연동되서 들어감
$conn->query($SQL);
echo $SQL;
?>

?>

*mysql은 insert 할때 설정값보다 큰값은 오류가 나는게 아니고 짤려서 들어간다 

 

img 파일

 

 

데이터베이스 연동
성적조회 목록

 

-성적조회목록에서 삭제하기 

member_delete.php



<?
 include "DBConn.php"
?>


<? 

$sno= $_GET['sno'];

$SQL= "select * from member where sno='$sno'";
$result= $conn-> query($SQL);
$row=$result->fetch_assoc();
$img= $row['img'];

if($img !='space.png'){
    unlink("./img/$img");  //삭제하기 
}

$SQL = "delete from member where sno ='$sno'";
$conn-> query($SQL);
?>

<script>
location.href="member_list.php";
</script>

list 파일에 <td><a href=member_delete.php?sno=<?=$row['sno']?>><?=$row['addr']?></td> </a>

주소에 링크 걸고 member_delete.php 파일 만들어서 위 내용 넣고 링크 누르면 삭제 된다

 


-회원조회 페이지에서 주소 누르면 학생정보 수정하기 창 뜨게 설정하기 

멤버 파일 복사해서 멤버 에디트 파일 만들기 

리스트파일에 <td><a href=member_edit.php?sno=<?=$row['sno']?>><?=$row['addr']?></td> </a> 수정하고

member_edit.php




<? include "top.php"?>
<? include "DBConn.php"?>

<?

$sno=$_GET['sno']; //sno값 받아오고

$SQL= "select * from member where sno='$sno'";
$result= $conn-> query($SQL);
$row=$result->fetch_assoc();
$sno= $row['sno'];
$addr= $row['addr']; //3개 값 받아오기
$img= $row['img'];
?>

<style>
    table{
        width:350px;
        height:250px;
    }
td{
    text-align:center;
}
</style>

<script>
  function ck1(){
    if(f1.sno.value==""){
    alert("학번을 입력해주세요");
    f1.sno.focus();
    return false;
    } else{
    alert("학생 성적이 정상적으로 입력되었습니다");
    }
  }
</script>

<section>
     <br><br><div id=section1><b>학생 정보 수정하기</b></div>//이름 변경
     <br>
<div align=center>
<form name="f1" action="member_update.php" onSubmit="return ck1()" //액션부분 member_update.php로 바꾸기
      method="post" 
      enctype="multipart/form-data">


<table border=1>
<tr><td colspan=2 align=center width=400 height=150><img src=./img/<?=$img?>></td></tr> //이미지 부분 추가하기
<tr><td width=100>학번</td><td><input type=text name=sno value="<?=$sno?>"></td></tr> //value 값넣기
<tr><td>주소</td><td><input type=text name=addr value="<?=$addr?>"></td></tr>  //value 값넣기
<tr><td>사진</td><td><input type=file name=img></td></tr> //이미지는 value값 넣어도 딱히 반영없음

<tr><td colspan=2 align=center><input type=submit value="수정하기"> //이름 변경
</table>
</form>
</div> 
<br>
 
</section>
<? include "bottom.php"?>