웹 애플리케이션 만들기

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

Sound of coding

sound of coding 전체 보기 

댓글

댓글 본문
작성자
비밀번호
  1. 민턴쟁이
    codeanywhere 에서 시간이 좀 지나면 제한걸려서 turn off 되는데 유료로 업 해야 하는지요?
  2. 민턴쟁이
    codeanywhere로 mysql의 topic데이터베이스 만들고 실습하는 중인데
    index.php파일을 리로드 하면 아래와 같은 메세지만 뜨네요 ㅜㅜ
    도와 주세요

    Warning: mysqli_connect(): (HY000/2002): ��� ��ǻ�Ϳ��� ���� �ź�����Ƿ� ������� ���߽��ϴ�. in C:\Bitnami\wampstack-5.6.38-1\apache2\htdocs\php_mysql\index.php on line 2

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

    Fatal error: Call to undefined function mysqli_qyery() in C:\Bitnami\wampstack-5.6.38-1\apache2\htdocs\php_mysql\index.php on line 4


    아래는 아톰에서의 .php입니다.
    <?php
    $conn = mysqli_connect('localhost', 'root', '');
    mysqli_select_db($conn, "opentutorials");
    $result = mysqli_qyery($conn,"SELECT * FROM topic");
    $row = mysqli_fetch_assoc($result);
    echo $row['id'];
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="http://localhost/php_mysql/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/php_mysql/index.php">JavaScript</a></h1>
    </header>
    <nav>
    <ol>
    <?php
    echo file_get_contents("list.txt");
    ?>
    </ 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'" />
    </div>
    <article>
    <?php
    if( empty($_GET['id']) == false ) {
    echo file_get_contents($_GET['id'].".txt");
    }
    ?>
    </article>
    </body>
    </html>
  3. 정후이
    실습4에서 긴 본문의 내용을 오류없이 전송하기 위해 POST방식을 사용할 때,
    3.html 파일에서 method="POST"
    그리고 3.php파일에서 각각 $_POST['title'] , $_POST['description']으로 바꾸시는 것을 보여주셨는데요
    3.php 파일에서 포스트 형식을 취하게 되면
    Notice: Undefined index: title in C:\Bitnami\wampstack-7.1.19-1\apache2\htdocs\php\3.php on line 2
    Notice: Undefined index: description in C:\Bitnami\wampstack-7.1.19-1\apache2\htdocs\php\3.php on line 4
    이러한 오류 메세지가 뜹니다.

    저의 경우에는 3.html파일에서 포스트형식을 적고 3.php파일에서 겟방식을 쓸 때 본문의 내용이
    에러가 없이 뜨는데요.
    이것은 왜 그런 건가요??
  4. 임재욱
    정말 감사합니다!
    대화보기
    • 켈리
      index.php 파일에 있는 두번째줄
      $conn = mysqli_connect("localhost", "root", 111111);


      index.php의 2번째줄에 서버 암호가 11111로 설정되어 있지 않으시다면,
      서버에 접속되지 않으므로 본문내용을 출력해주지 않습니다.
      사용자가 설정한 비밀번호로 바꾸시고 저장하시고 시도해보시기 바랍니다.
      서버에 접속을 할수 없으므로 서버에 저장된 정보를 가져올수 없기 때문입니다.
      대화보기
      • 코딩해보자
        MySQL 실습3을 진행하는데 article이 데이터베이스와 연동이 되어있는거 같습니다. 수업을 순차적으로 진행하였는데 article은

        <article>
        <?php
        if(empty($_GET['id'])==false){
        echo file_get_contents($_GET['id'].".txt");
        }
        ?>
        </article>

        인 상태로 남아있습니다. 혹시 제가 수업을 놓친거라면 어느 수업을 놓친지 알려주실 수 있을까요? 정말 열심히 찾아보았는데 안보이네요. 감사합니다.


        제가 동영상을 마저 안보고 너무 성급하게 생각했네요..실습3 영상에서 후에 수정하시는 내용 확인했습니다!
        혹시 저같이 성질 급한 사람들 있을까봐 댓글은 남겨두겠습니다.
      • 감사합니다!!
      • 제갈량
        WEB3 - PHP & MySQL
        배우고 하는 것이기 떄문에 공부하는데 수월하게 했네요.
        그래도 어렵기는 마찬가지 ㅋㅋㅋ;;;
        많은 도움이 되었습니다 ^^
      • Kocaine
        감사합니다. 덕분에 에러 해결했습니다.
        대화보기
        • 점에 대한 궁금증
          안녕하세요
          '".$_POST['description']."', '".$_POST['author']."' 의 경우
          따옴표와 쌍따옴표는 이해를 한거 같아요
          그런데 두가지 질문이 있습니다

          첫번째는
          .(점)으로 구지 $_POST 를 감싸주는 이유가 궁금합니다
          문자열을 연결하고자 점을 쓰지 않아도 "(쌍따옴)과 '(따옴)으로 묶여 sql문으로 문자처리가 되는게 아닌가요?
          $_POST[ ]가 따옴표들로 묶인 후
          쉼표로 나열되는데
          점이 무슨 의미가 있는건지 잘 모르겠습니다

          두번째로
          앞이나 뒤 둘중 한 곳이 아닌 양쪽에 점으로 감싸주는 이유도 궁금합니다
          desctription 부분의 뒤에 점을 붙였는데
          author 부분 앞에 왜 점을 또다시 붙여야 하나요??
          (혹시 description과 author의 문자열을 이어주는 역할로 점의 쓰임새를 이해한 것이 틀린건가요??)

          구글링의 힘으로도 모르겠어서 질문드립니다
          문법에 너무 집착하지말아야하나요 ㅠㅠ?
        • egoing
          vim으로 열어보시면 잘 열릴거에요.
          http://www.vim.org/
          대화보기
          • 아톰 에러
            안녕하세요 아톰으로 error.log 파일이 용량문제로 열리지가 않습니다
            Atom will be unresponsive during the loading of very large files.
            라는 내용입니다 (100메가 조금 넘습니다)

            구글링해보니 깃허브라는 사이트에 같은문제 언급된 해결방법이 있긴 한데
            영어로 된 내용이 용어까지 생소하여 해석을 해도 어떻게 고쳐야할지 전혀 모르겠습니다

            이건 어떻게 고쳐야하는건가요???
          • 코딩잘하고싶어요 ㅎ
            제가....해냈다는 것이... 믿겨지지가.... 않습니다....

            제가 처음 프로그래밍을 접했을 때 저에게 있어서 데이터베이스는 높은 벽과도 같은 존재였습니다.

            지금도 데이터베이스라는 것이 조금 어렵고 추상적으로 느껴지긴 하지만... 벽을 허물고 나니 좀 덜 추상적으로 느껴지고 덜 어렵게 느껴지는 감이 없지 않아 있는 듯 합니다... ㅎㅎㅎ..

            이제 제 최종목표는 이 내용을 응용해서 수정, 삭제기능을 구현하는 것이겠군요.
            (이전에는 데이터베이스를 쓰지 않고 파일, php, html을 이용해서 구현했더니 확실히 난이도가... 있더라고요.. 데이터베이스로 한다고 해서 더 쉬워질거란 보장은 없겠지만 말이죠...ㅠㅠ)

            아무튼, 감사합니다. ㅎㅎㅎ
          • Midoriya
            Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami wamp\apache2\htdocs\index.php on line 2
            발생 시
            $conn = mysqli_connect("localhost","root",그리고 처음에 Enter password에서 입력했던 비밀번호 예를들어 1111이라고 하면 "1111");
            이렇게 코드를 수정해주시면 됩니다.
            대화보기
            • <?php
              $conn = mysqli_connect("localhost", "root", "youym1963");
              mysqli_select_db($conn, 'opentutorials');
              $result =mysqli_query($conn, "SELECT * FROM topic");
              ?>
              질문이 있습니다. 여기서 각각의 구문의 의미가 뭔가요? 응용해보려하는데 저 구문들의 역할을 제대로 모르겠네요.
            • donggyu
              감사해요. 저도 mysql server가 2개여서 하나는 포트번호가 3306, 하나는 3307 이었었는데, php문 내에서 localhost 라고 작성하는 부분에 뒤에 포트번호를 따로 붙여주지 않으면 디폴트값으로 3306으로 붙어서 이런 에러가 생긴거였네요. 덕분에 헤매지않고 바로 해결했습니다 감사해요~~~
              대화보기
              • Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-7.1.12-0\apache2\htdocs\index.php on line 2

                이렇게 나올 때는

                <?php
                $conn = mysqli_connect("localhost:3307","root","개인비밀번호");
                mysqli_select_db($conn, "opentutorials");
                $result = mysqli_query($conn, "SELECT * FROM topic");
                ?>

                이렇게 해보세요. 포트를 3307로 변경하는 거라고 합니다.
                저도 너무 고생하다가 밑에 검색해보다가 찾았네요.
                대화보기
                • chunjoo
                  감사합니다^^
                • Esan Woo
                  textarea tag를 이용해서 글을 쓰고 DB에 저장한 후 php의 mysqli를 이용해 웹페이지에 출력하는 프로그램을 만들어 봤는데요... 그럴경우 DB에는 \n이 저장되고 php에서도 그렇게 가져와 지지만 결국 echo로 출력되었을때 html은 개행을 <br> tag를 사용하지 않는 한 무시하잖아요. 이걸 해결할 방법이 없을까요?
                • 아티클안에 코드
                  $sql = 'SELECT * FROM topic WHERE id='.$_GET['id'];보면 SELECT * FROM topic..이 쌍따옴포가아닌 단따옴표로 사용된이유가있나요? 다른곳은 다 쌍따옴표로되있어서 많이 헷갈립니다ㅠ
                • zydzyd
                  와.. PROCESS에서
                  INSERT INTO 이부분 참 헷갈리네요.
                  '".$_POST['title']."' 라니
                  따옴표가 한개가 아닌것도 헷갈리는데 점까지 찍어줘야하다니.. ㅋㅋ
                • egoing
                  문자열과 문자열을 결합할 때 사용하는 연산자랍니다~
                  대화보기
                  • 흰둥이
                    실습2를 보고 이해가 가지 않는 부분이 있어 질문드립니다
                    echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";

                    여기에서 ['id']옆에 .을 왜 붙이는 건가요?? 계속 봐도 잘 모르겠네요 ㅠ,ㅠ
                  • heparus@naver.com
                    실습하다가 mysql 도 처음부터 다시 해보고 했는데도
                    Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: NO) in C:\Bitnami\wampstack-7.1.13-0\apache2\htdocs\index.php on line 2

                    Fatal error: Uncaught Error: Call to undefined function mysql_select_db() in C:\Bitnami\wampstack-7.1.13-0\apache2\htdocs\index.php:3 Stack trace: #0 {main} thrown in C:\Bitnami\wampstack-7.1.13-0\apache2\htdocs\index.php on line 3
                    이런 에러가 발생을 하면서 실습이 진행이 도저히 안되어서 도움요청 합니다...ㅠㅠ
                  • Podgor
                    항상 잘보고 있습니다.
                  • zydzyd
                    에러를 잘 읽어보면 답이 다 나와있습니다.
                    보통 Unexpected라는 에러문이 나오면,
                    세미콜론이나 문법이 틀린경우가 많아요
                    원래 컴퓨터가 예상했던 답변은 ;인데
                    갑자기 mysql 어쩌구가 나오니
                    Unexpected라고 뜨는거죠.
                    저런 사소한 코드가 진짜 은근히 잘 안보여서
                    힘들어요. C나 자바할때도 마찬가지..
                  • ddori825
                    $conn=mysqli_connect("localhost","root",'******') 뒤에 ; 세미콜론이 빠져서 그런거 아닐까요??
                    대화보기
                    • 1/17
                      접해보지 못한 내용이라 이해하는데 시간이 꽤 걸렸지만,
                      정말 유익한 강의입니다!
                      감사합니다.^^
                    • 쿠쿠
                      MySQL 서버 접속 비밀번호가 맞는지 확인해보세요.
                      저도 같은 오류가 있었는데,
                      111111 대신 '내비빌번호'를 입력하니 문제가 사라졌네요.
                      대화보기
                      • 슝태
                        20180117
                      • 이롸즈
                        [php7:emerg] [pid 59514] [client ::1:64953] PHP Parse error: syntax error, unexpected 'mysqli_select_db' (T_STRING) in /Applications/mampstack-7.1.12-0/apache2/htdocs/index.php on line 3

                        라는 에러가 자꾸 나는데요, 어떤 부분이 잘못된 것인지를 모르겠네요.

                        타이핑한 것이라고는
                        $conn=mysqli_connect("localhost","root",'******')
                        mysqli_select_db($conn, "newdatabase");

                        뿐인데 바로 에러가 나버리네요 (******)부분은 제 비밀번호이고 데이터베이스 이름 또한 제가 정했습니다.
                        어떻게 해결할 수 있나요?
                      • 서동화
                        얼마전 유튜브로 강의를 접했다가 강의가 너무 재미있고 내용이 쏙쏙들어와서 계속 공부하는 중입니다.

                        강의를 듣는중에 궁금한 점이 생겨서 질문남깁니다.

                        'MySQL 실습' 강의에 사용된 index.php ~ 이하 파일들을 관리하는 제 컴퓨터 서버가 아닌, 다른 PC나 스마트폰에서도 서버로 접속할수 있는 방법이 있나요??
                      • 짜요짜요
                        연습a.php로 저장하니까 404 NOT FOUND라고 뜨더라구요,
                        혹시 버그가 있나 디버깅하다가 혹시나 해서 a를 지우고 연습.php로 하니까 되던데
                        주소창에 한글 쓰면 왜 못 읽어요??
                      • 천사동전
                        아래 코드에서 점이랑 반따옴표 찍은 규칙 좀 알려주세요.
                        '.$row['id'].'라고 되어 있는데, 양쪽의 점이 반따옴표 밖에 있으면 안 되는 거예여???

                        while( $row = mysqli_fetch_assoc($result)){
                        echo '<li><a href="http://localhost/index.php?id='.$row['id'].'">'.$row['title'].'</a></li>'."\n";
                      • 크롬으로 보통 강의들을 보고 있는데, 실습 3에서 style.css에 있는 요소들의 padding 값을 바꿔서 저장 후, 새로고침을 하면 크롬에는 바로 적용이 안되고, 익스플로어에서는 바로 적용이 됩니다. 크롬에도 바로 적용되는 방법은 없나요...?
                      • 삐따꼬라스
                        "\n"이 안먹혀서 찾아보니 구글에서는<br>을 쓰라고 나오던데 "\n"이 왜 안되는거죠? "\n"와 <br>의 차이점이 먼가요?
                      • Eonis_Milan
                        안녕하세요 생활코딩 보면서 웹을 공부하는 학생입니다.
                        지금 실습 3번까지 잘 따라왔습니다.
                        그런데 실습3번을 마치고 첫 페이지로 돌아가면

                        Notice: Undefined index: id in E:\Bitnami\apache2\htdocs\index.php on line 35

                        Notice: Undefined index: id in E:\Bitnami\apache2\htdocs\index.php on line 37

                        Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in E:\Bitnami\apache2\htdocs\index.php on line 39

                        이러한 경고메세지가 뜹니다... 에러는 아닌거 같은데 문구를 보면 정의가 되지 않은 id가 있고 그리고 경고 구문에는 부울값이 0이라는 경고를 주는 뜻이라고 생각하고 있습니다.. 그런데 이러한 에러문구를 웹브라우저 상에 나오지 않게 하려면 어떻게 해야하는지 모르겠습니다....아시는 분이 계시다면 답변 부탁드립니다..
                      • PassionOfStudy
                        18-01-05 9일차 - 2번째 강의

                        수강완료!


                        본래 12월까지 완강하려고 했지만 미루다가 1월 까지 왔네요 ㅠㅠ
                        이번 주 주말을 이용해서 완강하겠습니다~!

                        코딩야학3기 화이팅입니다. 10일간의 프로젝트도 완성할 수 있도록 노력하겠습니다.
                      • 이도현
                        웹은 처음 다루어보는데, 수업이 너무 재밌네요.
                        좋은 강의 감사합니다.
                      • 황성찬
                        DB를 이용하지 않은 부분들은 정상적으로 출력됩니다. ex)생활코딩 로고
                        대화보기
                        • 황성찬
                          index.php를 작성하고 index.php 웹페이지로 접속 했을때

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

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

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

                          Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-7.1.12-0\apache2\htdocs\phpjs\index.php on line 20

                          위와 같은 에러가 뜨는데 에러들을 좀 살펴보니까 DB를 이용해서 웹 페이지를 구성하려고 했던 부분들에서 에러가 발생하고 맨 처음 에러에서는 DB에 접속을 방해 받았다고 하는 것 같은데
                          해결할 수 있는 방법이 있을까요?
                        • Narin MI
                          저 혹시 erro.log 열때 오류가 나는데 저만 그런건가요???
                          오류를 보면서 실습을 따라하려고 하는데 열리지가 않네요...ㅜ
                        • 김현태
                          4번부터 보기
                        • 김현태
                          앞 강의 예제문에 있었네요. ㅎㅎㅎㅎ
                          대화보기
                          • 김현태
                            opentutorials 라는 DB가 저는 없는데 언제 만들었는지 잊어 버렸네요. 혹시 DB 설정 아시는 분 계신가요? 도움 부탁드립니다.
                          • 김현태
                            혹시 비번에 ' ' <--붙이셨습니까? 이것을 비번에 붙이셔야 에러가 사라집니다.
                            대화보기
                            • 김현태
                              네, 감사합니다~^^
                              대화보기
                              • DeLli
                                php parse error 는 php구문안에서 문법이 잘못 사용된것 같고, syntax error 는 '.'이나 ';' 이런 기호들을 잘못 사용 한건 아닌지 확인 해보세요 맨 마지막줄에 on line 28,은 28번째 줄에 문제가 있다는 말이에요
                                대화보기
                                • 정윤호
                                  실습 1부터 5까지 자연스럽게 연계가 안되는 것 같은데...
                                  순서대로 따라만해도 똑같이 출력이 되야 맞는 것 같은데;;
                                  쓰기부문부터 계속 안되네요.
                                  하도 안되서 소스코드 복사해서 넣어도 안된다는 ;;
                                  저만 그런가요... ???
                                • 김현태
                                  강의 2번부터 다시 보기
                                버전 관리
                                egoing
                                현재 버전
                                선택 버전
                                graphittie 자세히 보기