어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기

PHP 기본 문법

  • 반복문, 조건문
<html>
<body>
<h1> Grade Info </h1>
<?php
    $stu_names = array("park", "kim", "hong", "song", "lee", "lee2", "kim2", "kim3", "kim4", "ji");
    $stu_scores = array(90, 56, 78, 98, 54, 77, 100, 87, 99, 44);

    for($i=0;$i<10;$i++){
    $score = $stu_scores[$i];
    if ($score>=90)
        $grade = "A";
    elseif ($score>=80)
        $grade = "B";
    elseif ($score>=70)
        $grade = "C";
    elseif ($score>=60)
        $grade = "D";
    else
        $grade = "F";

    if ($score>=60) {
        if ($score==100 || $score%10>=5)
            $grade = $grade."+";
        else
            $grade = $grade."0";
    }

    echo "$stu_names[$i] 점수 : $score 점<br>";
    echo "등급 : $grade<br>";
	}
?>
</body>
</html>

 

  •  switch문
<?php
    $score = 84;
    switch ($score/10)
    {
        case 10:
        case 9:
                $grade = $grade."A";
                break;
        case 8:
                $grade = $grade."B";
                break;
        case 7:
                $grade = $grade."C";
                break;
        case 6:
                $grade = $grade."D";
                break;
        default:
                $grade = $grade."F";
                break;
    }

    if ($score >= 60) {
        if ($score==100 || $score%10>=5)
            $grade = $grade."+";
        else
            $grade = $grade."0";

        echo "입력된 점수 : $score 점<br>";
        echo "등급 : $grade";
    }
?>

 

  •  반복문, 조건문, 함수
<html>
<body>
<h1> Grade Info </h1>
<?php
    function getgrade($score) {
        $grade ="";

        if ($score>=90)
            $grade = "A";
        elseif ($score>=80)
            $grade = "B";
        elseif ($score>=70)
            $grade = "C";
        elseif ($score>=60)
            $grade = "D";
        else
            $grade = "F";

        if ($score>=60) {
            if ($score==100 || $score%10>=5)
                $grade = $grade."+";
            else
                $grade = $grade."0";
            }
            return $grade;
    }

    $stu_names = array("park", "kim", "hong", "song", "lee", "lee2", "kim2", "kim3", "kim4", "ji");
    $stu_scores = array(90, 56, 78, 98, 54, 77, 100, 87, 99, 44);
    for ($i=0; $i<10; $i++) {
        $res = getgrade($stu_scores[$i]);
        echo "$stu_names[$i] 점수 : $stu_scores[$i] 점<br>";
        echo "등급 : $res<br>";
    }

?>
</body>
</html>

 

  • 반복문, 배열
<?php
    $ary = array(6, 5, 88, 7, 3, 2, 4, 12, 44, 9);

for($j<0; $j<10; $j++) {
    for($i=0; $i<9; $i++) {
        if($ary[$i] > $ary[$i+1]) {
            $tmp = $ary[$i];
            $ary[$i] = $ary[$i+1];
            $ary[$i+1] = $tmp;
        }

    }

    for ($i=0; $i<10; $i++) {
        echo $ary[$i]." ";
    }
    echo "<br>";
}
?>

PHP

 

다중 반복문

<?php
   echo("--------------------- <br>");

   for($a=2; $a<=9; $a++)		// 구구단 2단~9단까지 증가하며 반복
   {
      for($b=1; $b<=9; $b++)		// a*1, a*2, ..., a*9까지 증가하며 반복
      {
         $c = $a * $b;
         echo("$a x $b = $c <br>");
      }

      echo("--------------------- <br>");
   }
?>

위 코드의 출력값

 

<?php
   for ($a=1; $a<=10; $a++)
   {
        for ($b=1; $b<=$a; $b++)
        {
            echo "* ";
        }
        echo "<br>";
   }
?>

위 코드의 출력값

 

2차원 배열

