웹 애플리케이션 만들기

MySQL 실습

MySQL 실습 1 

실습환경으로 codeanywhere를 쓰고 계신 분은 아래 영상의 13:30 즈음의 영상의 코드를 다음와 같이 바꿔서 사용하시면 됩니다. 비밀번호를 지정하지 않으면 됩니다. $conn = mysqli_connect('localhost', 'root', '');

MySQL 실습 2

MySQL 실습 3

MySQL 실습 4

MySQL 실습 5

index.php

<?php
$conn = mysqli_connect("localhost", "root", 111111);
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
?>
<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="http://localhost/style.css">
</head>
<body id="target">
	<header>
    <img src="https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/course/94.png" alt="생활코딩">
		<h1><a href="http://localhost/index.php">JavaScript</a></h1>
  </header>
	<nav>
		<ol>
    <?php
    while( $row = mysqli_fetch_assoc($result)){
      echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";
    }
    ?>
		</ol>
	</nav>
  <div id="control">
    <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
    <input type="button" value="black" onclick="document.getElementById('target').className='black'" />
    <a href="http://localhost/write.php">쓰기</a>
  </div>
  <article>
  <?php
  if(empty($_GET['id']) === false ) {
      $sql = 'SELECT * FROM topic WHERE id='.$_GET['id'];
      $result = mysqli_query($conn, $sql);
      $row = mysqli_fetch_assoc($result);
      echo '<h2>'.$row['title'].'</h2>';
      echo $row['description'];
  }
  ?>
  </article>
</body>
</html>

 write.php

<?php
$conn = mysqli_connect("localhost", "root", 111111);
mysqli_select_db($conn, "opentutorials");
$result = mysqli_query($conn, "SELECT * FROM topic");
?>
<!DOCTYPE html>
<html>
<head>
     <meta charset="utf-8">
  <link rel="stylesheet" type="text/css" href="http://localhost/style.css">
</head>
<body id="target">
	<header>
    <img src="https://s3.ap-northeast-2.amazonaws.com/opentutorials-user-file/course/94.png" alt="생활코딩">
		<h1><a href="http://localhost/index.php">JavaScript</a></h1>
  </header>
	<nav>
		<ol>
    <?php
    while( $row = mysqli_fetch_assoc($result)){
      echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";
    }
    ?>
		</ol>
	</nav>
  <div id="control">
    <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
    <input type="button" value="black" onclick="document.getElementById('target').className='black'" />
    <a href="http://localhost/write.php">쓰기</a>
  </div>
  <article>
    <form action="process.php" method="post">
      <p>
        제목 : <input type="text" name="title">
      </p>
      <p>
        작성자 : <input type="text" name="author">
      </p>
      <p>
        본문 : <textarea name="description"></textarea>
      </p>
      <input type="submit" name="name">
    </form>
  </article>
</body>
</html>

process.php 

<?php
$conn = mysqli_connect("localhost", "root", 111111);
mysqli_select_db($conn, "opentutorials");
$sql = "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."', '".$_POST['description']."', '".$_POST['author']."', now())";
$result = mysqli_query($conn, $sql);
header('Location: http://localhost/index.php');
?>

style.css

body.white{
  background-color:white;
  color:black;
}
body.black{
  background-color:black;
  color:white;
}

header{
  border-bottom:1px solid gray;
  padding:20px;
}
nav {
  border-right:1px solid gray;
  width:200px;
  height:600px;
  float:left;
}
nav ol{
  list-style:none;
  padding:0;
}
article{
  float:left;
  padding:20px;
  width:500px;
}
#control{
  float:right;
}
header img{
  float:right;
  height:100px;
}

소스코드

github

댓글

