一、sqlfor循環
sqlfor可以在HTML中嵌套SQL語句,在循環中列印SQL語句中的每個結果。可以使用此標記來為每個結果列印表格或列表等HTML元素。
sqlfor中使用的SELECT語句可以包含WHERE、ORDER BY和LIMIT子句來篩選和排序要循環的數據。
<% sqlfor(row in "SELECT * FROM users WHERE age >= 18 ORDER BY name LIMIT 10" ) %> <tr> <td><%= row.id %></td> <td><%= row.name %></td> <td><%= row.age %></td> </tr> <% endfor %>
在上面的代碼片段中,我們以HTML表格的形式展示”users”表中age>=18的前10行。每行都有一個id、name和age欄位。
二、sqlform
sqlform指令用於生成用於創建或更新資料庫表中的數據的HTML表單。
如果在sqlform標記中包含一個record參數,則會自動生成一個表單,以在傳遞的數據中顯示record參數中指定的行數據。否則,生成的表單將顯示空數據。
「fields」參數用於指定表單中顯示的輸入欄位。可以使用「widget」參數指定每個欄位的表單部件類型。如果widget為空,則將使用表單欄位的默認窗口小部件。
<% sqlform(db.mytable, record=myrecord, fields=['name', 'email', 'password'], widgets={'password': lambda f: SQLFORM.widgets.password.widget(f, _class='form-control')}) %>
上面的代碼段顯示來自”db.mytable”表的數據的HTML表單。記錄數據在myrecord中傳遞。表單輸入包括「name」、「email」和「password」欄位。自定義密碼組件的CSS類名是「form-control」。
三、sqlfor循環用法
在 SQLFOR 循環中,我們可以使用 IF 語句對輸出進行更改。我們也可以使用 break 和 continue 來退出或跳過循環。
<% sqlfor(row in "SELECT * FROM users WHERE age >= 18 ORDER BY name LIMIT 10" ) %> <% if row.name == "John": %> <% continue %> <% endif %> <tr> <td><%= row.id %></td> <td><%= row.name %></td> <td><%= row.age %></td> </tr> <% endfor %>
上面的代碼片段只輸出name不是”John”的數據。
四、sqlforeach用法
sqlforeach允許在HTML中嵌套SQL語句,然後循環列印結果中的每個值。此標記與sqlfor非常相似,但sqlforeach遍歷結果集中的單個欄位,而sqlfor遍歷整個結果集中的所有列。
<% sqlforeach(row.age in "SELECT age FROM users WHERE age >= 18 ORDER BY name LIMIT 10" ) %> <p><%= row.age %></p> <% endfor %>
在這個例子中,我們列印「users」表中最多前10個年齡大於或等於18的用戶的age欄位。
五、sqlfor循環改變增幅
sqlfor支持自定義循環增量。默認情況下,它會從1開始每次遞增1。但是,我們可以通過指定inc參數來更改循環增量。
在下面的代碼片段中,我們每次遞增2,循環輸出1到10的所有偶數。
<% sqlfor(i in "SELECT * FROM dummy" , inc=2 ) %> <% if i % 2 == 0: %> <p><%= i %></p> <% endif %> <% endfor %>
六、sqlforeach標籤
sqlforeach指令也用於生成HTML中嵌套的SQL語句。它允許循環列印結果中的每個值。
<% sqlforeach(row in "SELECT * FROM users WHERE age >= 18 ORDER BY age LIMIT 10" ) %> <p><%= row.name %> - <%= row.age %></p> <% endfor %>
在這個例子中,我們列印「users」表中最多前10個年齡大於或等於18歲的用戶的所有欄位。
七、sqlforeign key選取
通常,如果我們知道只需要某個表中某些值,而無需使用整個數據集時,我們可以使用SQL中的FOREIGN KEY。
SELECT products.product_name, orders.quantity FROM products INNER JOIN orders ON products.id = orders.product_id
在上面的代碼片段中,我們從兩個表中選擇產品名稱和訂單數量。我們使用product_id作為連接點來關聯products和orders表。
總結
在本文中,我們深入了解了sqlfor的詳細用法,並涵蓋了sqlform、sqlforeach、sqlforeach標記、sqlfor循環改變增幅和sqlforeign key選取的示例。當然,還有許多其他的用法和技巧,但這應該為您提供一個很好的起點,以便您開始使用sqlfor。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/304247.html