웹 애플리케이션 만들기

부록 : 복습

지금까지 공부한 내용을 총정리하는 내용입니다. 전체 수업을 복습하는 것 보다는 압축된 본 수업을 반복학습하실 것을 권합니다.  부록 : 복습2에서는 본 내용을 다시 압축해서 20분 동안 정리한 내용이 있습니다. 적당한 수준을 선택하셔서 경제적으로 복습을 하셨으면 좋겠습니다.  

본 수업의 예제 파일은 아래의 github를 참고해주세요.

 https://github.com/codingeverybody/makewebapp/tree/master/practice1

댓글

댓글 본문
작성자
비밀번호
  1. 답답맨
    정리 8번 데이터 베이스 안에 정보를 삽입하는 부분(25:49) 에서 description을 입력했지만 자꾸
    Notice: Undefined index: description in /Applications/mampstack-5.4.40-0/apache2/htdocs/practice/process.php on line 22

    Notice: Undefined variable: user_id in /Applications/mampstack-5.4.40-0/apache2/htdocs/practice/process.php on line 26
    INSERT INTO `topic` (`id`, `title`, `description`, `author`, `created`) VALUES ('1','','', now());

    이문구가 뜨네요.
    혹시 뭐가 문제인지 알수있을까요?
    코딩은 이렇게 했습니다.

    <?php
    print_r($_POST);

    //데이터베이스 접속
    $conn = mysqli_connect('localhost','root','901108');
    mysqli_select_db($conn,'opentutorials2');

    //저자가 유저 테이블에 존재하는지 여부 체크
    $author = mysqli_real_escape_string($conn, $_POST['author']);
    $sql = "SELECT * FROM `user` WHERE `name` ='{$author}'";
    $result = mysqli_query($conn, $sql);

    if ($result->num_rows>0) {
    //존재한다면 유저의 아이디 값을 알아내면 된다.
    $row=mysqli_fetch_assoc($result);
    $user_id= $row['id'];
    }else {
    //존재하지 않는다면 저자를 유저 테이블에 추가해야한다. 추가후 아이디를 알아낸다.

    }
    $title = mysqli_real_escape_string($conn, $_POST['title']);
    $description = mysqli_real_escape_string($conn, $_POST['description']);
    $sql = "INSERT INTO
    `topic`
    (`id`, `title`, `description`, `author`, `created`)
    VALUES ('{$title}','{$description}','{$user_id}',
    now());";
    echo $sql;
    //제목 저자 본문등을 토픽 테이블에 추가한다.

    ?>
  2. jongsuns
    새로운 author로 전송하면 $user_id 가 계속 0인 문제를 해결을 못하겠네요.
    user table에서 password NULL 허용해주고 스크립트에서 password value ''를 넣어줘도 안됩니다.
  3. 살길바라냐
    Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\Bitnami\wampstack-5.6.37-2\apache2\htdocs\practice1\index.php on line 60

    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.6.37-2\apache2\htdocs\practice1\index.php on line 64

    60 ->> $id = mysqli_real_escape_string($_GET['id']);
    64->> $row = mysqli_fetch_assoc($result);

    이거 해결방법 아시는 분 없나요?
  4. 신명진
    저도 이걸로 고생좀 했는데요.
    mysql 에 password 값이 NULL 로 셋팅이 되어 있지 않아서 입니다.
    쿼리문 작성할 때 password 값을 넣어 주던지, 아니면 mysql 에서 password 를 NULL 로 지정해 주면 됩니다.

    지금쯤 이미 해결 하셨겠네요 ㅎㅎ

    혹시 다른분 고생하고 계시다면 참고하시기 바랍니다.
    대화보기
    • 제갈량
      phpMyAdmin을 사용하시려면
      phpMyAdmin 공식 홈페이지에 들어가셔서
      phpMyAdmin을 다운을 받으시면 압축 파일로 되어 있습니다.
      압축을 풀어내고, Bitnami가 깔린 폴더에 htdocs폴더 안에
      압축을 풀어낸 phpMyAdmin을 옮겨 놓습니다.
      주소창에 localhost/phpMyAdmin/index.php 치시면
      (단, 주소창에 입력을 하실 때 "M", "P"가 대문자여야 합니다.)
      사용자 이름과 비밀번호를 입력하시면 영상에서와 같은 페이지가 뜨게 됩니다.

      아래 주소는 phpMyAdmin공식 홈페이지입니다.
      https://www.phpmyadmin.net/
    • marion
      정주행 후 계속 복습중입니다.

      한가지 궁금한게 있어서 질문드립니다.
      게시판을 1개 만드는 건 이제 잘 따라하는데

      만약,

      게시판이 여러개일때 (게시판 1, 게시판 2, 게시판 3..)
      해당 게시판(게시판 1, 게시판 2, 게시판 3,)에 모두 write.php를 만들진 않을꺼라 생각합니다.
      그렇다면 데이터를 불러올때 게시판의 전체 목록을 불러와서 클릭시 해당 게시판을 변수로 넣을 수 있을거라 생각하는데... 그렇게 되면 게시판이 100개여도 쓰기와 수정등 해당 게시판에서만 사용해야하는 기능을 이용할 수 있을 것 같습니다. 혹시 게시판(게시판 내용이아님)전체 목록을 불러오는 sql문과 그걸 변수로 이용하여 쓰기와 수정등을 만드는 방법을 알 수 있을까요?


      <?php
      $conn = mysqli_connect('localhost', 'root', '111111');
      mysqli_select_db($conn, 'Opentutorials');
      $sql="SELECT * FROM `topic`"
      $result = mysqli_query($conn,$sql);
      ?>

      제가 강의 내용을 이해못해서 그런것인지 궁금하네요 ㅎㅎ
    • 알려주세요 ㅠㅠ
      phpmyadmin에서 edit inline으로 sql문을 수정했는데요. 다시 리로드하면 수정한게 저장이안되고 원래 SQL문인SELECT * FROM `topid`으로 바껴집니다.;; 어떻게 해결해야할지 모르겠네요 ㅠㅠ
      대화보기
      • 신동동
        궁금한게 있습니다 phpmyadmin에서 테이블 조인 시키는건 가능한데 수정하고 새로고침하면 원래대로 돌아옵니다 이유는 뭐인지 알 수 있을까요>??
      • 냥냥
        안녕하세요 정리6 영상에서 버튼에 궁금한 게 있습니다.
        화이트가 기본이고 블랙 버튼을 누르면 배경이 블랙으로 변하는 것까지는 되는데
        다른 페이지로 이동하니 자동을 화이트로 돌아가네요.
        (예: about Javascript 페이지에서 블랙 버튼 눌러 검은 배경화면 적용 -> Variables 페이지로 이동하면 화이트로 돌아옴)
        한 번 버튼을 누르면 다른 페이지에서도 계속 동일하게 적용되어 있어야할 것 같은데
        이 부분은 어떻게 해야할까요?
      • 이상윤
        강의 감사합니다.
        픽셀 px 대신에 15% 20% 와 같이 퍼센트를 줘도 되네요 ㅎㅎ 감사합니다.
      • 바실로마첸코
        이거는 복습이라기보단 새로운 강의 같네요 근데 너무길다능 ㅠㅠ
      • hswangel
        egoing님!
        정말 감사합니다.

        정주행 하긴 했는데
        역시나 뭔가 엄청 하긴 한 느낌인데
        명확하게 '이거다!'라고 말하기 어려운 기분!

        이런 마음과 기분까지 고려하셔서
        이렇게 복습 강의까지 올려주시니 그저 감사할 따름입니다.
        정말 감사합니다.

        egoing님!
        항상 건강하시고
        날마다 행복하세요~ ^^
      • 서성진
        2번 완주했습니다.
        다만,, ㅠㅠ 어렵네요.
        그래도 이렇게 복습까지 할 수 있어서 정말 좋습니다.
        어떻게 해야 이렇게까지 친절하실 수 있는건가요?
        그저 감읍할 따름입니다.
      • 푸른하늘
        감사합니다
      • 박인호
        12-02
        수강완료.
        다시 한 번 정리가 됐습니다. 감사합니다.
      • Gweonsu Kim
        user table 추가가 되지 않는 현상에 대한 글입니다.

        밑에 Sara 님과 같은 현상을 겪었습니다.

        $sql = "INSERT INTO `user` (`id`, `name`,`password`) VALUES (NULL, '$author','000')";

        버전 차이인 것인지는 확실치 않습니다만, 위 구문과 같이 password 란을 채워 넣으면 해결이 되더군요.
      • 유상원
        2017-11-11 완료!
      • Sara
        user 테이블에 없는 user가 글을 등록하면 user테이블에 등록되는 코드가 작동을 안하네요ㅜㅜ
        $sql = "INSERT INTO user (id, name) VALUES(NULL, '{$author}');";
        는 뜨는거 확인했는데

        안돼서 github의 코드를 그대로 사용해도
        user가 등록되지는 않고 topic에 author가 0이고 이름 없이 토픽에 글만 등록됩니다.

        더 확인해보니 $result가 false
        $user_id가 0으로 받아져서
        topic 테이블에 id값은 0이고 author는 빈칸으로 글이 등록되네요ㅜㅜ

        저랑 같은 상황 겪으신 분 계신가요 ㅜㅠ
      • SanFrancisco
        복습강의까지 감사드려요 ㅎㅎ 강의를 들으니까 지금까지 배웠던 내용들이 더 잘 머리에 박히네요 ^^
      • 스콜스
        전반적인 웹애플레이션 동작 방법을 배운거 같아요. 양질의 강의 감사드립니다.
      • Eastone
        같은 오류때문에 헤매다가 방법을 찾았네요
        $sql = "select * from 'topic'"; 에서 'topic'을 작은 따옴표가 아니라
        물결표 위에 있는 그레이브 엑센트 바꿔주세요 `topic` 아니면 그냥 topic으로 해도 되더군요
        대화보기
        • svastica
          잘 들었어요. 감사합니다~~
        • YeonHoon Jeong
          topic 테이블에 값이 없는 것 같은데요?
          혹시 topic 테이블만 만드시고 컬럼은 삽입하셨는지요?
          컬럼 삽입을 하지 않으셨다면, 테이블 내부에 값이 없어서 다음과 같은 오류메시지가 나타나는 것 같습니다.
          대화보기
          • webmario
            수고하셨습니다~!!! 감사합니다!
          • 카라멜팝콘
            수고 많으셨습니다!
          • 피피
            Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Bitnami\wampstack-5.6.31-0\apache2\htdocs\practice1\aa.php on line 6

            저도 이 오류로 진행이 안되고 있어요. 2번째 영상과 똑같이 하고 있는데도 이 오류가 나서 며칠째 머물러있네요 ㅜ
            제가 적은 코드는 이렇습니다. 라인6은 $row = mysqli_fetch_assoc($result); 부분이에요.

            <?php
            $conn = mysqli_connect('localhost','root','111111');
            mysqli_select_db($conn,'opentutorials2');
            $sql = "select * from 'topic'";
            $result = mysqli_query($conn,$sql);
            $row = mysqli_fetch_assoc($result);
            print_r($row);

            ?>
            대화보기
            • Jaehyun Kim
              감사합니다!^^
            • GoldPenguin
              완료했습니다.
            • Baekkyu Han
              본 요약본 보다는 전체를 보면서 복습 실시.
            • 마건
              이제는 가볍게 시간날때마다 힐링한다는 생각으로 부록편을 시청하겠습니다.
            • 한종운
              복습 길이도 만만치 않네요.
              준비, 제공에 감사!
            • nevertoolate
              오매~~~ 내 컴에 이런 php admin이 있는 줄 몰랐네요.
              마치 보석이 숨겨져 있었던 것 같아요. 캬~~ 복습 하길 잘 했다.
            • Kisoo Ahn
              이전과는 좀더 근대적인 방법으로 복습 잘했습니다.
              요약정리 감사드립니다.
            • sheis
              잘 봤습니다^^
            • Kang Hokyung
              질문을 계속 하려니 언제나 염치없는 마음입니다.
              다시 보면서 만들고 싶은 것을 만들기 시작했는데, 첫 단계에서 막히고 있습니다.

              위 두번째 동영상 말미에 가르쳐 주신 db 에서 원하는 필드값을 하나씩 화면에 호출하는 것을 실습까지 마쳤습니다.
              <?php
              $sql = "SELECT * FROM category";
              $result = mysqli_query($conn, $sql);
              while($row = mysqli_fetch_assoc($result)){
              echo $row['category'].'<br />';
              }
              ?>
              이 부분입니다.

              제가 하고 싶은 것은 php로 sql db 에서 읽어 낸 특정 필드의 모든 값을 (약 11개) html 의 select tag 의 옵션에 할당하고 싶은데, 어떻게 해야 할지 아무리 검색해 봐도 모르겠습니다.
              php 반복문을 통해 한 반복에서 하나씩 리턴되는 결과를 select 의 option 으로 각각 지정하려면 php 의 반복문과 html tag 의 코드가 번갈아 섞여 버리게 되고 그렇게 되면 작동하지 않습니다.

              이고잉님 이메일을 받으며 언제나 '무지 바쁘겠다' 고 생각하면서 더 바쁘게 하는 것 같습니다.
            • Kuon
              phpmyadmin에 들어가질 못해서 비트나미를 재설치 했더니 들어는 가지는데 생성부분이 막혀서 결국 실습은 못했습니다. 오류 해결되는대로 실습도 하고 싶네요
            • JUNY
              완료!
            • Seonwu Kim
              음, 이것도 차차 해보아야 겠습니다.
            • 스타일C
              복습합니다 .
            • Kang Hokyung
              phpmyadmin 으로 데이타베이스를 만들고 테이블을 그대로 따라 만든 후 저장을 누르면,
              메시지 박스가 뜨고
              "#1075 - incorrect table definition ; there can be only one auto column and
              it must be defined as a key"
              라고 보여 줍니다. 그리고 저장되지 않고 그대로 화면을 유지하고 있습니다.
              어떻게 하면 될까요?

              하나 더는 phomyadmin 의 버전이 이고잉님이 수업에서 보여주는 것과 조금 다릅니다.
              버전이 다른 것 같습니다.
            • lunamoth
              3시간 24분
            • Hee-Jong Yoo
              복습이 엄청 길군요. 그래도 복습하는 과정에서 앞 과정에서 모르고 건넌 부분을 알 수 있었습니다.
              감사해요.
            • 김민성
              복습까지 챙겨수시다니 너무 고생하샸어요
              감사합니다
            • suhyun
              복습까지시켜주시는 강의는 처음보는거같아요 감사합니다~^^
              전부다본후에 뭘해야되나요?
            • 답변
              '.$row['title'].' 이게아니라 => '문자열' .$row['title'].'문자열'
              이렇게 연결된겁니당 !! $row앞에 ' . ' 이 문자열을 합쳐주는 역할을합니다.
              대화보기
              • topic테이블 만들때 id 길이/값을 10으로주는이유가뭔가요?
              • echo '<a href="index.php?id='.$row['id'].'">'.$row['title'].'</a><br>';
                이부분에서 '.$row['title'].' 왜 ''이걸로 감싸는지 알수있을까요?
                문자열로 입력해야된다면 .'$row['title']'. 이게 맞지않은건가요? 이해력이딸려서 ㅠㅠ
              • Seo Yun Seok Tudoistube
                이고잉님의 목소리는 선천적인거여서 포기해야 하지만, 강의 중 느껴지는 재치있는 감각은
                어디서 나오는지 배우고 싶네요. 감사합니다^_____^
              • 우탄
                phpmyadmin의 오픈튜토리얼스2의 토픽테이블에서 SELECT * FROM `topic` 까지는 잘 나오지만
                php 코드 보기를 누르면

                $sql = '
                \n"

                . "$sql = \'SELECT * FROM `topic`"';
                이런 php코드가 나옵니다..
                그리고 php 코드 없이 보기를 누르면 오류:토큰 불일치 라고 나오네요ㅠㅠ
                구글링결과 토큰 불일치는 주석제거하고 경로설정을 다시 하라는데... 무슨 말인지 모르겠습니다..
                참고로 윈도우7 사용중입니다.


                topic, user 테이블의 코드는 이렇습니다
                CREATE TABLE `opentutorials2`.`topic` ( `id` INT(10) NOT NULL AUTO_INCREMENT , `title` VARCHAR(100) NOT NULL , `description` TEXT NULL , `author` INT NOT NULL , `created` DATETIME NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

                CREATE TABLE `opentutorials2`.`user` ( `id` INT(10) NOT NULL AUTO_INCREMENT , `name` VARCHAR(20) NOT NULL , `password` VARCHAR(30) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;
              • 헬리사우드
                MySQL이 실행이 안돼네요.
                제가 올린 로그가 도움이 안돼는로그같아서 새로 올립니다.
                최근 MySQL로그입니다.
                쓸모있는부분부터 올립니다.
                2017-04-30T13:09:35.100723Z 0 [Note] C:\Bitnami\wampstack-7.0.13-1\mysql\bin\mysqld.exe (mysqld 5.7.16) starting as process 3484 ...
                2017-04-30T13:09:35.116734Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
                2017-04-30T13:09:35.117734Z 0 [Note] InnoDB: Uses event mutexes
                2017-04-30T13:09:35.118735Z 0 [Note] InnoDB: _mm_lfence() and _mm_sfence() are used for memory barrier
                2017-04-30T13:09:35.118735Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
                2017-04-30T13:09:35.119736Z 0 [Note] InnoDB: Number of pools: 1
                2017-04-30T13:09:35.120737Z 0 [Note] InnoDB: Not using CPU crc32 instructions
                2017-04-30T13:09:35.124739Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
                2017-04-30T13:09:35.133746Z 0 [Note] InnoDB: Completed initialization of buffer pool
                2017-04-30T13:09:35.150758Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
                2017-04-30T13:09:35.151759Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
                2017-04-30T13:09:35.151759Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
                2017-04-30T13:09:35.455995Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
                2017-04-30T13:09:35.458977Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
                2017-04-30T13:09:35.462993Z 0 [ERROR] Failed to initialize plugins.
                2017-04-30T13:09:35.465997Z 0 [ERROR] Aborting

                2017-04-30T13:09:35.466983Z 0 [Note] Binlog end
                2017-04-30T13:09:35.468984Z 0 [Note] Shutting down plugin 'CSV'
                2017-04-30T13:09:35.471987Z 0 [Note] C:\Bitnami\wampstack-7.0.13-1\mysql\bin\mysqld.exe: Shutdown complete
                InnoDB가 뭔지 모르겠고 무슨 ibdata1이라는 파일이 읽혀야 한다는데 어떻게좀 해결해 주실수 있으신분 없나요?
              버전 관리
              egoing
              현재 버전
              선택 버전
              graphittie 자세히 보기