gpt4 book ai didi

php - 在表单中显示 "empty"mysql 字段

转载 作者:行者123 更新时间:2023-11-29 20:52:07 25 4
gpt4 key购买 nike

只要相应的 mysql 表中没有可用数据,我就会显示一个表单,如下所示:

if(mysql_num_rows($records)==0)) {...}

一旦相应表中的数据可用,我就会显示一个单独的表,该表基本上包含与“空”表相同的信息,但包含从 mysql 表中获取的值:

while($result = mysql_fetch_assoc($records)) {...}

问题1:如何将这两个表合并为一个表,以便如果没有可用数据,则字段值为空,如果将数据添加到 mysql 数据库,则该值将显示在各自的领域?

问题2:由于表单中将添加更多行(团队),因此对于如何简化代码有什么建议吗?

代码:

<?php
$sql = "SELECT * FROM results WHERE user = '"
.$_SESSION['username']."'";
$records = mysql_query($sql);
if(mysql_num_rows($records)==0) {
?>
<form action="xxxxx.php" method="post">
<table>
<tr>
<th width="30%">Home</th>
<th width="40%"></th>
<th width="30%">Away</th>
</tr>
<tr>
<td><label>Team 1</label></td>
<td>
<input type="tel" size="1" maxlength="2"
name="team1game1">
:
<input type="tel" size="1" maxlength="2"
name="team2game1">
</td>
<td><label>Team 2</label></td>
</tr>
<tr>
<td><label>Team 3</label></td>
<td>
<input type="tel" size="1" maxlength="2"
name="team3game1">
:
<input type="tel" size="1" maxlength="2"
name="team4game1">
</td>
<td><label>Team 4</label></td>
</tr>
</table>
<table>
<tr><td><input type="submit" value="Save"></td></tr>
</table>
</form>
<?php
}
else {
while($result = mysql_fetch_assoc($records)) {
?>
<form action="xxxxx.php" method="post">
<table>
<tr>
<th width="30%">Home</th>
<th width="40%"></th>
<th width="30%">Away</th>
</tr>
<tr>
<td><label>Team 1</label></td>
<td>
<input type="tel" size="1" maxlength="2"
name="team1game1"
value="<?php echo $result['team1game1'] ?>">
:
<input type="tel" size="1" maxlength="2"
name="team2game1"
value="<?php echo $result['team2game1'] ?>">
</td>
<td><label>Team 2</label></td>
</tr>
<tr>
<td><label>Team 3</label></td>
<td>
<input type="tel" size="1" maxlength="2"
name="team3game1"
value="<?php echo $result['team3game1'] ?>">
:
<input type="tel" size="1" maxlength="2"
name="team4game1"
value="<?php echo $result['team4game1'] ?>">
</td>
<td><label>Team 4</label></td>
</tr>
</table>
<table>
<tr><td><input type="submit" value="Save"></td></tr>
</table>
</form>
<?php
}
}
?>

最佳答案

我不太清楚你的要求是什么。也许您可以提供一个示例来说明它应该是什么样子/看起来是什么样子,以便更好地理解。

但是,这里至少是代码的稍微优化版本:

<?php
// Always escape values received from the user before using them
// in SQL queries
$user = mysql_real_escape_string($_SESSION['username']);

$template = '
<form action="xxxxx.php" method="post">
<table>
<tr>
<th width="30%">Home</th>
<th width="40%"></th>
<th width="30%">Away</th>
</tr>
<tr>
<td><label>Team 1</label></td>
<td><input type="tel" size="1" maxlength="2" name="team1game1" value="%team1game1%"> : <input type="tel" size="1" maxlength="2" name="team2game1" value="%team2game1%"></td>
<td><label>Team 2</label></td>
</tr>
<tr>
<td><label>Team 3</label></td>
<td><input type="tel" size="1" maxlength="2" name="team3game1" value="%team3game1%"> : <input type="tel" size="1" maxlength="2" name="team4game1" value="%team4game1%"></td>
<td><label>Team 4</label></td>
</tr>
</table>
<table>
<tr><td><input type="submit" value="Save"></td></tr>
</table>
</form>';

$sql = "SELECT * FROM results WHERE user = '".$user."'";
$records = mysql_query($sql);

$html = '';
if (mysql_num_rows($records)) {
while ($row = mysql_fetch_assoc($records)) {
$html .= $template;
$html = str_replace('%team1game1%', $row['team1game1'], $html);
$html = str_replace('%team2game1%', $row['team2game1'], $html);
$html = str_replace('%team3game1%', $row['team3game1'], $html);
$html = str_replace('%team4game1%', $row['team4game1'], $html);
}
} else {
$html .= $template;
$html = str_replace('%team1game1%', '', $html);
$html = str_replace('%team2game1%', '', $html);
$html = str_replace('%team3game1%', '', $html);
$html = str_replace('%team4game1%', '', $html);
}

// Print built HTML
echo $html;
?>

它的作用:

  • 将表单模板存储在 $template 中,并使用变量 (%var%) 作为占位符
  • 每次运行时用 str_replace() 替换所有变量 (%var%)

一些提示:

  • 使用 PDO 或至少使用 MySQLi。 mysql_*() 函数长期以来已被弃用,并在当前的 PHP 版本中被删除。依赖它们会导致兼容性和安全问题。
  • 不使用 ORM 时,请务必转义从用户收到的值,然后再将其放入 SQL 查询中。否则,您将很容易受到 SQL 注入(inject)的攻击。<​​/li>

关于php - 在表单中显示 "empty"mysql 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37953805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com