팀 프로젝트 4일차 !

 

내일이 발표이기 때문에 사실상 작업 마지막 날이다.

오늘까지 작업물을 완성하고

시연 영상 제작과 발표자 선정도 필요하다.

(나만 아니면 돼)

 

 

 

1. 수정과 삭제 기능

 

어제 보류했던 기능을 마저 구현해보기로 했다.

나의 역할 중 가장 중요한 부분이기 때문에 집중해 보기로 했다.

 

작동이 잘 안된다거나

데이터 베이스가 달라서 이해가 안되는 등

우여곡절이 많았으나

 

수소문 끝에 통해 방명록 등록 / 삭제 기능을 찾아내었다.

 

삭제 기능 구현에 대한 실마리를 찾은것이다 !

 

 

 

삭제 버튼으로 해당 메세지를 삭제하는기능까지 정상적으로 작동했다.

 

 

중요한 부분을 짚고 넘어가면

                <button class="deleteButton" onclick="deleteEntry('${doc.id}')">삭제</button>

 

데이터를 불러와 메시지를 띄우는 시점에 버튼을 추가하며

해당 버튼은 온클릭= 함수(doc.id) =   파이어 베이스 문서 부분의 id 를 지정한다

 

window.deleteEntry = async (entryId) => {
    if (confirm("이 항목을 삭제하시겠습니까?")) {
        await deleteGuestBookEntry(entryId);
        displayGuestBookEntries(); // 방명록 목록 갱신
    }
};

 

클릭할 경우 deleteEntry함수로 confirm 확인을 한 후에

확인인 경우 deleteGuestBookEntry 함수를 적용한다... 

 

async function deleteGuestBookEntry(entryId) {
    try {
        const docRef = doc(db, "guestBook", entryId);
        await deleteDoc(docRef);
        console.log(`Guest book entry with ID ${entryId} has been deleted.`);
    } catch (error) {
        console.error("Error deleting guest book entry:", error);
    }
}

 

어....... 아직 이해하기가 힘든 코드지만,

대략적으로  deleteDoc을 적용해  db 에서 -> guestBook 에 있는 -> entryId 를 가진 데이터를 삭제한다...

 

 

삭제가 잘 작동하는 모습

 

이제 작업물에 적당히 적용하기만 하면 된다.

 

잘 작동하는 코드를 가져다 쓰는건 크게 어렵지 않다.

 

위의 방명록 코드에서 삭제 부분만 따온뒤 

버튼 부분에 같은 기능을 하는 함수를 달아주면 된다!

(함수명 변수명은 ... 따로 건드리지 않았다)

 

    // 멤버 삭제 함수
    async function deleteGuestBookEntry(entryId) {
      const docRef = doc(db, "ctrl_cv", entryId);
      await deleteDoc(docRef);

    }

    // 멤버 삭제 클릭
    window.deleteEntry = async (entryId) => {
      if (confirm("이 멤버를 삭제하시겠습니까?")) {
        await deleteGuestBookEntry(entryId);
        window.location.reload();
      }
    };

불필요한 부분을 적당히 날려주고

                <button onclick="deleteEntry('${doc.id}')">삭제</button>

 

생성되는 버튼에 함수를 달아주면 된다.

 

잘 작동한다 !

 

 

아무튼 삭제된 모습

 

 

 

남는 시간을 활용해

암호를 맞춰야 멤버 생성이 가능하도록 기능을 추가해 보았다.

 

      const makemempa = document.getElementById("makemempass").value

 

makemempa 변수에 

        <input type="password" id="makemempass" placeholder="암호 입력">

 

암호 입력에 적은 숫자를 대입한다. ( 좀 더 직접적으로는 안되는걸까?)

 

