Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ npm install
```
supervisor app.js
```

##안녕하세요
##hi
83 changes: 82 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ var mysql = require('mysql');
var conn = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'mysql1234',
password : 'mysqlmysql',
database : 'news_stack',
port: 3306 /* 8889 on Mac client */
});
Expand Down Expand Up @@ -67,6 +67,87 @@ app.use('/account', account);
var account = require('./routes/admin.js')(app, conn, upload);
app.use('/admin', account);

/* 목록 */
app.get('/news/:id/', (req, res) => {
var sql = 'SELECT * FROM comments';
conn.query(sql, function(err, comments, fields){
if(err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
res.render('detail', {comments:comments});
}
});
});

/* 추가 */
app.get('/news/:id', (req, res) => {
res.render('comments', {});
});

/* Form 데이터 DB INSERT */
app.post('/news', (req, res) => {
var comments = req.body.comments;

var sql = 'INSERT INTO news (`comments`) VALUES(?)';
conn.query(sql, [comments], function(err, result, fields){
if(err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
res.redirect('/news' + result.insertId);
}
});
});


/* Form 데이터 DB UPDATE */
app.post('/news/:id/', (req, res) => {
var id = req.params.id;
var cid = req.params.cid;
var comments = req.body.comments;

var sql = 'UPDATE news SET id = ?, `cid`= ?, `comments` = ? WHERE id = ?;';
conn.query(sql, [ id, cid, comments,], function(err, err, fields){
if(err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
res.redirect('/news/:id' + id);
}
});
});

/* Delete confirmation
app.get('/news/:id/delete', (req, res) => {
var id = req.params.id;
var sql = 'SELECT * FROM commnet WHERE id=?';
conn.query(sql, [id], function(err, news, fields){
if(err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
res.render('news_delete', {news:news[0]});
}
});
});

/* DELETE DB row
app.post('/news/:id/delete', (req, res) => {
var id = req.params.id;

var sql = 'DELETE FROM news WHERE id = ?';
conn.query(sql, [id], function(err, result, fields){
if(err){
console.log(err);
res.status(500).send('Internal Server Error');
} else {
res.redirect('/news/');
}
});
});


/* Port listening */
app.listen(port, () => console.log(
`Server is running... http://localhost:${port}`
Expand Down
35 changes: 31 additions & 4 deletions routes/news.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,12 +153,39 @@ module.exports = function(app, conn, upload) {
console.log(err);
res.status(500).send('Internal Server Error: ' + err);
} else {
res.render('news/detail', {
news: news[0],


var sql = "SELECT `comments` FROM `comments`";
conn.query(sql, [], function(err, comments, fields){
if(err){
console.log(err);
res.status(500).send('Internal Server Error: ' + err);
} else {
var array = [];
for(i=0; i<comments.length; i++)
array.push(comments[i]);
res.render('news/detail', {
news: news[0],
comments: comments
});
}
});
}
});
});

router.post('/:id/', (req, res) => {
console.log(req.body);
var id = req.params.id;
var comments = req.body.comments;
var sql = 'INSERT INTO `comments` (`comments`) VALUES(?)';
conn.query(sql, [comments], function(err, result, fields){
if(err){
console.log(err);
res.status(500).send('Internal Server Error: ' + err);
} else {
res.redirect('/news/'+id);
}
});
});
return router;
};
};
1 change: 1 addition & 0 deletions views/news/detail.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
<a href="/news/" class="btn btn-outline-info">목록</a>
</div>
</div>
<%- include('includes/comments'); -%>
<% } else { %>
<p>Not exist</p>
<% } %>
Expand Down
69 changes: 69 additions & 0 deletions views/news/includes/comments.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<html>
<head>
</head>
<body>
<div class="container">
<table class="table table-bordered">

<br>
<br>
<hr>



<table>
<div class="container">
<div class="row">
<div class="panel panel-default widget">
<div class="panel-heading">
<span class="glyphicon glyphicon-comment"></span>
<h3 class="panel-title">
댓글 내용</h3>
</div>
</div>
</div>
</div>
</table>

<form method='post'>
<hr>
<% if (news) { %>
<% for(var i=0; i < comments.length; i++) { %>
<div class="panel-body">
<div class="row" style="margin-left: 5px">
<div class="comments_container">
<div class="comments-text">
<%= comments[i].comments %>
</div>
<div class="action">
<a href="/comments/<%= news.id %>/edit" class="btn btn-outline-primary" style="font-size: 10px;">수정</a>
<a href="/comments/<%= news.id %>/delete" class="btn btn-outline-secondary" style="font-size: 10px;">삭제</a>
</div>
</div>
</div>
</div>
<hr>
<% } %>
<% } %>
<tr>
<p style="font-size:28px;">댓글 쓰기</p>
<td><textarea cols="10" placeholder="내용을 입력하세요. " name="comments" class="form-control"></textarea></td>
</tr>
<tr>
<td colspan="2">
<input type='submit' value="등록" class='pull-right'></a>
<input type="button" value="reset" class="pull-left"/>
</td>
</tr>
</form>


<p><a href="/news">News Home</a></p>


</div>
</body>
</html>