--
-- Table structure for table `employee`
--
CREATE TABLE `employee` (
`id` int(11) NOT NULL,
`name` varchar(100) NOT NULL,
`position` varchar(100) NOT NULL,
`office` varchar(100) NOT NULL,
`age` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`photo` varchar(150) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `employee`
--
INSERT INTO `employee` (`id`, `name`, `position`, `office`, `age`, `salary`, `photo`) VALUES
(1, 'Tiger Wood', 'Accountant', 'Tokyo', 36, 5689, '01.jpg'),
(2, 'Mark Oto Ednalan', 'Chief Executive Officer (CEO)', 'London', 56, 5648, '02.jpg'),
(3, 'Jacob thompson', 'Junior Technical Author', 'San Francisco', 23, 5689, '03.jpg'),
(4, 'cylde Ednalan', 'Software Engineer', 'Olongapo', 23, 54654, '04.jpg'),
(5, 'Angelica Ramos', 'Software Engineer', 'San Francisco', 26, 5465, '05.jpg'),
(6, 'Airi Satou', 'Integration Specialist', 'New York', 53, 56465, '06.jpg'),
(8, 'Tiger Nixon', 'Software Engineer', 'London', 45, 456, '07.jpg'),
(9, 'Airi Satou', 'Pre-Sales Support', 'New York', 25, 4568, '08.jpg'),
(10, 'Angelica Ramos', 'Sales Assistant', 'New York', 45, 456, '09.jpg'),
(11, 'Ashton updated', 'Senior Javascript Developer', 'Olongapo', 45, 54565, '01.jpg'),
(12, 'Bradley Greer', 'Regional Director', 'San Francisco', 27, 5485, '02.jpg'),
(13, 'Brenden Wagner', 'Javascript Developer', 'San Francisco', 38, 65468, '03.jpg'),
(14, 'Brielle Williamson', 'Personnel Lead', 'Olongapo', 56, 354685, '04.jpg'),
(15, 'Bruno Nash', 'Customer Support', 'New York', 36, 65465, '05.jpg'),
(16, 'cairocoders', 'Sales Assistant', 'Sydney', 45, 56465, '06.jpg'),
(17, 'Zorita Serrano', 'Support Engineer', 'San Francisco', 38, 6548, '07.jpg'),
(18, 'Zenaida Frank', 'Chief Operating Officer (COO)', 'San Francisco', 39, 545, '08.jpg');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `employee`
--
ALTER TABLE `employee`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `employee`
--
ALTER TABLE `employee`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19;
//app.py from flask import Flask, render_template, request, jsonify from flask_mysqldb import MySQL,MySQLdb #pip install flask-mysqldb https://github.com/alexferl/flask-mysqldb app = Flask(__name__) app.secret_key = "caircocoders-ednalan" app.config['MYSQL_HOST'] = 'localhost' app.config['MYSQL_USER'] = 'root' app.config['MYSQL_PASSWORD'] = '' app.config['MYSQL_DB'] = 'testingdb' app.config['MYSQL_CURSORCLASS'] = 'DictCursor' mysql = MySQL(app) @app.route('/') def index(): cur = mysql.connection.cursor(MySQLdb.cursors.DictCursor) cur.execute("SELECT * FROM employee ORDER BY id ASC") employee = cur.fetchall() return render_template('index.html', employee = employee) @app.route("/ajaxfile",methods=["POST","GET"]) def ajaxfile(): cur = mysql.connection.cursor(MySQLdb.cursors.DictCursor) if request.method == 'POST': userid = request.form['userid'] print(userid) cur.execute("SELECT * FROM employee WHERE id = %s", [userid]) employeelist = cur.fetchall() return jsonify({'htmlresponse': render_template('response.html',employeelist=employeelist)}) if __name__ == "__main__": app.run(debug=True)templates/index.html
//templates/index.html <!DOCTYPE html> <html> <head> <title>Python Flask Load content Dynamically in Bootstrap Modal with Jquery AJAX and Mysqldb</title> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> </head> <body > <div class="container"> <br /> <h3 align="center">Python Flask Load content Dynamically in Bootstrap Modal with Jquery AJAX and Mysqldb</h3> <div class="row"> <div class="col-md-12"> <div class="panel-body"> <div class="table-responsive"> <table class="table table-bordered"> <thead> <tr> <th width="60">Photo</th> <th>Name</th> <th>Position</th> <th>Office</th> <th>Age</th> <th>Salary</th> <th>View</th> </tr> </thead> {% for row in employee %} <tr> <td><img src="/static/images/{{row.photo}}" height="50" width="50"/></td> <td>{{row.oname}}</td> <td>{{row.position}}</td> <td>{{row.office}}</td> <td>{{row.age}}</td> <td>{{row.salary}}</td> <td><button data-id='{{row.id}}' class="userinfo btn btn-success">Info</button></td> </tr> {% endfor %} </table> </div> </div> </div> </div> </div> <script type='text/javascript'> $(document).ready(function(){ $('.userinfo').click(function(){ var userid = $(this).data('id'); $.ajax({ url: '/ajaxfile', type: 'post', data: {userid: userid}, success: function(data){ $('.modal-body').html(data); $('.modal-body').append(data.htmlresponse); $('#empModal').modal('show'); } }); }); }); </script> </div> <div class="modal fade" id="empModal" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">User Info</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <div class="modal-body"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div> </div> </div> </div> </body> </html>templates/response.html
//templates/response.html {% for row in employeelist %} <table border='0' width='100%'> <tr> <td width="300"><img src="/static/images/{{row.photo}}"> <td style="padding:20px;"> <p>Name : {{row.name}}</p> <p>Position : {{row.position}}</p> <p>Office : {{row.office}}</p> <p>Age : {{row.age}}</p> <p>Salary : {{row.salary}}</p> </td> </tr> </table> {% endfor %}