英文:
GoLang html template if condition
问题
我在Go中制作了一个网络应用程序,它在mysql数据库中搜索查询。一切都正常工作,但是我不知道如何实现以下功能:如果数据库中没有结果,则打印例如"没有产品"。目前,如果没有数据,代码不会打印任何内容。
我的index.html文件:
<!DOCTYPE html>
<html>
<body>
<h2>选择查询</h2>
<form action="/database" method="POST">
<label for="product">产品名称:</label><br>
<input type="text" id="productID" name="productName" <br>
<input type="submit" value="搜索">
</form>
{{if .}}
<ul>
{{range .}}
<li>Name: {{.Name}}</li>
<li>Price: ${{.Price}}</li>
<br>
{{end}}
{{end}}
</body>
</html>
我尝试添加{{else}}条件,但在这种情况下,"没有产品"会在查询搜索之前或页面加载时就被打印出来。
{{if .}}
<ul>
{{range .}}
<li>Name: {{.Name}}</li>
<li>Price: ${{.Price}}</li>
<br>
{{end}}
{{else}}
<li>没有产品</li>
{{end}}
你能帮我吗?谢谢。
英文:
I made a web app in Go which search for a query in a mysql database. Everything works fine, but I do not know how to obtain following: if there is no result in database print e.g. "there is no product". Currently code does not print anything in case if there is no data.
My index.html file:
<!DOCTYPE html>
<html>
<body>
<h2>Select Query</h2>
<form action="/database" method="POST">
<label for="product">Product Name:</label><br>
<input type="text" id="productID" name="productName" <br>
<input type="submit" value="Search">
</form>
{{if .}}
<ul>
{{range .}}
<li>Name: {{.Name}}</li>
<li>Price: ${{.Price}}</li>
<br>
{{end}}
{{end}}
</body>
</html>
I tried to add {{else}} condition, but in this case "there is no product" is printed even before query search or when page is loaded.
{{if .}}
<ul>
{{range .}}
<li>Name: {{.Name}}</li>
<li>Price: ${{.Price}}</li>
<br>
{{end}}
{{else}}
<li>there is no product</li>
{{end}}
Can you help me please?
TIA
答案1
得分: 2
你可以使用range和else结合使用。
看看这个例子(你可以根据自己的代码进行简单调整):
{{range $item := .SearchData }}
这里是 {{$item}}
{{ else }}
抱歉,没有找到匹配的结果
{{ end }}
链接:https://go.dev/play/p/7xJ1LXL2u09
或者在你的情况下:
<ul>
{{range .}}
<li>名称:{{.Name}}</li>
<li>价格:${{.Price}}</li>
<br>
{{else}}
<li>没有产品</li>
{{end}}
</ul>
英文:
You can use range with else
Check on this example (you can easily adapt to your code)
{{range $item := .SearchData }}
Here we are {{ $item }}
{{ else }}
Sorry. No matching results found
{{ end }}
https://go.dev/play/p/7xJ1LXL2u09
Or in your case
<ul>
{{range .}}
<li>Name: {{.Name}}</li>
<li>Price: ${{.Price}}</li>
<br>
{{else}}
<li>there is no product</li>
{{end}}
</ul>
答案2
得分: 0
当从数据库中进行扫描时,你可以使用sql.NullString来保存你的值,然后在模板中可以检查数据是否有效,如果有效,则访问其值。
type Response struct {
Name sql.NullString
Price sql.NullInt64
}
HTML
<h2>Select Query</h2>
{{if .Name.Valid}}
<ul>
{{range .}}
<li>Name: {{.Name.String}}</li>
<li>Price: ${{.Price.String}}</li>
<br>
{{end}}
{{else}}
<li>there is no product</li>
{{end}}
请注意,这只是一个示例代码和模板,用于展示如何在模板中检查数据的有效性并访问其值。具体的数据库查询和数据处理逻辑需要根据你的实际情况进行调整。
英文:
When scanning from the database, you can use sql.NullString to save your values,
and then in your template you can check if the data is valid, and if it is, access its value.
type Response struct {
Name sql.NullString
Price sql.NullInt64
}
HTML
<h2>Select Query</h2>
{{if .Name.Valid}}
<ul>
{{range .}}
<li>Name: {{.Name.String}}</li>
<li>Price: ${{.Price.String}}</li>
<br>
{{end}}
{{else}}
<li>there is no product</li>
{{end}}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论