ក្រោយពីទិន្នន័យទទួលបានមកពី form ត្រូវបានត្រួតពិនិត្យចំនួន ២ ដងរួចមក យើងអាចបញ្ចូលទិន្នន័យទាំងនោះចូលទៅក្នុងមូលដ្ឋានទិន្នន័យ SQLite របស់យើងបាន ដោយសរសេរកូដដូចខាងក្រោមនេះ៖
#\models\insertBicycle.py import sqlite3 def insert(*bicycle): conn = sqlite3.connect('sqlite') cursor = conn.cursor() sql ='''CREATE TABLE IF NOT EXISTS BICYCLE( BRAND TEXT, COUNTRY TEXT, YEAR INT, AMOUNT INT, PRICE FLOAT ) ''' cursor.execute(sql) cursor.execute("INSERT INTO BICYCLE VALUES (?, ?, ?, ?, ?)", bicycle) conn.commit() conn.close()
#\controllers\bikeform.py import config, re from bottle import template, route, request from models import insertBicycle @route("/bikeform") def renderForm(): return template('bikeform', data=config.kargs) @route("/bikeform", method="POST") def getFormData(): brand = request.forms.get("fbrand") country = request.forms.get("fcountry") year = request.forms.get("fyear") amount = request.forms.get("famount") price = request.forms.get("fprice") if not re.findall("[a-zA-Z]", country): config.kargs['message'] = "Country name could contain only letter." return template('bikeform', data=config.kargs) elif not (re.findall("[0-9]", year) and re.findall("[0-9]", amount)): config.kargs['message'] = "Year and amount must be whole number." return template('bikeform', data=config.kargs) elif not (re.findall(r"[-+]?\d*\.\d+|\d+", price)): config.kargs['message'] = "Price must be a number." return template('bikeform', data=config.kargs) else: insertBicycle.insert(brand, country, int(year), int(amount), float(price)) return template('bikeform', data=config.kargs)
ចំពោះការស្រង់យកទិន្នន័យដែលត្រូវបានបញ្ចូលទៅក្នុងមូលដ្ឋានទិន្នន័យ SQLite មកសរសេរបង្ហាញនៅលើទំព័រមុខ យើងអាចសរសេរកូដដូចខាងក្រោមនេះ៖
#\models\selectBicycle.py import sqlite3 def select(): conn = sqlite3.connect('sqlite') cursor = conn.cursor() sql ='''CREATE TABLE IF NOT EXISTS BICYCLE( BRAND TEXT, COUNTRY TEXT, YEAR INT, AMOUNT INT, PRICE FLOAT ) ''' cursor.execute(sql) cursor.execute("SELECT * from BICYCLE") bicycles = cursor.fetchall() conn.commit() conn.close() return bicycles
#\app.py import os, json, config from bottle import route, run from controllers import index, bikeform from public import setup from models import selectBicycle @route('/') def main(): config.kargs['bicycles'] = json.dumps(selectBicycle.select()) return index.render(config.kargs) if 'DYNO' in os.environ: run(host='0.0.0.0', port=os.environ.get('PORT', 9000)) else: run(host='localhost', port=9000, debug=True, reloader=True)
%include("./partials/header.tpl")%include("./partials/footer")%include("./partials/sidebar.tpl")
//\public\js\main.js class Bicycle{ bicycleForm(formId){ var brand = document.forms[formId]['fbrand'].value; var country = document.forms[formId]['fcountry'].value; var year = document.forms[formId]['fyear'].value; var amount = document.forms[formId]['famount'].value; var price = document.forms[formId]['fprice'].value; if((brand == "") || (country == "") || (year == "") || (amount == "") || (price == "")){ return false; }else{ var numberRGEX = /^(?:[1-9]\d*|0)?(?:\.\d+)?$/; var intRGEX = /^[0-9]+$/; var numberResult = numberRGEX.test(price); var intResult = (intRGEX.test(year) && intRGEX.test(amount)); if(!numberResult){ alert('Please enter a number for price.'); return false; } if(!intResult){ alert('Please enter a whole number for year and amount.'); return false; } } } showBicycle(bicycles){ var html = ''; if(bicycles.length > 0){ html += "<table>"; html += "<tr>"; for(var k in {id:0, brand:0, country:0, year:0, amount:0, price:0}){ html += "<th>" + k.toUpperCase() + "</th>"; } html += "<th>OPTION</th>"; html += "</tr>"; for(var i=0; i<bicycles.length; i++){ html += "<tr>"; html += "<td>" + (i+1) + "</td>"; for(var j in bicycles[i]){ html += "<td>" + bicycles[i][j] + "</td>"; } html += `<td class="option"><a onclick="alert(${i+1},'bikeform')" class="edit" id="'+i+'">Edit</a>|<a onclick="alert(${i+1})" class="delete" >Delete</a></td>`; html += "</tr>"; } html += "</table>"; } document.getElementById("table").innerHTML = html; } }//end of class var bicycle = new Bicycle();
GitHub: https://github.com/Sokhavuth/Rental-Bicycle-App
Heroku: https://khmerweb-rba.herokuapp.com/