웹 애플리케이션 만들기

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. 손태무
    크롬브라우저에서 js 무한로딩 되면서 리소스 엄청 먹습니다...
    확인 부탁드립니다 ㅜㅜ
  2. 신정숙
    데이타베이스 이론부터 버퍼링이 아주 심해서 시간이 두배로 드네요..
    듣는 사람이 많아서 그런가요 왜그러지 ㅠ
  3. 데이터 베이스 입력을 잘못해서 지우고 수정해보는데 애먹었네요 그래도 이렇게 넘어져 가며 배우고 있습니다.
  4. scarleaf
    야호~
  5. 핵허
    process.php 마지막줄 localhost를 localhost:8080으로 바꿔보세요~
    대화보기
    • 수업 잘 듣고 있습니다 감사합니다

      오늘 수업 따라해 보았는데
      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.4.40-0\apache2\htdocs\index.php on line 35
      라는 에러가 계속 발생하네요 ㅠ 오타가 있는지도 몇번 보았고 복붙도 해보았는데 여전해요

      데이터베이스에도 제대로 입력 되어있던데 무엇이 문제인걸까요 ㅠㅠ
    • 쉽고 재밌어요 ㅎㅎㅎㅎㅎㅎ
    • Hoon Young Park
      만약에 3306으로 입력을 해도 안되는 분들은 비트나미의 *manager-windows.exe*로들어가셔서
      *mysql database*의 *cofigure*을 들어가시면* 포트 번호*가 나와있습니다. 그걸 입력을 하셔야 되는분들도 계실겁니다.

      +추가 manager-windows.exe이 파일은 C드라이브의 비트나미폴더의 warmpstack-5.머시기에 있습니다.

      +추가 전 참고로 포트번호가 3307이었습니다.
    • 큐큐
      갑자기 localhost/index.php localhost 자체 사이트가 안들어가지는데 왜이러는거죠 ?

      Refused to connect 되네요 ..
    • 홍예진
      codeanywhere로 실습하고 있습니다.
      $conn=mysqli_connect('localhost', 'host', '');
      위와 같이 작성하였으나 로그에서 아래와 같이 에러가 발생합니다.
      Warning: mysqli_connect(): (28000/1045): Access denied for user 'host'@'localhost' (using password: NO) in /home/cabox/workspace/index.php on line 2

      왜 그런지 알 수 알려주실 분이 계실까요?
    • 핵허
      하 실습2에서 오류코드가 4줄이나뜨네요 ㄷㄷ

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

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

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

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


      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\Bitnami\wampstack-7.1.4-0\apache2\htdocs\index.php on line 10
    • skekogo
      오늘 수업이 가장 어려웠던 것 같아요.ㅠㅠ 잘 알려주셔서 감사합니다!
    • 최진혁
      error log의 파일 크기가 830MB정도가 되어 파일이 열리지 않는데

      error log의 크기가 이고잉 선생님것의 크기와 너무 다른데 이건 어떤 문제인가요?
    • JS
      쓰기 버튼을 이용해 DB 에 추가된 자료가,
      첫 화면에 바로바로 적용되어 목록이 늘어나는 것을 보고 "심쿵" 했습니다.

      감사합니다!
    • bombaramir
      제가 위치 설명 넣는 걸 깜빡 했네요 ;; 죄송합니다.
      저는 저 index.php 코드 부분을 '쓰기' 부분 옆에 위치시키고 싶어서 '쓰기' 코드부분 밑에 추가했었습니다. ^^
      대화보기
      • Codeanywhere로 실습 중인데 이런 메시지가 뜹니다.
        Notice: Undefined index: description in /home/cabox/workspace/php/process.php on line 4

        INDEX로 돌아와 리스트 항목에 실습한 데이터(title)는 정상적으로 추가되어있는 반면 본문데이터(description)만 보이지 않는 걸 보면 description 컬럼에 저도 모르는 제약이 걸려있는 거 같습니다.

        또는 올려주신 코드를 똑같이 붙여보아도 같은 메시지가 뜬다는 점과 아래 질문리스트에서 저랑 같은 문제를 질문하신 분도 codeanywhere에서 실습 중이시라는 점을 봤을 때 코딩 문제라기 보다 codeanywhere의 문제 같다는 짐작도 들구요.....

        혹시 확인 가능하시다면 답변 기다려봅니다~ ^^
      • 스타일C
        mysql어렵네요. 다시 복습해야할거 같아요.수고하셨습니다
      • 김하늘
        3.html에서 제출버튼을 눌러도 아무 반응 이없는데 저만 그런건가요?
      • myspl 자체가 안뜨네요 ㅜㅜ 어려웠어용 ㅠㅍ
      • 박찬울
        안녕하세요 ^^
        저도 동일한 문제로 수업을 중간에 끊는 아픔을 겪고 한시간을 해매다 해결방법을 찾아 공유드립니다.

        ■요약

        >>문제상황 : Call to undefined function mysqli_connect() in C:\(이하경로)
        >>해결방법 : php.ini 파일의 내용을 아래와 같이 두 문장 변경 후 아파치 서버의 재실행

        ; extension_dir = "./"

        extension_dir = "C:\Bitnami\wampstack-5.6.30-2\php\ext"


        ; extension=php_mysqli.dll

        extension=php_mysqli.dll


        ■세부설명

        >>문제상황 :
        Fatal error: Call to undefined function mysqli_connect() in C:\Bitnami\wampstack-5.6.30-2\apache2\htdocs\PHP\index0622.php on line 2

        >>해결방법 :
        PHP 폴더의 php.ini 파일 속의 다음 두 문장을 설명에 따라 변경해주시면 됩니다.

        ⓐ extension_dir = "C:\Bitnami\wampstack-5.6.30-2\php\ext"
        - 본인의 PC에 php가 설치된 폴더를 찾고 경로를 확인합니다. C:\Bitnami\wampstack-5.6.30-2\php\ext
        - php.ini 폴더의 ;extension_dir = "./" 인 부분을 ext 폴더를 지정하는 경로로 위와 같이 변경해줍니다.
        - 문장 맨 앞의 세미콜론을 지워줍니다.

        ⓑ extension=php_mysqli.dll
        - 위와 같은 문장을 찾습니다.
        - 문장 맨 앞의 세미콜론을 지워줍니다.

        위와 같이 php.ini 파일을 변경 후 아파치 서버를 Restart 하시면 정상동작이 되실겁니다.
        물론 phpmyadmin 도 동작 되는 것을 확인하였습니다.
        대화보기
        • qudwn
          완료!
        • hwiyoungk
          bombaramir님 올리신 코드 잘 봤습니다.

          코드 중에 첫번째 코드인

          ===================================================================
          <?php
          if (empty($_GET['id']) === false){
          echo "<a href='http://localhost/php/delete.php?id=".$_GET['id']."'>삭제</a>";
          }
          ?>
          =====================================================================

          3번째 줄 ...echo~~~~부분....을 index.php의 <article>~</article> 태그 내의 php If문 속에 넣으면 되는거죠?
          (제일 아랫줄에 넣음)

          그렇게 했더니 되긴 되더군요. 모양새를 좀 보기 좋게 하기 위해서 기존 if문 내 실행문과 '삭제 버튼 추가' 구문 사이에
          echo '<br />';를 두번 넣었습니다.
          대화보기
          • 치우천황
            강의잘 들었습니다.
            php와 mysql 연동하는걸 새롭게 알았습니다.
          • 이희태
            6월 22일 MySQL 실습 수강완료하였습니다 수련시간에 한번더 들으면서 다시해봐야겠습니다 ㅠㅠ 버겁네요 ㅠㅠ
          • 시금치
            저도 문제가 많아서 많이 헤매다가 해결해서 참고하시라고 글 올려 봅니다.

            * 에러 해결방법
            1. 비밀번호는 ""로 감싼다.
            2. localhost뒤에 :3306을 추가한다.
            (반대로 localhost 에러메시지 뒤에 localhost:3306:3306이 중복해서 들어가 있을 경우, :3306은 삭제한다.)
            3. 웹서버와 데이터베이스서버를 재시작 해본다.
          • alan
            감사합니다. 열심히 배우고 있습니다.
            이번 강의까지 마무리 했는데요 문제가 발생했습니다.

            write.php 화면에서 title, author, description 작성 후 제출할때 description의 글이 짧으면 정상적으로 작동되나, 긴 글 (예를들면 wikipedia에서 array 항목을 모두 카피한 내용)을 작성하면 화면에 아무것도 표시되지 않고, db에도 등록되지 않는 경우가 발생합니다. 이런 문제의 경우 어디가 잘못인 것인지 알 수 있는 방법이 있나요?
          • Lydia
            감사합니다~ DB에 자료가 추가되는게 너무 신기하네요! 다음 수업도 너무 기대가 됩니다^^
          • sang cheol
            codeanywhere를 사용하여 진행하고 있습니다.
            현재 MySQL 을 사용하는데, 아래와 같이 에러가 납니다.

            Warning: mysqli_connect(): (HY000/2005): Unknown MySQL server host 'http://sangleecode-sangleemobile495557.codeanyapp.com' (74) in /home/cabox/workspace/index.php on line 2

            뭐가 문제인지 잘 모르겠어요.. 결국 host를 찾지 못한 거 같은데요..
          • Gae Hwan
            Fatal error: Call to undefined function mysqli_connect() in C:\Bitnami\wampstack-5.6.30-2\apache2\htdocs\PHP\index0622.php on line 2

            $conn = mysqli_connect('localhost:3306', 'root', '(초기 비밀번호)');
            라고 분명히 했는데mysqli_connect가 정의되지 않은 함수라고 나오네요 ㄷㄷ
            다른 거 시도하면서 계속 했는데도 안되네요...localhost 뒤에 아무것도 안 넣어보기도 했고 초기 비밀번호는 분명히 앞에 MySQL 이론 수업 땐 잘 써먹었는데...

            Manage Servers 있는 창에서 Open phpMyAdmin 들어갔더니 mysqli 확장기능이 설치되지 않았다고 나오는데 이거 설치해야 하나요? 처음 설치할 때 별 문제 없었는데 이상하네요...

            php.ini에서 해결해야 하는 문제인가 싶기도 한데 괜히 건드리면 안 될 것 같고요...

            아님 저는 PHP 폴더 내의 index0622.php 파일로 했는데 이게 MySQL에서 했던 거랑 안맞아서 그런 건지...

            이고잉님 꺼 그대로 카피 페이스트 한 다음에 비번만 바꿔서 내도 똑같은 게 뜹니다...정말 이거 bitnami 지우고 다시 설치해야하는지까지 고민되네요
          • bombaramir
            패스워드 입력 부분을 초기 비트나미 설치할때 입력한 패스워드로 입력해보세요, 패스워드 오류 같습니다.
            대화보기
            • 김영일
              Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\Bitnami\wampstack-5.6.30-2\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-2\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-2\apache2\htdocs\index.php on line 4

              이런 에러 메세지가 계속 나오는데..왜그러는 걸까요..ㅠㅠ
            • bombaramir
              삭제 기능을 만드는 것도 쉽지는 않네요. 몇시간 동안 끙끙 대면서 겨우 완성했습니다. 혹시나 저와 같은 어려움을 겪고 계신 분이 있으면 참조하시면 좋을 것 같아서 코드를 적습니다.

              index.php 에서,

              <?php
              if (empty($_GET['id']) === false){
              echo "<a href='http://localhost/php/delete.php?id=".$_GET['id']."'>삭제</a>";
              }
              ?>

              새로 생성한 delete.php 에서,

              <?php
              $conn = mysqli_connect('localhost','root','password');
              mysqli_select_db($conn, 'opentutorials');
              $del = "delete from topic where id=".$_GET['id'];
              $result = mysqli_query($conn, $del);
              header('location: http://localhost......hp');
              ?>

              더욱 간단한 방법도 많겠지만, 이 방법이라도 도움이 될 수 있으면 좋겠습니다.
            • 잘 봤습니다. 대단한 걸 알아갑니다. 쉬워질 때까지 열심히!
            • 허영재
              수시로 발생하는 오탈자 및 (큰,작은)따옴표, 컴마와 닷 등이 헷갈리기 시작하니...

              강의 초기 이고잉님이 말한

              '지옥을 경험하시게 될겁니다'

              라는 멘트의 의미를 짐작할 수 있을 것 같아요~
            • Kim Sangil
              저기 비밀번호에 어퍼스트로피를 넣으니까 되는군요... 감사합니다
              대화보기
              • 이 정
                저도 이거 에러 떠요ㅠㅠ젭알
                대화보기
                • 유용욱
                  $conn = mysqli_connect("localhost:8080","root","111111");
                  처음에 이렇게 썻었는데 댓글을 보고 mysql이 깔린 포트를 입력했더니
                  다행히 잘 되네요
                  $conn = mysqli_connect("localhost:3306","root","111111");
                  대화보기
                  • 이주영
                    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.6.30-3\apache2\htdocs\index.php on line 24

                    이 에러가 뜨는데 해결 방법을 모르겠습니다..
                    아래 글들 읽어봤는데도 못 찾겠어요.
                    혹시 해결 방법을 아시는 분 있으시면 가르침 부탁 드립니다.
                  • Kim Sangil
                    뭔가 꼬여도 단단히 꼬였다... 화이트 블랙은 작동 안되고...


                    Notice: Use of undefined constant ******* - assumed '********' in C:\Bitnami\wampstack-5.6.30-3\apache2\htdocs\index.php on line 2

                    이러면서 비밀번호 잘못됬다고 나오면서도 db에는 등록 되고........
                  • 코딩하는오징어
                    삭제도 한번 구현해 보았습니다~
                  • 코딩하는오징어
                    오 감사합니다. 사랑합니다
                    대화보기
                    • 웹초보
                      코딩하는 오징어님

                      echo "<li><a href = 'http://localhost/index.php?id=".$row['id']."'>".$row['title']."</a></li>"."\n";

                      로 수정하시면 잘 될겁니다.

                      따옴표 안에 묶여있는 내용들만 복사해서 html 페이지에 붙여넣기 하신 다음 문법을 확인하시면 오류를 찾기 쉽습니다.

                      문의하신 echo "<li><a href = 'http://localhost/index.php?id='"."$row['id']".">".$row['title']."</a></li>"."\n"; 코드에서 큰 따옴표 안의 내용들만 복사해보면(큰 따옴표로 지정한 이유는 위의 코드가 큰 따옴표를 "~~~"."~~~"의 형태로 문장의 구분자로 사용하여 문자가 구분되어 있기 때문입니다. )

                      <li><a href = 'http://localhost/index.php?id='$row['id']>$row['title']</a></li>\n
                      가 되어 $row['id'] 앞에 작은 따옴표가 들어갔기 때문에 오류가 발생한 것입니다.
                    • 코딩하는오징어
                      echo '<li><a href = "http://localhost/index.php?id='.$row['id'].'">'.$row['title']."</a></li>"."\n"; 이것을
                      echo "<li><a href = 'http://localhost/index.php?id='"."$row['id']".">".$row['title']."</a></li>"."\n"; 이렇게하면 안되는 이유는 뭔가요? 작은따옴표와 큰따옴표에 대해서 좀 헷갈리네요
                    • orez
                      감사합니다. 어려운 부분들이 있는데, 반복적으로 학습하도록 하겠습니다.
                    • 정미정
                      어려웠지만!! 강의 잘 들었습니다!!
                    • namimoon
                      header('Location: http://localhost......hp'); 몰랐던 구문이었네요
                    • lunamoth
                      $sql = "INSERT INTO topic (title,description,author,created) VALUES('".$_POST['title']."', '".$_POST['description']."', '".$_POST['author']."', now())";

                      이 부분에서 따옴표가 하나 더 들어가서 안됐던것 같네요; 이젠 잘 됩니다
                      대화보기
                      • lunamoth
                        음 process.php 위 내용하고 똑 같은데 리프레쉬 해도 입력한 글이 업데이트가 안되는군요;
                      • 김민성
                        잘보았습니다
                      • 김민성
                        잘보았습니다
                      버전 관리
                      egoing
                      현재 버전
                      선택 버전
                      graphittie 자세히 보기