首页 > 解决方案 > 使用删除消息按钮删除我通过查询输入的mysql中的一行

问题描述

所以我正在创建一堵墙,人们可以在其中向其他用户发送消息。在我的 SQL 中,我有两张表,一张用于用户,一张用于消息,并且这些表被标记为这样。

在我的消息表中,列名是 id、sender_id、message、created_at、updated_at 和 recipient_id。users 表列如下 id、firstName、lastName、email、password(hashed)、created_at、updated_at。

发消息就好了。但是当我尝试创建一条删除该人墙上消息的路线时,我似乎无法让它工作。

以下是我的 server.py 文件中的代码:

@app.route("/delete/<id>", methods=["POST"])
def delete(id):
    mysql=connectToMySQL('logindb')
    query = "DELETE FROM messages WHERE (id = request.form['user_id']) and (sender_id = session['sender_id]);"
    # DELETE FROM `logindb`.`messages` WHERE (`id` = '51') and (`sender_id` = '12');
    selecter = mysql.query_db(query)
    return redirect('/wall')

(注释掉的代码是我在 mySQL 中查看的)

以下是我的创建消息路由:

@app.route('/create_messages', methods=['POST'])
def create_messages():
    mysql=connectToMySQL('logindb')
    query = "INSERT INTO messages(message, created_at, updated_at, sender_id, recipient_id) values(%(messages)s, now(), now(), %(sender_id)s, %(recipient_id)s)"
    data = {
        'messages' : request.form['message'],
        'sender_id' : session['id'],
        'recipient_id' : request.form['user_id']
    }
    session['recipient_id'] = request.form['user_id']
    session['sender_id'] = session['id']
    print(session['recipient_id'],'THIS IS THE RECIPIENT ID !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
    print(session['sender_id'],'THIS IS THE SENDER ID !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
    inserter = mysql.query_db(query,data)
    return redirect('/wall')

在我的 wall.html 文件上。我有两个部分。右边的部分是创建消息,左边是特定用户拥有的消息。如果您能帮助我,我也想修复这里的错误,但这是一个小错误。因此,在您可以以某种方式发送消息的部分中,登录用户可以向自己发送消息......我不打算这样做,但我认为这可能很酷,就像提醒一样,但我确实想看看我是否可以也解决这个问题。

创建消息端:

<div class="right_messages">
        {%for messages in create%}
        <form action="/create_messages" method="post">
            {{messages['firstName']}}
            <textarea name="message"></textarea>
            <input type="hidden" name="user_id" value={{messages['id']}}>
            <input type="submit" value="send">
        </form>
        {%endfor%}
    </div>

查看和删除消息端:

<div class="left_messages">
        <h3>{{count}} message(s) for you {{session['firstName']}}!</h3>
        <div class="messages">
        {%for messages in message%}
            <p>{{messages['firstName']}} said at {{messages['created_at']}} <br> {{messages['message']}}</p>
            <form method="post" action="/delete/{{message.id}}">
                <input type="hidden" value="{{message.id}}" name="id">
                <input type="submit" value="delete">
            </form>
        {%endfor%}
        </div>
    </div>

我尝试使用隐藏输入来传输消息 ID,但我无法实现它..

任何帮助将不胜感激。

标签: pythonhtmlmysqlflaskjinja2

解决方案


推荐阅读