2016-06-21 21 views
0

“空” MySQL的领域我有显示,只要没有在相应的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 
    } 
} 
?> 
+0

我注意到,即使没有数据,你也会显示出1-4队输入的2行。你还提到你会有很多行。问题1:如果你有100个团队但没有数据,你会显示50行空输入吗?问题2:当你有数据时,为每个记录创建一个新表。所以50个记录就意味着50个表格。这是故意的吗? – BeetleJuice

+0

它看起来像数据库中的表中每个团队有1列。它可以改变为你连续存储团队的数据吗? – DBA

+0

@帕特里克我想我必须要更精确一点。我目前正在开发一款博彩游戏。上面张贴的表格属于用户可以输入他们对每个比赛/比赛的猜测的页面。现在我不想有两个不同的页面 - 一个是用户还没有输入任何猜测/投注(仅插入),一个用于显示他们进入他们的猜测/投注(更新)。现在有点更清楚了吗? – mario

回答

0

这不是很清楚,我你问什么。也许你可以提供一个应该是/应该更好理解的例子。

然而,这里的至少一个稍微优化代码的版本:

<?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; 
?> 

作用:

  • 存储在变量$模板的表单模板(%VAR%)的占位符
  • 在每次运行时替换str_replace函数(所有变量(VAR%%))

小号ome tips:

  • 使用PDO或至少MySQLi。 mysql _ *()函数自年龄以来已被弃用,并在当前的PHP版本中被删除。依赖它们会导致兼容性和安全问题。
  • 不使用ORM时,总是会将您在从用户接收到的数据放入SQL查询之前转义您的值。否则,您将很容易受到SQL注入的影响。