<?php
    // 2차원 배열을 이용하여 학생 3명의 5개 과목 성적 합계와 평균 구하기
    $score = array( array(88, 98, 96, 77, 63),
       array(86, 77, 66, 86, 93),
               array(74, 83, 95, 86, 97) );

 	// 입력된 성적과 배열 인덱스 출력

        for ($i=0; $i<3; $i++)
        {
            for ($j=0; $j<5; $j++)
                echo "\$score[$i][$j] = ".$score[$i][$j]."<br>";

            echo "<br>";
        }

  // 학생 3명의 성적 합계와 평균
  for($i=0; $i<3; $i++)
  {
      $sum=0;

      for($j=0; $j<5; $j++)
                $sum = $sum + $score[$i][$j];

      $avg = $sum/5;
      $student_num = $i + 1;
      echo("$student_num 번 학생의 점수 => 합계 : $sum,
            평균 : $avg <br>");
  }
?>

위 코드의 출력값

 

내장 함수

  • 수학 관련 내장 함수
    • abs() - 절댓값 구하기
    • sin() - 삼각형의 사인 값 구하기
    • cos() - 삼각형의 코사인 값 구하기
    • tan() - 삼각형의 탄젠트 값 구하기
    • date() - 현재 날짜 구하기
    • ceil() - 소수점 아래에서 올린 정수 값 구하기
    • floor() - 소수점 아래에서 내린 정수 값 구하기
    • round() - 반올림 값 구하기
    • log() - 로그 값 구하기
    • max() - 최댓값 구하기
    • sqrt() - 제곱근 구하기
    • rand() - 임의의 난수 생성하기
    • pi() - 파이의 근삿값(3.141592) 구하기

  • 문자열 관련 내장 함수
    • echo() - 문자열 출력하기
    • explode() - 특정 문자를 기준으로 문자열 나누기
    • str_len() - 문자열의 길이 얻기
    • substr() - 문자열에서 일부 문자 추출하기
    • nl2br() - 행 바꿈(\n)을 <br> 태그로 바꾸기
    • sprintf() - 문자열을 특정 양식에 맞추기
  • 파일 관련 내장 함수
    • copy() - 파일 복사하기
    • mkdir() - 디렉토리 생성하기
    • chdir() - 디렉토리 변경하기
    • fopen() - 파일 열기
    • fread() - 파일 읽기
    • fwrite() - 파일 쓰기
<?php
        $tel = "010-2777-3333";
        echo "\$tel : $tel<br>";
        $num_tel = strlen($tel);                      // 문자열의 길이 계산

        echo "\$tel의 길이 : $num_tel<br>";

        $tel1 = substr($tel, 0, 3);                    // 앞에서 세 문자를 가져옴
        echo "$tel1<br>";
        $tel2 = substr($tel, 4, 4);                    // 네 번째 문자에서 네 개를 가져옴
        echo "$tel2<br>";
        $tel3 = substr($tel, 9, 4);                    // 아홉 번째 문자에서 네 개를 가져옴

        echo "$tel3<br>";

    $phone = explode("-", $tel);                // 하이픈(-)을 기준으로 문자열 분리

        echo "전화번호 : $phone[0] $phone[1] $phone[2]<br>";
?>

 

form과 PHP

 

POST와 GET의 차이점

  • 사용목적
    • POST 서버의 리소스를 생성하거나 업데이트를 할 때 사용
    • GET 서버의 리소스에서 데이터를 요청할 때 사용
    • DB로 따지면 POST는 Create에 가깝고, GET은 Select에 가깝다.
  • 멱등성 (idempotent)
    • GET은 멱등이며 POST는 멱등이 아니다.
    • 멱등이란 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미
  • POST에는 HTTP 메세지에 Body가 존재하고, GET의 HTTP 메세지에는 Body가 없다.

 

GET 방식

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
    $table1 = "free";
    $table2 = "qna";
?>
    <h3>자유게시판</h3>
    <a href="board_view.php?table=<?=$table1?>&type=list"> 목록보기</a>
    <br>
    <a href="board_view.php?table=<?=$table1?>&type=write"> 글쓰기</a>

    <h3>질의응답 게시판</h3>
    <a href="board_view.php?table=<?=$table2?>&type=list"> 목록보기</a>
    <br>
    <a href="board_view.php?table=<?=$table2?>&type=write"> 글쓰기</a>
</body>
</html>
-----------------------------------------------------------------------
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
    $table = $_GET["table"];
    $type = $_GET["type"];

    if($table == "free")
        $board_title = "자유게시판";
    if($table == "qna")
        $board_title = "질의응답 게시판";

    if($type == "list")
        $type_title = "목록보기";
    if($type == "write")
        $type_title = "글쓰기";
?>
    <h3>
        <?php
            echo ">> ".$board_title." | ".$type_title;
        ?>
    </h3>
</body>
</html>

GET 방식은 URL끝에 ?가 붙고 변수명1=값1&변수명2=값2... 형식으로 이어붙는다.

 

POST 방식

<html>
<head>
<meta charset="utf-8">
<link href="style.css" rel="stylesheet">
</head>
<body>
<form name="form1" method="post" action="view2.php">
        <ul>
                <li>아 &nbsp;이 &nbsp;디 : <input type="text" name="id"></li>
                <li>비밀번호 : <input type="password" name="pass"></li>
                <li><input type="submit" value="확인"></li>
        </ul>
</form>
</body>
</html>
--------------------------------------------------------------------------
<html>
<head>
<meta charset="utf-8">
<link href="style.css" rel="stylesheet">
</head>
<body>
<?php
        $id = $_POST["id"];
        $pass = $_POST["pass"];
?>
        <ul>
                <li>아 &nbsp;이 &nbsp;디 : <?= $id?></li>
                <li>비밀번호 : <?= $pass?></li>
        </ul>
</body>
</html>

위 코드의 출력값


MariaDB와 PHP 연동

 

PHP - MariaDB(MySQL) 연동 함수

  • mysqli_connect() : MariaDB or MySQL 서버에 연결 
    • mysqli_connect(IP Address, ID, PW, DB명, [Port]);
  • mysqli_connect_error() : MariaDB or MySQL 서버에 연결 오류가 발생 시 원인 출력
  • mysqli_close() :  MariaDB or MySQL 서버 연결된 것을 종료
  • mysqli_select_db() : 사용할 데이터베이스 설정
  • mysqli_query() : SQL문을 서버에서 실행
    • mysqli_query(DB연결객체, Query);
  • mysqli_error() : SQL문이 서버에서 실패한 경우 그 원인을 알려줌
  • mysqli_num_rows() : Select문의 결과가 몇 개의 행인지 알려줌
  • mysqli_fetch_array() : Select문의 실행 결과에서 결과 행을 추출함
<?php
    $ip = "192.168.56.195";
    $id = "root";
    $pw = "1234";
    $db = "st_db";

    $con = mysqli_connect($ip, $id, $pw, $db);		// MariaDB 서버에 연결

    if (mysqli_connect_error($con)) {		// 연결 오류 발생 시에 원인 출력
        echo "mysqli_connect_error()";
    }
    echo "Connected Successfully";

    echo "<table border=\"1\" width=\"100%\" bgcolor=\"#FFFFE1\">";
    echo "<tr><td>ST_ID</td><td>Name</td><td>Dept</td><td>Age</td></tr>";

    $q = mysqli_query($con, "SELECT * FROM st_info;");		// SQL문 서버에서 실행

    for ($c=0; $c<mysqli_num_rows($q); $c++) {		// Select문의 결과가 몇 개의 행인지 알려줌
        echo "<tr>";
        $f = mysqli_fetch_array($q);		// Select문의 실행 결과에서 결과 행 추출
        echo "<td>$f[0]</td><td>$f[1]</td><td>$f[2]></td><td>$f[3]</td>";
        echo "</tr>";
    }
    echo "</table>";

    mysqli_close($con);		// MariaDB 서버 연결 종료

?>

위 코드의 출력값


TIF

오늘은 비 오는 날씨만 제외하고는 모든 것이 크게 어려움이 없었던 무난한 하루였다.

물론 주말에 전체적으로 복습함에 있어서 시간을 많이 써야겠지만 말이다.

 

백준에 solved.ac라는 기능이 있는 것을 오늘 알았다.

단계별로 풀어보기에서 지금 내 머가리로는 도저히 안 풀리는 문제가 실버길래 다행이다 싶었다.

조금씩 조금씩 나아가면 된다. 잘하고 있다.

 

 

2022. 08. 30 에 작성된 글입니다.

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!