2

我希望标题解释得很好,但我遇到了麻烦,a)找到任何关于我想要做的事情的参考,b)弄清楚我脑海中的逻辑,所以所有的输入,即使只是简单地指向我的方向正确的语法,将是一个很大的帮助。

我的目标是——我拥有的每个用户都可以上传 10 张照片。我想在预设模板中显示每个用户的照片,所有用户“模板”都显示在一个页面上的列表中,即模板中有用户的十张照片,然后在下面有用户两个,依此类推名单。

我已经设计了模板,我可以根据当前登录的用户 ID 填充它,但是我很难让它出现在每个用户身上,这样每个用户都可以看到彼此的照片。

我努力了:

$everyid = array($user_id) foreach ($user_id as $value) {include 'template.php';}

但这不起作用,所以它似乎是非常错误的。简而言之,我想我想获取数据库中的每个 user_id,检查他们是否上传了照片(应用其他参数,但我不会在这里讨论,因为我应该能够自己排序),然后输出他们如果相关,则将模板区域放在某个页面上。

请记住,我已将所有照片路径输入到相关用户列中的 mysql 表中,因此可能有一种更简单的方法来自动生成我忽略的内容,因此欢迎提出有关如何执行此操作的任何建议。

谢谢。

编辑:如有必要,可以提供模板代码等,但它们很啰嗦,会大大扩展页面。

编辑编辑:根据要求,这是我的能力设置方式(简化形式):

user_id     username    image1               image2..... and so on.
    1           her    eduejdksk.jpg      werfwer9342.jpg
    2           him    234234234.jpg          null 

这是我的示例代码:

$user_id = $_SESSION['user_id'];
$queryone = mysql_query("SELECT `image1` FROM `users` WHERE `user_id` = $user_id");
$resone = mysql_fetch_array($queryone);
$valueone = $resone['image1'];

<div id="imageone">
<?php
  if($valueone != '') {
  echo '<img src="uploads/', $user_id, '/thumbsbig/', $valueone, '">';
  } else { ;}

  ?>
</div>

这使我能够成功地假设“她”已登录,将“她”的 image1 (eduejdksk.jpg) 召回到基于已登录用户的模板中。它不允许我做的是在一个模板中显示所述文件,然后在下面的另一个模板中显示 234234234.jpg。

如您所见,它使用会话用户 ID 从数据库中挑选照片。我想要发生的是 $user_id 等于 1 然后 2 然后 3 等等......对于完整的用户数据库。我假设它是某种 while 或 foreach 循环,但如上所述,我的努力到目前为止还没有结果。

谢谢。

4

1 回答 1

1

您似乎为用户表中的图像创建了 10 个字段。这不是很容易管理。您最好为图像创建一个单独的表格。

id  |   user_id   |   path_to_image
----+-------------+--------------------------------
1   |   1         |   some/image.jpg
2   |   1         |   some/other/image.jpg
3   |   1         |   some/other/image2.jpg
4   |   2         |   some/other/users/image.jpg
.... etc ....

如您所见,任何用户现在都可以拥有零到无限数量的图像。如果您确实希望将图像数量限制为 10,请SELECT COUNT(*) FROM images WHERE user_id=$user_id在上传前添加检查是否小于 10。

查询此表以获取所有用户的图像现在很容易:

SELECT * FROM images

如果您希望从特定用户获取所有图像:

SELECT * FROM images WHERE user_id=$user_id

对于内部数据库关系,我建议您阅读有关 InnoDB 的foreign key relationship

哦,最重要的是:mysql_*功能已弃用,建议您使用,mysqli或者PDO,请参阅此问题以获取更多信息。

于 2013-08-03T22:53:26.890 回答