【问题标题】:while loop in a while loopwhile 循环中的 while 循环
【发布时间】:2009-11-25 23:42:54
【问题描述】:

我有一个遍历表的 while 循环,我在其中回显结果,我还有一个查看图像目录的 while 循环,我可以输出图像的路径。我的问题是我想在我的 html 和图像标记所在的另一个 while 循环中输出图像路径。我曾尝试将一个 while 循环放在另一个循环中,但 while 中的一个结果是重复的。如何在图像的第一个 while 循环之外获取变量并将其放入另一个 while 循环并回显它。

更新我让它工作每个人都在告诉我正确的事情我只是慢。我修改了下面的代码,上面写着抓取表单数据并插入表单数据,这是我需要做的。

谢谢

        /* LOOP THROUGH IMAGES */
        $myDir = dir("images/");
        while(($file = $myDir->read()) !==false){

            if(!is_dir($file)){

            echo "$file";

            }
        }/*SHOE IMAGE WHILE LOOP ENDS*/


        /* LOOP THROUGH SHOEDATA TABLE */

        $results = mysql_query("SELECT * FROM shoeData");


        while($row = mysql_fetch_array($results)){

        $name = $row['name'];
        $about = $row['about'];
        $company = $row['company'];
        $buy = $row['buy'];
        $tags = $row['tags'];
        $id = $row['id'];



        /* ECHO THE SHOEDATA RESULTS */     

            echo "<div class='span-8'>";


                echo "<ul>";
                    echo "<li>$name</l1>";
                    echo "<li>$about</l1>";
                    echo "<li>$company</l1>";
                    echo "<li><a href='$buy'>BUY</a></l1>";
                    echo "<li>$tags</l1>";
                echo "</ul>";




            echo "</div>";





        }/*SHOEDATA WHILE LOOP ENDS */

-----------------------UPLOAD SCRIPT UPDATE----------------------

Currently My upload script will move my files but their is nothing currently inputting a field into my database, how would I modify this script to also upload a link to my images in the table with


    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/png")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 2000000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

/------------------获取表单数据------------------ -------/

    $name = $_POST['name'];
    $about = $_POST['about'];

    $company = $_POST['company'];
    $buy = $_POST['buy'];
    $tags = $_POST['tags'];
    $imageName1 = $_FILES["file"]["name"];

/------插入数据库---------- /

$sql = "INSERT INTO shoeData (name,about,company,buy,tags,image)VALUES(
\"$name\",
\"$about\",
\"$company\",
\"$buy\",
\"$tags\",
\"$imageName1\"
)";

$results = mysql_query($sql)or die(mysql_error());

        if (file_exists("images/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "images/" . $_FILES["file"]["name"]);



          echo "Stored in: " . "images/" . $_FILES["file"]["name"];

        }
      }
    else
      {
      echo "Invalid file" . "<br/>";
      echo "Type: " . $_FILES["file"]["type"] . "<br />";
      }

【问题讨论】:

  • 表格中的信息与图片有什么关系?如果两者之间没有直接关联,那么将它们一起显示的方法对您来说有意义吗?
  • 我想以某种方式将 ID 与图像名称相关联,但不确定如何?
  • 这是一个基本问题。如果您无法将图像与表中的每条记录相关联,则不可能显示特定项目的图像。您只能显示可能与所选记录相关或不相关的所有图像或某些图像。将两者联系起来对于为您的用户提供有用的答案至关重要。

标签: php mysql html while-loop


【解决方案1】:

您需要从数据库中查询您的鞋子数据,然后对于您查询过的每一个,通过一个将图像名称或其他内容作为参数的函数来请求匹配的图像。

然后在该函数中,您可以遍历所有图像并找到与您的鞋子相匹配的图像。将该图像 $file 返回到您的数据库查询。

因此,在您的 Query 循环中,调用用于查询(循环)图像的函数,找到正确的图像,匹配您刚刚用于数据库的鞋子数据。

现在您可以回显该 $file 及其所有其他数据。

【讨论】:

  • 好的我要试试这个,我对php很陌生,所以我可能需要更多解释
  • 我应该使用GET变量来获取图像名称,我迷路了。
  • 您数据库中的数据与图像有何关联?您的数据库中可能应该有一个包含图像名称的字段,您可以像处理其余数据一样获取该名称,然后您可以从结果集中获取该图像名称并将其传递给函数。
  • $image = row['image'];获取图像目录($图像); // 在这里你浏览你的图像并找到一个从你的数据库传递的名称...为方便起见应该是图像的文件名...
  • 我没有图像行,因为我正在创建一个上传脚本,所以我不必手动添加图像,而且我不知道如何在上传时将图像路径添加到行一个图像,这就是为什么我要运行一个循环来遍历图像目录的原因,显然这可能不是这样做的方法,因为那样它们就没有指向图像文件的链接。
【解决方案2】:

如前所述,您需要指定数据库中的哪只鞋应使用哪张图片:

ALTER TABLE shoeData ADD COLUMN image VARCHAR(256);
UPDATE shoeData set image='path/to/image.jpg' WHERE id=1;

然后你可以在你的主循环中抓取鞋子图像:

while($row = mysql_fetch_array($results)){
 $image = $row['image'];
 printf('<img src="/images/%s" alt="" />', htmlentities($row['image']));

 ....
 Rest of the loop
 ....

}

【讨论】:

  • 我唯一的问题是,将来我打算构建一个上传脚本,并且从来没有在我上传图像时将图像路径上传到数据库表的地方。这就是为什么我有 while 循环来遍历图像目录的原因。
  • 很简单:图片上传后移动到images/目录下,用图片文件名更新数据库中的图片路径。
  • 手动移动图像似乎违背了上传脚本的目的。 ftp它会更快。我很困惑。
  • 两个关键点:你需要一个产品和它的形象之间的明确链接。添加数据库字段提供此链接。其次,在上传和移动图像后(请参阅:php.net/move_uploaded_file)PHP 可以为您创建链接。因此,上传脚本会做两件事:将文件保存到适当的位置并在数据库中创建链接。
  • 顺便感谢您的帮助,我明白您的意思,但我在页面上没有看到任何内容可以告诉我如何修改我的上传脚本以在我的图片中添加指向我的图片的链接我的数据库中的字段。我在上面添加了我的上传脚本
猜你喜欢
  • 2014-11-02
  • 2016-04-24
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 2014-03-29
相关资源
最近更新 更多