개발 꿀팁/PHP

PHP 심플프로젝트 케이스(개선판)

Jammie 2022. 7. 19. 13:23
반응형

최근 php 개학, 오후에는 할 일 없이 빈둥빈둥 놀고 있습니다. 작은 프로젝트 연습, 즉 php로 웹 페이지를 쓰고, 데이터베이스 안의 것들을 첨삭하고 수정하고, 아래에 공유합니다. 본인의 업무 능력이 아직 얕기 때문에, 여러분의 조언이 환영입니다!
단순 효과:
1. 웹 프레젠테이션 데이터베이스 데이터 열기:

2.기능을 삭제하고 정보기능을 추가합니다

3.정보수정기능(데이터포함)

다음은 소스 코드입니다.
데이터베이스 파일: (수)라이브러리 이름: dataphp 테이블 이름: student)

/*
SQLyog 기업판 - MySQL GUI v8.14 
MySQL - 5.5.5-10.3.7-MariaDB : Database - dataphp
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`dataphp` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `dataphp`;

/*Table structure for table `student` */

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(15) DEFAULT NULL,
  `sex` char(4) DEFAULT NULL,
  `address` varchar(20) DEFAULT NULL,
  `hobby` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;

/*Data for the table `student` */

insert  into `student`(`id`,`name`,`sex`,`address`,`hobby`) values (1,'장비','남자','허난 성','수영'),(6,'대교','여자','신장 성','수영'),(10,'v','남자','산시 성','수영'),(16,'조조','여자','브라질','수영'),(17,'장삼','여자','산시 성','농구');

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

홈 화면: service.php

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "dataphp";
// 연결 만들기
 $conn = mysqli_connect($servername, $username, $password,
    $dbname);
// 연결 감지
if (!$conn) {
    die("Connectionfailed: " . mysqli_connect_error());
}
//비즈니스 추가(studeng_form.php 페이지에서 Post 제출 파라미터 수신)
if(isset($_POST["name"])&&isset($_POST["sex"])&&isset($_POST["address"])&&isset($_POST["hobby"])){
    $name=$_POST["name"];
    $sex=$_POST["sex"];
    $address=$_POST["address"];
    $hobby=$_POST["hobby"];
    $hobbies=implode(",",$hobby);
    $sql = "INSERT into student (name,sex,address,hobby)
    VALUES ('$name','$sex','$address','$hobbies')";
    if (mysqli_query($conn, $sql)) {
        echo  "<script>alert('新纪录插入成功')</script>";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }
}
//업무수정(updatestudent.php페이지에서 Post제출 받은 파라미터)
if(isset($_POST["name2"])&&isset($_POST["sex2"])&&isset($_POST["address2"])&&isset($_POST["hobby2"])&&isset($_POST["id"])){
    $id=$_POST["id"];
    $name2=$_POST["name2"];
    $sex2=$_POST["sex2"];
    $address2=$_POST["address2"];
    $hobby2=$_POST["hobby2"];
    $hobbies2=implode(",",$hobby2);
    $sqlupdate = "UPDATE student SET NAME='$name2',sex='$sex2',address='$address2',hobby='$hobbies2' WHERE id=$id";
    if (mysqli_query($conn, $sqlupdate)) {
        echo "<script>alert('수정이 성공하다')</script>";
        header("Location: service.php");    //현재 페이지 새로 고침
        mysqli_close($conn);
    } else {
        echo "Error: " . $sqlupdate . "<br>" . mysqli_error($conn);
    }
}
//검색, 모든 결과 반환
$sqlselect="select * from student";
$result=mysqli_query($conn, $sqlselect);
if($result->num_rows>0){
    echo "<h1>학생 정보 표시</h1>";
    echo "<div><a href='student_form.php'>학생 추가</a></div><br>";
    echo "<table><tr><th>이름</th><th>성별</th><th>주소</th><th>취미</th><th>조작하다</th></tr>";
    while($row=$result->fetch_assoc()){
        echo '<tr><td>'.$row["name"].'</td>
            <td>'.$row["sex"].'</td>
             <td>'.$row["address"].'</td>
                <td>'.$row["hobby"].'</td>
                <td>
                <a href="service.php?id='.$row["id"].'">삭제하다</a>'.' '.
				'<a href="updatestudent.php?id='.$row["id"].'">고치다</a></td></tr>';
    }
    echo "</table>";
}else{
    echo "결과 0";
}
//업무삭제, 본페이지에서 전달된 아이디 파라미터를 받고, 이를 이용하여 해당 레코드를 삭제합니다
if(isset($_GET["id"])){
    $id=$_GET["id"];
    $sqldelete='delete from student where id='.$id;
    if (mysqli_query($conn, $sqldelete)) {
        echo "<script>alert('성공적으로 삭제됨')</script>";
        mysqli_close($conn);
        header("Location: service.php");    //현재 페이지 새로 고침
    } else {
        echo "Error: " . $sqldelete . "<br>" . mysqli_error($conn);
    }
}

