<!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>