while ループ内の while ループ
-
05-07-2019 - |
質問
テーブルを通過し、テーブル内の結果をエコーする while ループがあり、イメージ ディレクトリを参照する while ループもあり、イメージへのパスを出力できます。私の問題は、HTML タグと画像タグが存在する他の while ループに画像パスを出力したいことです。1 つの while ループをもう 1 つの while ループの中に入れてみましたが、while の結果の 1 つが 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 />";
}
解決
データベースから靴のデータをクエリし、クエリしたすべてのデータに対して、画像名などをパラメータとして受け取る関数を通じて、一致する画像をリクエストする必要があります。
次に、その機能ですべての画像をループし、持っている靴に一致する画像を見つけることができます。その画像 $file をデータベース クエリに返します。
したがって、クエリ ループ内で、画像をクエリ (ループ) して、データベース用に用意した靴のデータと一致する適切な画像を見つける関数を呼び出します。
これで、その $file とその他のすべてのデータをエコーできるようになります。
他のヒント
前述したように、データベース内のどの靴にどの画像を使用するかを指定する必要があります。
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
....
}