所以我得到了这个代码,目前它正在重复所有内容,我只是想让它重复回声,所以我从中获取所有用户名,如果我离开它,它也将重复表单当我按用户名。每当我试图调整它时,它只是给了我语法错误
<?php do { ?>
<?php
$username = $row_mensagens['username'];
$user = $row_mensagens['id'];
if(isset($_GET['user']) && !empty($_GET['user'])){
?>
<form>
Introduz mensagem : <br>
<textarea name='message' rows='7' cols='60'></textarea>
<br><br>
<input type='submit' value="Send Message" />
</form>
<?php
} else {
echo "<p><a href='mensagens.php?user=$user'>$username</a></p>";
}
?>
<?php } while ($row_mensagens = mysql_fetch_assoc($mensagens)); ?>
答案 0 :(得分:0)
do { } while()
将始终重复与数据库中记录数量相同的数量。
你可以这样做:
<?php
if(isset($_GET['user']) && !empty($_GET['user'])){
?>
<form>
<input type="hidden" name="user" value="<?php echo $_GET['user']; ?>" /> <!-- hidden field so you can process to who -->
Introduz mensagem : <br>
<textarea name='message' rows='7' cols='60'></textarea>
<br>
<br>
<input type='submit' value="Send Message" />
</form>
<?php
} else {
do {
$username = $row_mensagens['username'];
$user = $row_mensagens['id'];
echo "<p><a href='mensagens.php?user=$user'>$username</a></p>";
} while ($row_mensagens = mysql_fetch_assoc($mensagens));
}
?>
在do {
内移动else
并仅在您有$_GET['user']
时显示表单
我还为你添加了一个隐藏字段,让你知道发送消息的人。
希望您了解这是如何运作的。 Documentation on Control Structures: do-while
我还建议将该表单设为post
表单,因为默认情况下它是get
表单,并且由于您有textarea
表单,因此您更有可能遇到错误消息太长了。
LE:另一个建议是,尝试转移到PDO或mysqli_* functions,因为从PHP 5.5
开始,mysql_* functions被视为已弃用,并且有很好的机会被移除。