2012-04-19 89 views
0

我已经在脚本中获得了这段代码,它只显示第一行。 任何解决方案? (这不是我的整个脚本)显示数据库中的所有行

$sql = mysql_query ('select * from todo'); 
if (!$sql) { 
    die('Invalid query: ' . mysql_error()); 
} 
$taskrow = mysql_query ('select * from todo'); 
     if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    $taak = $_POST['taak']; 
    $beschrijving = $_POST['beschrijving']; 
    $categorie = $_POST['categorie']; 
    $prioriteit = $_POST['prioriteit']; 
    $datum = $_POST['datum']; 
    $query = mysql_query("INSERT INTO todo (taak, beschrijving, categorie, prioriteit, datum) VALUES ('$taak', '$beschrijving', '$categorie', '$prioriteit', '$datum')") or die(mysql_error()); 
} ?> 

<?php $task = mysql_fetch_assoc($taskrow); ?> 

<td><?php echo $task['taak']; ?></td> 
<td><?php echo $task['beschrijving']; ?></td> 
<td><?php echo $task['categorie']; ?></td> 
<td><?php echo $task['prioriteit']; ?></td> 
<td><?php echo $task['datum']; ?> </td>  
+0

再去读一本书,或者去通过一些教程。对于一次发生的事情,你需要一个循环。没有一个中间人可以神奇地知道你想要做什么。 – TJHeuvel 2012-04-19 09:21:47

+0

这是非常令人困惑的代码 - 您运行两次相同的SQL查询;你第一次没有做任何事情。那是故意的吗?其次,以这种方式将你的“检索任务和在网页上显示”代码与“处理这个事实可能是一个帖子”的任务交织在一起使得代码很难阅读,并且很难维护...... – 2012-04-19 09:23:11

回答

6

这样做:

$task = mysql_fetch_assoc($taskrow);

您正在将$task转换为一个对象,其中包含来自您的数据库查询中选定行的数据。

所以,你需要遍历该对象,以便与各行的数据打...

所以尝试:

while ($task = mysql_fetch_assoc($taskrow)){?> 

<td><?php echo $task['taak'];?></td> 
<td><?php echo $task['beschrijving']; ?> </td> 
<td><?php echo $task['categorie']; ?></td> 
<td><?php echo $task['prioriteit']; ?></td> 
<td><?php echo $task['datum']; ?> </td> 
<? } ?> 
+1

并且最好使用<?php while(...):?> ... <?php endwhile; ?>结合php + html时:-) – 2012-04-19 09:25:30

+0

谢谢!现在工作=) – 2012-04-19 09:28:16

+0

@PietervanAlthuis如果它适合你,请将此答案标为正确;) – 2012-04-19 09:29:52

0
<?php foreach($task as $key => $value) : ?> 
<td><?php echo $value;?></td> 
<?php endforeach; ?> 
相关问题