Basic database using indexDB

<!DOCTYPE html>


<html>


<head>


<title>Blog Database with IndexDB</title>


</head>


<body>


<h1>My Blog</h1>


<form id="postForm">


<label for="title">Title:</label>


<input type="text" id="title" name="title" required>


<br>


<label for="content">Content:</label>


<textarea id="content" name="content" rows="4" required></textarea>


<br>


<button type="submit">Add Post</button>


</form>


<div id="postList"></div>



<script>


// Open or create a new database


const request = indexedDB.open('YourBlogDatabase', 1);


let db;



request.onupgradeneeded = (event) => {


db = event.target.result;


const postStore = db.createObjectStore('posts', { keyPath: 'id', autoIncrement: true });


};



request.onsuccess = (event) => {


db = event.target.result;


displayPosts();


};



request.onerror = (event) => {


console.error('Error opening database', event.target.error);


};



function addPostToDB(postData) {


const transaction = db.transaction(['posts'], 'readwrite');


const postStore = transaction.objectStore('posts');


const request = postStore.add(postData);



request.onsuccess = () => {


console.log('Post added to the database');


displayPosts();


};



request.onerror = (event) => {


console.error('Error adding post', event.target.error);


};


}



function getAllPostsFromDB() {


const transaction = db.transaction(['posts'], 'readonly');


const postStore = transaction.objectStore('posts');


const request = postStore.getAll();



request.onsuccess = () => {


const posts = request.result;


displayPosts(posts);


};



request.onerror = (event) => {


console.error('Error fetching posts', event.target.error);


};


}



function displayPosts(posts) {


const postList = document.getElementById('postList');


postList.innerHTML = '';



if (!posts) {


getAllPostsFromDB();


return;


}



posts.forEach(post => {


const postElement = document.createElement('div');


postElement.innerHTML = `


<h2>${post.title}</h2>


<p>${post.content}</p>


<hr>


`;


postList.appendChild(postElement);


});


}



document.getElementById('postForm').addEventListener('submit', (event) => {


event.preventDefault();


const formData = new FormData(event.target);


const post = {


title: formData.get('title'),


content: formData.get('content'),


};


addPostToDB(post);


event.target.reset();


});


</script>


</body>


</html>


delete icon