if (makemempa !== '1234') {
        alert("올바른 암호를 입력해 주세요.");
   return;

멤버 생성 할 때, 비밀번호 (1234) 를 체크 한 후  아닌 경우  return; 으로 멤버 생성을 중단해주면 완성?

 

 

아주 낮은 수준이겠지만 잘 작동한다 .

1234 이외를 쓴 경우

 

 

1234 를 입력한 경우

 

 

1234를 입력한 경우에는 기존처럼 멤버 생성이 잘 작동하는걸 확인할 수 있었다.

 

 

수정기능도 비슷한 방향으로 구현이 가능할 것 같으나, 

시간 관계상 제외하는 방향으로 가기로 결정했다.

 

다행히 기능구현 부분은 성공적으로 마무리했다. 

 

 

 

최종 완성본 ! 

 

프로젝트 진행상황

뭔가 ..뭔가 일어나고 있음

 

 

 

오늘 목표는 총 3가지이다.

 

1. 멤버 상세보기 작업

2. 멤버 등록하기 기능

3. 수정과 삭제 기능

 

 

 

 

1. 멤버 상세보기 작업

 

멤머 상세보기를 어떻게 만들까 부터 문제였다.

새 페이지 에서 띄우는 방법, 팝업창 으로 띄우는 방법, 모달을 이용해서 띄우는 방법.

 

새 페이지에서 띄우는 방법은 일단 제외했다.

상세보기와 어울리는 방식이 아닐 뿐더러 번거로운건 마찬가지다.

 

모달은 멤버 등록하기 기능에 사용할 예정이기 때문에 팝업창으로 만들어 보았다.

 

 

 

 

 

어디선가 풍겨오는 금단의 향기...

네비게이션 탭 부분을 만드는게 너무나 힘들었던 나머지 GPT의 힘을 빌렸다.

 

 

그 외에도, 간단 할 것만 같던 작업이

그저, 내용배치를 좌 우로 하는것만 해도 css를 이리저리 만져봐야 했고,

직접 네이게이션 탭을 만들어 보다가 계속된 실패에 시간이 많이 소모됐다.

 

그래도, 어찌어찌 완성이 되었고, 시간이 남을때 네비게이션 탭 부분의 구성을

자세히 뜯어봐야 할 것 같다.

 

 

2. 멤버 등록하기 기능

 

 

생각보다 모달창의 구현이 복잡했다.

html, css, js 모든 부분에서 정교하게 코드를 짜야 작동을 한다.

 

멤버 생성도 잘 작동한다.

 

웹개발 강의에서 알려준 그대로, 파이어 베이스를 통해 데이터를 저장하고 불러오게 만들었다.

 

3. 수정과 삭제 기능

 

수정과 삭제 기능을 등록한 멤버카드에 적용하게 하려고 했으나, 너무나 큰 벽이었다.

 

강의에서 알려주지 않은 부분이기에 더욱 진전이 되지 않았다.

 

파이어 베이스 기준으로, 

삭제 버튼을 눌렀을 경우, 해당 문서 데이터가 통째로 삭제되어야 하는데

 

어떻게 버튼과 해당 데이터를 연결시키고 특정할 수 있을지? 

이런 방식으로 작동되는게 맞기는 한건지 조차 알 수 없었다.

 

급한 불은 모두 꺼진것 같으니, 내일 이어서 알아보도록 하자.

 

 

[왕초보] 웹개발 종합반  5주차

해당 강의를 모두 들었다.

 

혹시 모른다.

강의 마지막 주차인 5주차에 중요한 내용이 몰아져 있기 때문에

프로젝트 진행에 어려움을 느끼고 있는걸지도??

 

 

5주차 강의 내용은,

1. 파이어 베이스를 이용하여 서버와 상호작용하는 웹페이지를 만드는 것

2. Github 를 통해 만들어진 코드를 배포하는것 

그리고  파이썬 맛보기가 있었으나, 너무 맛보기 였기에 잊혀졌다.

 

 

드디어, 데이터 베이스 서버를 통해 새로고침을 해도 정보가 유지되는

역사적인 순간이 됐다.

 

 

↑  firebase 와  js가 손을 잡는 순간

 

물론 그 과정에서 완벽히 이해하지 못하고, 그저 복붙하는 코드도 많았지만

객관적으로 봐도 그건 힘든일이 아닌가..?

 

 

 

이제 기록하기 버튼을 통해 생성된 데이터는 더 이상, 새로고침 해도 휘발되지 않는다.

 

또한, Github 를 통해 해당 페이지를 공유를 했더니 

 

페이지에 정체 불명의 이메일들이 우후죽순 생겨났다

 

 

누구나 접근 가능한 깃허브 리포지토리에, 누구나 사용할 수 있는 '기록하기' 기능이기 때문인듯 하다.

 

(인간 외의 영향이 있을지도... ㄷㄷ)

 

 

아무튼간에... , 이것으로

[왕초보] 웹개발 종합반  학습은 끝났다 !

 

 

다시 팀 프로젝트로 돌아와서,

오늘은 Github 에 대한 실시간 강의가 있었다. 

 

 

 

팀 프로젝트를 위한 리포지토리가 만들어졌다.

브랜치 까지 !!

 

앞으로 각자 만든 작업물을 git 을 통해 공유하고 수정하게 될 듯 하다.

 

 

 

일단, html과 css 작업으로 어느정도 뼈대를 만들었다...

 

사실, 뼈대를 만들었다기 보다

웹개발 강의를 복습하고,

 

팀원 회의간에 내가 생각하는 기능과 구현난이도에 대해

논의를 하기 위해 그냥 가시용 자료? 정도 였는데 

 

생각보다 반응이 좋아서 이 뼈대를 토대로 웹페이지를 만들게 될 것 같다.

괜찮은거겠지...?

 

 

아무튼, 프로젝트가 잘 진행될것 같은 느낌이 든다 !

 

+ Recent posts