echo '<style type="text/css">
body{text-align: center;}
table{
	width:600px;height:300px;
	border:1px solid black;/*테두리 굵기, 실선, 색상 설정*/
	text-align:center;/*텍스트 중앙*/
	background-color:#70DB93;
	border-collapse: collapse;/*테두리가 겹칩니다. 그렇지 않으면 이중 실선이 보일 것입니다*/
    margin: auto;
}
th{
	border:1px solid black;
	color:black;
	font-weight:bold;/*타이틀이니까,굵게 표시하다*/
}
td{
	border:1px solid black;
	color:#8E2323;
}
 a{
        font-family: Arial;
        margin: 3px;
    }
    
    a:LINK,a:VISITED {
        color:#A62020;
        padding:4px 10px 4px 10px;
        background-color:#DDD;
        text-decoration: none;
        border-top: 1px solid #EEEEEE;
        border-left: 1px solid #EEEEEE;
        border-bottom: 1px solid #717171;
        border-right: 1px solid #717171;
    }
    
    a:HOVER {
        color: #821818;
        padding: 5px 8px 3px 12px;
        background-color: #CCC;
        border-top: 1px solid #717171;
        border-left: 1px solid #717171;
        border-bottom: 1px solid #EEEEEE;
        border-right: 1px solid #EEEEEE;
    }
h1{
background-color:#678;
color:white;
text-align:center;
}
div{
    text-align:center
} 
</style>';
mysqli_close($conn);

?>

페이지 추가 (홈 페이지에서 이동) student_form.php

<html>
<head>
	<meta charset="utf-8">
	<title>양식 제출 데이터베이스</title>
</head>
<body>
	<h1>학생 정보 추가</h1>
	<div>
    	<form method="post" action="service.php">
    		이름:<input type="text" id="input1" name="name"/><br/>
    		성별:
    		남자<input type="radio" name="sex" value="남자"/>
    		여자<input type="radio" name="sex" value="여자"/>
    		<br/>
    		주소:<input type="text" id="input1" name="address"/><br/>
    		취미:
    		수영<input type="checkbox" name="hobby[]" value="수영"/>
    		농구<input type="checkbox" name="hobby[]" value="농구"/>
    		배구<input type="checkbox" name="hobby[]" value="배구"/>
    		<br>
    		<input type="submit" value="제출하다"/>
    	</form>
	</div>
	<style type="text/css">
	   h1{
            background-color:#678;
            color:white;
            text-align:center;
         }
       body {
            height: 100%;
            width: 100%;
            border: none;
            overflow-x: hidden;
        }
       div{
       width:100%;
       text-align:center;
       }     
       
	</style>
</body>
</html>

페이지 수정 (홈 페이지에서 이동) updatestudent.php

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "dataphp";
// 연결 만들기
 $conn = mysqli_connect($servername, $username, $password,
    $dbname);
// 연결 감지
if (!$conn) {
    die("Connectionfailed: " . mysqli_connect_error());
}
//service수정탭클릭후전송되는파라미터아이디로조회하여확인한값(html에해당되는원소에넣기)
if(isset($_GET["id"])){
    $id=$_GET["id"];
    $sqlSelectId="select * from student where id=".$id;
    $result=mysqli_query($conn, $sqlSelectId);
    $row=$result->fetch_assoc();
    $name=$row["name"];
    $sex=$row["sex"];
    $address=$row["address"];
    $hobby=$row["hobby"];
    $hobbies=explode(",", $hobby);//문자열 누르기“,”,배열로 나누다
}
?>
<html>
<head>
	<meta charset="utf-8">
	<title>양식 수정 데이터베이스</title>
</head>
<body>
	<h1>정보 수정</h1>
	<div>
    	<form method="post" action="service.php">
    		이름:<input type="text" name="name2" value="<?php echo $name?>"/><br/>
    		성별:
    		남자<input type="radio" id="male" name="sex2" value="남자"/>
    		여자<input type="radio" id="female" name="sex2" value="여자"/>
    		<br/>
    		주소:<input type="text" name="address2" value="<?php echo $address?>" /><br/>
    		취미:
    		수영<input type="checkbox" id="h1" name="hobby2[]" value="수영"/>
    		농구<input type="checkbox" id="h2" name="hobby2[]" value="농구"/>
    		배구<input type="checkbox" id="h3" name="hobby2[]" value="배구"/>
    			<input type="hidden" name="id" value="<?php echo $id ?>"/>
    		<br>
    		<input type="submit" value="제출하다"/>
    	</form>
	</div>
	<style type="text/css">
	   h1{
            background-color:#678;
            color:white;
            text-align:center;
         }
       body {
            height: 100%;
            width: 100%;
            border: none;
            overflow-x: hidden;
        }
       div{
       width:100%;
       text-align:center;
       }
    </style>
	<?php
    if($sex=='남자'){
    	echo "
        <script>
             document.getElementById('male').checked=true;
        </script>";
    }else{
        echo "
        <script>
             document.getElementById('female').checked=true;
        </script>";
    }
    for($i=0;$i<count($hobbies);$i++){
        if($hobbies[$i]=='수영'){
            echo "
            <script>
                 document.getElementById('h1').checked=true;
            </script>";
        }else if($hobbies[$i]=='농구'){
            echo "
            <script>
                 document.getElementById('h2').checked=true;
            </script>";
        }else if($hobbies[$i]=='배구'){
            echo "
            <script>
                 document.getElementById('h3').checked=true;
            </script>";
        }
    }
	?>
</body>
</html>

 

반응형