我只使用此代码获得一个结果

时间:2012-04-28 04:33:30

标签: php mysql row

<a href="add.php">add new product</a><br>
<br>

<?php

include("mysql.php");

$result = mysql_query("SELECT * FROM gallery ");

$just = mysql_fetch_array($result);
$num=mysql_num_rows($result);  

$table="";
$table.="<td>delete</td>";

$table.="<td>update</td>";
if ($num > 0 ) {
$i=0;

while($just = mysql_fetch_array($result))   
{
$num=mysql_num_rows($result);  
  {

$table .= "<tr>";

$table .= "<td><a href=\"delete.php?name=".$just['name']."&id=".$just['id']."\">".$just['title']."</a></td>";
$table .= "<td><a href=\"update.php?description=".$just['description']."&title=".$just['title']."&id=".$just['id']."\">".$just['title']."</a></td>";

  }
$table .= "</tr>";
while ($i < $num) {

$name = stripslashes(mysql_result($result,$i,"name"));
$title = stripslashes(mysql_result($result,$i,"title"));
$description = stripslashes(mysql_result($result,$i,"description"));

++$i; }
}
}


else { $table = '<tr><td colspan="2" align="center">Nothing found</td></tr>'; }

?>

<table border="1" cellpadding="1" cellspacing="2"><? echo $table ?></table>
早上好,在上面的代码iam尝试创建一个2列的表删除和更新,能够通过这个页面管理mysql,但我从mysql表只得到1行,虽然我期待4(保存4行)在mysql表中) 这里有什么不对,提前谢谢

3 个答案:

答案 0 :(得分:1)

<a href="add.php">add new product</a><br>
<br>

<?php

include("mysql.php");

$result = mysql_query("SELECT * FROM `gallery`");

$num = mysql_num_rows($result);  

$table = "";
$table .= "<td>delete</td>";
$table.="<td>update</td>";

if ($num > 0 ) {
    $i=0;
    while($just = mysql_fetch_assoc($result)) {
        $num=mysql_num_rows($result);  
        $table .= "<tr>";
        $table .= "<td><a href=\"delete.php?name=".$just['name']."&id=".$just['id']."\">".$just['title']."</a></td>";
        $table .= "<td><a href=\"update.php?description=".$just['description']."&title=".$just['title']."&id=".$just['id']."\">".$just['title']."</a></td>";
    }
    $table .= "</tr>";
    while ($i < $num) {
        $name = stripslashes(mysql_result($result,$i,"name"));
        $title = stripslashes(mysql_result($result,$i,"title"));
        $description = stripslashes(mysql_result($result,$i,"description"));
        ++$i; 
    }
} else { 
    $table = '<tr><td colspan="2" align="center">Nothing found</td></tr>'; 
}
?>

<table border="1" cellpadding="1" cellspacing="2"><? echo $table ?></table>

答案 1 :(得分:1)

你获取结果并计算错误位置的行,并且你有一个sub while循环,基本上什么都不做。

在此尝试:

<?php
include("mysql.php");

$result = mysql_query("SELECT `id`,`name`,`title`,`description` FROM gallery");

$table=null;
if (mysql_num_rows($result) > 0 ) {
    while($just = mysql_fetch_assoc($result)){
        $table .= "<tr>".PHP_EOL;
        $table .= "<td><a href=\"delete.php?name=".$just['name']."&id=".$just['id']."\">".$just['title']."</a></td>".PHP_EOL;
        $table .= "<td><a href=\"update.php?description=".$just['description']."&title=".$just['title']."&id=".$just['id']."\">".$just['title']."</a></td>".PHP_EOL;
        $table .= "</tr>".PHP_EOL;
    }
}else{
    $table = '<tr><td colspan="2" align="center">Nothing found</td></tr>';
}
?>

<table border="1" cellpadding="1" cellspacing="2"><? echo $table; ?></table>

答案 2 :(得分:1)

方法很好,但确实需要更好的实施。

首先,给自己一个函数并将它放在mysql.php中以供频繁使用。

function sqlArr($sql){
  $ret = array();
  $res = mysql_query($sql) or trigger_error(mysql_error()." ".$sql);
  if ($res) {
    while($row = mysql_fetch_array($res)){
      $ret[] = $row;
    }
  }
  return $ret;
}

然后编写代码来获取数据

<?php
include("mysql.php");
$data = sqlArr("SELECT * FROM tbl_names");
foreach ($data as $k => $value) $data[$k] = htmlspecialchars($value);
include 'template.php';

然后编写一个模板,使您的方法完成HTML模板:

<table border="1" cellpadding="1" cellspacing="2">
<? if (!$data)): ?>
  <tr>
    <td colspan="2" align="center">Nothing found</td>
  </tr>
<? else: ?>
<?     foreach($data as $just): ?>
  <tr>
    <td><a href="update.php??id="<?=$just['id']?>"><?=$just['title']?></a></td>
  </tr>
<?     endforeach ?>
<? endif ?>
</table>

看:你的代码变短了2倍,但更具可读性!

请注意,不应将整个数据传递给编辑脚本。只有id就足够了!在更新脚本中从数据库中获取要编辑的数据。

另请注意,您不应使用GET方法删除记录 - 仅发布。所以,我建议你在表格中但不在更新表格中有一个“删除”按钮。