[ปัญหา] คลิกปุ่มแล้วขึ้น Error ค่ะ

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Wallapa
PHP Super Member
PHP Super Member
โพสต์: 343
ลงทะเบียนเมื่อ: 30/10/2017 10:22 am

[ปัญหา] คลิกปุ่มแล้วขึ้น Error ค่ะ

โพสต์โดย Wallapa » 22/12/2017 11:13 am

ตอนนี้ได้ทำให้ sql ทั้งหมดอยู่ใน function ที่ชื่อว่า search จากตอนแรก sql ที่เป็นตัวดึง name จะอยู่ฟังก์ชั่น search และ sql อื่นๆอยูฟังก์ชั่นที่ชื่อว่า payslippdf บนโค้ดไม่มี Error ใดๆเลยค่ะ แต่พอคลิกปุ่ม Print ก็ขึ้น Error ตามด้านล่างเลยค่ะ
Error ที่ออกมา

โค้ด: เลือกทั้งหมด

Bad Request
The browser (or proxy) sent a request that this server could not understand.

โค้ด Pyrhon ที่ใช้ค่ะ

โค้ด: เลือกทั้งหมด

@app.route('/search',methods=['POST'])
def search():
        fname = request.form['name']
        global comp, money, id, row
        try:
            con = psycopg2.connect(host='localhost', database='testppp', user='postgres', password='')
            cur = con.cursor()
            cur.execute('SELECT version()')
            sql = "SELECT id, name, date_to FROM hr_payslip WHERE name='%s'" %fname
            sql = sql.encode('utf-8')
            try:
                cur.execute(sql)
                con.commit()
                row = cur.fetchall()
                for line1, line2, line3 in row:
                    id = line1[0]
                    name = line2[1]
                    date = line3[2]
                    print(id)
            except:
                con.rollback()

            sql1 = "SELECT name FROM res_company"
            try:
                cur.execute(sql1)
                con.commit()
                comp = cur.fetchone()
                print(comp)
            except:
                con.rollback()

            sql2 = "SELECT name,amount FROM hr_payslip_line WHERE slip_id ='%s'"%id
            try:
                cur.execute(sql2)
                con.commit()
                money = cur.fetchall()
                #print(money)

                c = canvas.Canvas("payslip.pdf")
                c.setFont("THSarabunNew", 18)
                date = time.localtime()
                a = time.strftime('%d/%m/%Y', date)

                f1 = Frame(inch, 6.25 * inch, 6.5 * inch, 4 * inch, showBoundary=1)  # ช่องใหญ่สุด

        #--------หัวตาราง-------------------------------------------------------------------------

                c.drawString(inch, 11 * inch, "ใบแจ้งเงินเดือน (Payslip)")
                c.drawString(inch, 10.75 * inch, "แผนก/Dep.")
                c.drawString(inch, 10.5 * inch, "ชื่อสกุล/Emp.")

                c.drawString(3.25 * inch, 11 * inch, comp[0])
                c.drawString(3.25 * inch, 10.75 * inch, "***")
                c.drawString(3.25 * inch, 10.5 * inch, "***")

                c.drawImage("md.jpg", 5.5 * inch, 11 * inch, width=1.75 * inch, height=0.5 * inch)
                c.drawString(5.5 * inch, 10.75 * inch, "ประจำงวด(PERIOD)1")
                c.drawString(5.5 * inch, 10.5 * inch, "วันที่จ่าย(DATE)")
                c.drawString(6.7 * inch, 10.5 * inch, a)

                c.drawString(1.25 * inch, 10 * inch, "รายได้(Income)")
                c.drawString(3.5 * inch, 10 * inch, "รายการหัก(Dediction)")

                c.drawString(5.6 * inch, 9.6 * inch, "รวมเงินได้")
                c.drawString(5.6 * inch, 9.3 * inch, "รวมเงินหัก")

                c.drawString(5.6 * inch, 6.64 * inch, "ลงชื่อ/Sing __________")
                c.drawString(5.6 * inch, 6.34 * inch, "วันที่/Date __________")

        # --------ตัวตาราง-------------------------------------------------------------------------
                for row2 in money:
                    print(row2[0])
                    print(row2[1])
                    c.drawString(1.1 * inch, 9.6 * inch, row2[0])
                    #c.drawString(2.75 * inch, 9.6 * inch, row[1])

                f1.addFromList(story, c)
                f2 = Frame(inch, 6.25 * inch, 4.5 * inch, 4 * inch, showBoundary=1)  # ช่องรวมเงิน
                f2.addFromList(story, c)
                f3 = Frame(inch, 6.25 * inch, 4.5 * inch, 3.65 * inch, showBoundary=0.5)  # ช่องรายการหัก
                f3.addFromList(story, c)
                f4 = Frame(inch, 6.25 * inch, 2.25 * inch, 4 * inch, showBoundary=0.5)  # ช่องรายได้
                f4.addFromList(story, c)
                f5 = Frame(inch, 6.25 * inch, 4.5 * inch, 0.6 * inch, showBoundary=0.5)  # ช่องล่างซ้าย
                f5.addFromList(story, c)
                f6 = Frame(inch, 6.25 * inch, 1.4 * inch, 0.6 * inch, showBoundary=1)  # ช่องล่างขวา
                f6.addFromList(story, c)
                f7 = Frame(inch, 6.25 * inch, 4.5 * inch, 0.3 * inch, showBoundary=0.5)  # ช่องล่างสุด
                f7.addFromList(story, c)

                c.showFullScreen0()
                c.showPage()
                c.save()

            except:
                con.rollback()
            return render_template("show.html", rows=row)
        except psycopg2.DatabaseError:
            print('Error %s' % psycopg2.DatabaseError)
if __name__ == '__main__':

โค้ด html ค่ะ

โค้ด: เลือกทั้งหมด

<meta charset="UTF-8">
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Employees Data</title>
</head>
   <body>
   <form action = "/search" method = "POST">
      <table border="1" 1cellspacing="1" width="80%" height="5" align="center">
         <thead>
            <td align="center">ID</td>
            <td align="center">Employee ID</td>
            <td align="center">Name</td>
            <td align="center">Date</td>
            <td align="center">Print</td>
         </thead>
         <tbody>
         {% for row in rows %}
            <h2 align="center">Employees Data</h2>
            <tr>
               <td align="center">{{ row[0] }}</td>
               <td>{{ row[11] }}</td>
               <td>{{ row[12] }}</td>
               <td>{{ row[9] }}</td>
               <td align="center"><input type="submit" value="print"  /></td>
            </tr>
         {% endfor %}
         </tbody>
      </table>
   </form>
   </body>
</html>

ภาพประจำตัวสมาชิก
Wallapa
PHP Super Member
PHP Super Member
โพสต์: 343
ลงทะเบียนเมื่อ: 30/10/2017 10:22 am

Re: [ปัญหา] คลิกปุ่มแล้วขึ้น Error ค่ะ

โพสต์โดย Wallapa » 22/12/2017 5:52 pm

สามารถแก้ไขได้แล้วค่ะ โดยการ กลับไปใช้วิธีแยกฟังก์ชั่นเหมือนเดิม แล้วใช้พารามิเตอร์ <postID> ช่วย

โค้ด: เลือกทั้งหมด

@app.route('/payslippdf/<postID>', methods=['POST'])
def payslippdf(postID):


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 18 และ บุคคลทั่วไป 0 ท่าน