댓글 본문
작성자
비밀번호
  1. Roys Jung
    php 공부를 막 시작 했는데 재미있네요 ^^
    connection Warning 뜨시는 분들은 이렇게 해보세요
    $conn = mysqli_connect("localhost", "root", 비밀번호, "opentutorials", 3307(mysql포드번호));
    mysqli_select_db($conn, "opentutorials"); 이것은 삭제 하시고요
  2. Seo Yun Seok Tudoistube
    아톰 에디터에서 소문자로 자동완성해주는거 실행하니까 오류가 나는데 대문자로 바꾸니까 잘됩니다^^;; 감사합니다^____^
    Undefined variable: _post in
  3. 송재욱
    완주 완료 !
  4. 이묘
    저도 이게 궁금했는데 혹시 알려주실 수 있나요? 답변댓글이 지워졌는지 안보이네요 ㅠㅠ
    대화보기
    • 진리의산탄
      혹시 MySQL이 아닌, MariaDB를 사용하면서 수업을 들어도 지장이 없는지 궁금합니다.
    • 새벽빛
      혹시 저와 같은 어려움을 겪으시는 분들에게 도움을 주기 위해 글을 남깁니다. 참고로 저는 남는 컴퓨터로 개인 서버를 구축해 놓고서 거기서 테스트를 하고 있습니다.

      html확장자 파일에서 php코드를 실행을 하려고 해도 실행되지 않는 문제가 있었습니다.

      html에서 php코드를 실행하기 위해서는 php코드를 담고 있는 html파일이 있는 루트디렉토리에 .htaccess 파일을 생성히고 여기 AddType application/x-httpd-php .html 내용을 넣어 저장해 놓으면 html파일에서 php코드가 실행이 됩니다.
      앗.. 그리고 저는 우분투 환경입니다.!!!
      참고 : http://php.net......php
    • 우탄
      드디어 4000명중에 1000명 이하의 봤어요로 진입했습니다 하하하 딱 15일 걸렸네요
      프레임워크 문제 빼면 9일 정도지만 정말 유익합니다 감사합니다.'."^.^".'
    • NoCoder
      실습5 따라 친건 안되고 복사하니 되군요;; 1시간 헤멧는데...
      여전히 저는 어디가 틀린지 모릅니다;;

      제꺼
      $conn = mysqli_connect("localhost", "root", "비번");
      mysqli_select_db($conn, "opentutorials");
      $sql = "INSERT INTO topic (title, description, author, created) VELUES('".$_POST['title']."', '". $_POST['description']."', '". $_POST['author']."', now())";
      $result = mysqli_query($conn, $sql);
      header('Location: http://localhost......hp');

      복사
      $conn = mysqli_connect("localhost", "root", "비번");
      mysqli_select_db($conn, "opentutorials");
      $sql = "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."', '".$_POST['description']."', '".$_POST['author']."', now())";
      $result = mysqli_query($conn, $sql);
      header('Location: http://localhost......hp');

      라고 쓰고 어.. 뭔가 줄이 다른데 하고 보다가 values오타를 찾았습니다;;;
    • programmer very GOSU
      해결했습니다
      $conn = mysqli_connect("localhost:8080","root","111111");
      처음에 이렇게 썻었는데 댓글을 보고 mysql이 깔린 포트를 입력했더니
      다행히 잘 되네요
      $conn = mysqli_connect("localhost:3306","root","111111");
    • 감사합니다.
    • yurijinseo@naver.com
      3.29.
    • programmer very GOSU
      Warning: mysqli_connect(): MySQL server has gone away in C:\Bitnami\wampstack-5.6.30-0\apache2\htdocs\index.php on line 2

      Warning: mysqli_connect(): Error while reading greeting packet. PID=10572 in C:\Bitnami\wampstack-5.6.30-0\apache2\htdocs\index.php on line 2

      Warning: mysqli_connect(): (HY000/2006): MySQL server has gone away in C:\Bitnami\wampstack-5.6.30-0\apache2\htdocs\index.php on line 2

      Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.30-0\apache2\htdocs\index.php on line 3

      Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.30-0\apache2\htdocs\index.php on line 4
      이렇게 나오는데 이게 무슨 뜻인가요?
    • 이보나
      복붙해도 안되신 분들 체크사항 ::
      1.localhost-> localhost:8080 꼭 변경하기. 이게 배우는 텀이 2주이상 넘어가니까 복습안하면 까먹어서 사소한곳에서 실수하네요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
      2.크롬 이용하시는분들은 페이지 변경사항 보려면 크롬 시크릿모드에서 실행하는게 적용 잘되고 좋아요
      ctrl+shift+n
      되게 사소한거지만 멍청하게 시간낭비해서 저같으신분들 있으실까봐 적어요..ㅠ
    • 룰루
      저는 크롬 시크릿모드로 다시 실행하니까 되더라구요.
      대화보기
      • 14번째
        3.25.
      • 도원진
        정말 그러네요... 감사합니다~!!
        대화보기
        • 아는게힘이다
          만약에 저기 쓰기 창에서 제목, 작성자, 본문 중에서 본문에서 <img src=>를 사용해서 내용에 이미지를 삽입 할 수 있을까요? 그리고 저기 추가된 항목들은 어디가서 코드를 볼 수 있고 수정할 수 있을까요? 궁금하네요 이공잉님이 그건 여기서 안다룬다고 하셔서 ...
        • 초보개발자
          좋은 강좌 공유해 주셔서 고맙습니다.
        • 힘들다 어렵다..
          이번 수업은 초보자 입장에선 좀 많이 어렵고 이해되지 않네요. 실습3 영상만 봐도 따라하기만 했는데 같은 결과가 나오지 않고 어느 새 웹페이지는 한글에서 영어로 바뀌어 나오고 있고... 뭔가 흐름이 앞 영상들과 이어지지 않아 고구마 빨리 먹은 거 같은 기분이 드네요...
        • 김용훈
          패스워드를 mysqli_connect("localhost", "root", 111111); mysqli_connect("localhost", "root", "111111");이렇게 변경하시면 됩니다.
          대화보기
          • 김용훈
            mysqli_connect("localhost", "root", 111111);
            mysqli_connect("localhost", "root", "111111"); 로 변경 되어야 하지 않나요?
          • JIyoen
            도와주세요!!
            mysql에서는 description이 보이는데 localhost 에서 index.php열면 id.title은 보이는데 클릭 시에 description들이 보이지 않아요. ㅠ 소스코드, 위 예제 다 따라서 쭉 똑같이 타이핑 했고, git 소스코드도 사용해 보았는데 다른것은 다 되는데 <article>태그의 mysql -description정보만 html화면에 표시되지 않네요 ㅠㅠ 이유가 무엇일까요? php/mysql연동도 잘 되었고 SELECT * FROM topic; 터미널에 치면 description도 잘 보이는데요....유독 로컬호스트에서는 정보가 표시되지 않습니다. 알려주세요!!! 감사합니다..
          • Seung Heo
            while($row=mysqli_fetch_assoc($result)){echo $row['title']."\n";}
            이렇게 하면 마지막 네번째 "Conditional"이 줄바꿈이 안 되고 브라우저에 출력될 때 "Operator Conditional" 이렇게 한 칸 띄고 이어서 나옵니다. 페이지 소스보기를 하면 줄바꿈이 된 것처럼 보이는데 말이에요. 그런데
            while($row=mysqli_fetch_assoc($result)){echo $row['title']."</br>";}
            이렇게 하면 이고잉님이 "\n" 태그를 줬을 때처럼 4개 요소가 다 줄바꿈이 돼서 출력이 됩니다. 한참을 들여다보는데도, 대체 어디서 뭐가 잘못됐는지 모르겠습니다. ㅜㅜ 좀 알려주세요.
          • 170228
            감사합니다.
          • while( $row = mysqli_fetch_assoc($result)){
            echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";

            여기서 id='.$row['id'].'" 이 부분에서
            .이 왜 앞뒤로 들어가야하는건지 잘 모르겠네요
          • Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-5.6.30-1\apache2\htdocs\Practice_php\index.php on line 2

            Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.30-1\apache2\htdocs\Practice_php\index.php on line 3

            Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.30-1\apache2\htdocs\Practice_php\index.php on line 4

            Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-5.6.30-1\apache2\htdocs\Practice_php\index.php on line 5

            Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-5.6.30-1\apache2\htdocs\Practice_php\index.php on line 10


            <?php
            $conn = mysqli_connect("localhost","root",'rkdxowns333'); // mysql 연결
            mysqli_select_db($conn,"opentutorials"); // db 선택
            $result = mysqli_query($conn,"SELECT * FROM topic"); // table 조회
            $row = mysqli_fetch_assoc($result); // result의 연관배열 형식
            echo $row['id'];
            echo $row['title'];
            echo"<br\>";

            $row = mysqli_fetch_assoc($result); // result의 연관배열 형식 - 두번째 하면, 두번째 목록 가져옴
            echo $row['id'];
            echo $row['title'];

            ?>
            이렇게 뜨면서 되지않습니다.
            패스워드는 다시 확인해봐도 맞는데 어떻게 해야하나요?
          • 하늘바라기
            실습 2까지 진행했는데 코딩은 잘되어있는데 네비게이션에서 리스트들을 클릭하면 id값에 따라 url에는 localhost/index.php?id=1 그다음은 2,3,4 이런식으로 잘나옵니다. 그런데 1.txt 2.txt 3.txt 의 내용이 떠야하는데 localhost의 서버 DNS 주소를 찾을 수 없다고 나옵니다.. 제가 어디서 실수를 한걸까요 ㅠㅠ.. 비트나미가 이상한걸까요?
          • 강경호
            감사합니다
            170225
            컴퓨터가 후져서 그런가 자꾸 적용되는 것이 늦네요
          • 여기까지하고 java랑 php랑 mysql 배우고 다시 갑니다.
          • 프로그래밍초보
            이고잉형 사랑해여 이고잉형 수고하세여 저 너무 똒똒해서 청출어람할꺼같에요. 저 나중에 회사차리면 스카웃 해드릴게여.
          • hello world!
            소중한 강의.
            너무 감사드립니다 ㅠㅠ
          • 빙삼
            $conn = mysqli_connect("localhost", "root", "비밀번호", "opentutorials", "8080");
            이 부분에서 포트번호인 8080을 보통 mysql가 쓰는 포트인 3306으로 바꿔서 해보는 것이 도움이 될 것 같습니다.
            대화보기
            • 빙삼
              크롬의 시크릿 창 열기로 브라우저를 띄워서 localhost를 열면 적용이 될 겁니다
              대화보기
              • helloworld
                그 반대 아닌가요..?
                대화보기
                • springstar@daum.net
                  내가 직접 하면 안되구... 고잉엉아꺼 복사해서 테스트하면 잘 되구...
                  미치겠네요 ㅋㅋㅋ

                  고잉엉아의 잘못이겟쬬? --+
                  수고하세요 ^^
                • 후이메이
                  계속 warning떠서 댓글을 보면서 해결책을 찾고있었는데
                  $conn = mysqli_connect('localhost','root',"비밀번호",'opentutorials','3307')
                  또는 자신의 포트번호에 맞게
                  $conn = mysqli_connect('localhost','root',"비밀번호",'opentutorials',8080")
                  로 고치시고
                  // mysqli_select_db($conn, "opentutorials");
                  이부분은 지워주시면 실행이 되네요!
                • 송원근
                  mysqli 의 api형식이 바뀐듯하네요.
                  $conn = mysqli_connect("localhost", "root", "비밀번호", "opentutorials", "8080");
                  첫줄을 이렇게 바꿔보세요. 맨뒤에 추가 된 2개는 db이름이랑 포트번호에요.
                  대화보기
                  • Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 2
                    - password가 틀린것이 아닌가 싶네요.

                    Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 3
                    - datebase 이름이 exam으로 맞게 하셨다면, double quotation mark로 변경하셔야 할듯합니다.
                    Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 4
                    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 5
                    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 10
                    - 3개 모두 경우, table이 제대로 생성이 되었는지 다시 확인해보시는게 좋을 듯 합니다.
                    line 5, 10 은 id의 struture의 null부분이 no로 되어 있는지 다시 확인 해보시는게 좋을 듯합니다.

                    제 생각으로 error라고 생각한 부분 말씀드렸는데, 도움 되었는지 모르겠네요.
                    대화보기
                    • lightcircle
                      $conn=mysqli_connect('localhost','root',"000000");
                      mysqli_select_db($conn,'exam');
                      $result=mysqli_query($conn,"SELECT*FROM topic");
                      $row = mysqli_fetch_assoc($result);
                      echo $row['id'];
                      echo $row['title'];

                      echo "<br/>";
                      $row = mysqli_fetch_assoc($result);
                      echo $row['id'];
                      echo $row['title'];

                      강좌 대로 이렇게 쳤는데,

                      Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 2

                      Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 3

                      Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 4

                      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 5


                      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-5.6.29-1\apache2\htdocs\mysqlphp\index1.php on line 10

                      에러가 뜨네요. 어떤이유인지좀 아시는 분 있나요 ??
                    • 잘보고갑니다
                      저케 해보거 꼭 mvc 공부해서 코딩 하세요
                      꼭요 저런 코딩 보면 좀 혈압올라요
                    • 그랑로그
                      완강 3일목표로 했는데, 힘드네요.^^ 좋은 강의 감사드립니다. 이제 10개 강좌 남았습니다. 아자!!
                    • 응딩
                      와 정말 감사합니다!!!!
                      대화보기
                      • 민쨩
                        http://naver.me/xmGh29Cf

                        안녕하세요!
                        우선 덕분에 너무 재밌는거 배우고 있어서 감사드립니다^^

                        질문이 있는데...
                        Atom에서 style.css에 Nav ol이랑 Article에 패딩값, width등등 적용했는데 하나도 반영이 안되네요ㅠㅠ
                        이거 왜 이런 걸까요...ㅠㅠㅠ
                        저장도 되어있고 index.php에 잘 연결도 되어 있는데...ㅜㅜ
                      • 문돌이
                        `id`이 부분 끝에 AUTO_INCREMENT 를 사용했을 경우
                        자동으로 수가 1씩 늘어나게 된다고 말씀해주셨습니다.
                        이것은 그래서 각 정보를 분별하는데 분별값으로 사용된다고도 말씀해주셨구요.
                        대화보기
                        • 제이
                          안녕하세요

                          반복문을 이용해서 데이터들을 출력할때 첫번째 $row['id']에는 1이들어가고
                          별도의 조치 없이 두번째 $row['id']에는 2가 들어가는 이유가 혹시 처음에
                          `id` int(11) NOT NULL AUTO_INCREMENT
                          이라고 선언해서 그런건가요?

                          다른 언어들의 반복문에선 i = i+1 이라는 형태로 한번씩 증가시켜주었던것같아서요
                          이 코드가 처음에 테이블 만들 때 빈 id 부분을 채워주는 역할만 하는게 아닌가요?

                          이게 아니라면 그냥 단순히 데이터베이스를 출력하는 법칙이 그런거라고 이해하면 될까요?
                        • jin100035@naver.com
                          여쭤보고 싶은게 있는데

                          if(empty($_GET['id']) === false ) {
                          $sql = 'SELECT * FROM topic WHERE id='.$_GET['id'];
                          $result = mysqli_query($conn, $sql);
                          $row = mysqli_fetch_assoc($result);
                          echo '<h2>'.$row['title'].'</h2>';
                          echo $row['description'];

                          동영상 3번에서 마지막 article 부분에 있어서 database를 적용시킬 때
                          index.php부분인 홈으로 돌아가는 버튼을 누를 경우

                          Notice: Undefined index: id in C:\Bitnami\wampstack-5.6.29-0\apache2\htdocs\index.php on line 36

                          이러한 문구가 뜨게 됩니다.
                          오류인 건가요? 원래는 저 화면에 아무것도 뜨지 않는 게 맞다고 생각하는데..자꾸 뜨게 되네요.
                          뭐가 문제일까요..동영상부분에서는 저 부분을 눌러주시지 않아서...어떻게 떠야하는지 궁금해서 이렇게 올립니다.
                        • 아무리 찾아도 안보였는데... 감사합니다!
                          대화보기
                          • 호미타
                            <form action"http://localhost:8080/php/3.php" method="GET">
                            여기에
                            = <-요게 빠져서 그런거 같아요
                            <form action="http:// ~
                            대화보기
                            • 수업 너무 좋아요
                              3.html 에서 제출을 눌러도 3.php로 가지않고 그대로

                              /3.html?title=title&description=desc

                              이렇게 3.html에 머무르는데 왜 이럴까요...?

                              밑에는 제 코드 전문이에요
                              <!DOCTYPE html>
                              <html>
                              <head>
                              <meta charset="utf-8">
                              </head>
                              <body>
                              <form action"http://localhost:8080/php/3.php" method="GET">
                              <p>제목 : <input type="text" name="title"></p>
                              <p>본문 : <textarea name="description">
                            • 행인
                              브라우저에 css파일이 캐쉬 되어있는게 원인인 것 같습니다.
                              간단히 Ctrl+F5 를 누르시거나.
                              Ctrl+Shift+Delete 누르셔서 모든 데이터를 지운 후 새로고침 해보세요.
                              대화보기
                              버전 관리
                              egoing
                              현재 버전
                              선택 버전
                              graphittie 자세히 보기