2017-10-19 146 views
0

我正在顯示來自數據庫的圖像,每個圖像都有一個包含表單和提交按鈕的評論框;提交按鈕具有顯示的圖像的名稱。防爆。如果圖像名稱爲flowers.jpg,則提交按鈕的名稱將設置爲flowers.jpg。 (儘管我做了字符串替換,所以在我的代碼中它將被設置爲flowersjpg)名稱被添加到提交按鈕中,沒有任何問題。因爲我有幾張圖片,我想將$ row ['image'](圖片名稱)傳遞給isset()函數的$ _POST []參數,但它不起作用。 - 所有的代碼是一個文檔

$result = mysqli_query($conn, "SELECT * FROM uploads ORDER BY timestamp DESC"); 

      while($row = mysqli_fetch_array($result)) 
      { 
       // Prints all the photos with a caption 
       echo "<div class='wrapper' name=".$row['image'].">"; 
        echo "<div class='caption'>"; 
         echo "<h3>".$row['title']."</h3>"; 
         echo "<p class='description'>".$row['description']."</p>"; 
        echo "</div>"; 
         echo "<img src='images/uploads/".$row['image']."'/>"; 

         // name for submit button, the $row['image'] contains the entire image name so certain characters have to be removed 
         **$name = str_replace(array(".", "-", ":", "'", "/", " "), "", $row['image']);** 

         // comment box - just a form with a submit 
         echo "<div class='commentBox'> 
          <form action='test.php' method='POST'> 
           <textarea placeholder='Say something nice!' name='comment'></textarea> 
            // CREATES NAME FOR BUTTON. FOR EACH IMAGE, THE BUTTON HAS THE IMG NAME 
            **<button type='submit' name='".$name."' value='submit'> post </button>** 
          </form> 
          </div>"; 
       echo "</div>"; 
      } 

      if(isset($_POST["'".$name."'"])) 
      { 
       echo '<script type="text/javascript"> alert("isset"); </script>'; 
      } 

在當我把這個名字作爲$ _ POST參數純字符串,它工作正常,但是當我把變量,這是行不通的。 $ name變量是一個字符串。

這個工程,但我敢肯定,任何使用的字符串將工作,只要按鈕名稱和$ _POST字符串是相同的。

 echo "<button type='submit' name='flowerspng' value='submit'> post </button>"; 

     if(isset($_POST[flowerspng])) 
     { 

      echo '<script type="text/javascript"> alert("isset"); </script>'; 
     } 

這段代碼另一方面沒有。我知道變量可以在$ _POST參數中傳遞,所以我不明白我的代碼有什麼問題。我的語法不正確?顯然變量沒有被設置,否則警報框會彈出。

 echo "<button type='submit' name='".$name."' value='submit'> post </button>"; 

     if(isset($_POST["'".$name."'"])) 
     { 

      echo '<script type="text/javascript"> alert("isset"); </script>'; 
     } 

我也試過這個,但我不認爲它的工作,因爲沒有引號$名稱附近。

 echo "<button type='submit' name=$name value='submit'> post </button>" 

     if(isset($_POST[$name])) 
     { 

      echo '<script type="text/javascript"> alert("isset"); </script>'; 
     } 
+0

作爲提示,您的isset檢查中的'$ name'將始終是最後一行的名稱,因爲每次迭代都會覆蓋它。 –

+0

如果發生了這種情況,代碼是否適用於數據庫中的最後一幅圖像?我點擊了所有按鈕,並且警報框根本不會彈出。我對PHP有點新,所以對於問一個愚蠢的問題表示抱歉。 – WhiteVeils

+0

它會,但你有'$ name'周圍引用不應該在那裏(即你最後一次嘗試是正確的,但你可能沒有提交最後一項)。基本上,$ _POST鍵是'charlie'(作爲一個例子),但是引用它可以讓它查找鍵「charlie'',這是一個不同的字符串。 –

回答

0

此代碼:

echo "<button type='submit' name='$name' value='submit'> post </button>" 

    if(isset($_POST[$name])) 
    { 

     echo '<script type="text/javascript"> alert("isset"); </script>'; 
    } 

我感動的if語句的isset()函數功能到while循環的結束,現在適用於所有圖像。

  while($row = mysqli_fetch_array($result)) 
      { 
       echo "<div class='wrapper' name=".$row['image'].">"; 
        echo "<div class='caption'>"; 
         echo "<h3>".$row['title']."</h3>"; 
         echo "<p class='description'>".$row['description']."</p>"; 
        echo "</div>"; 
         echo "<img src='images/uploads/".$row['image']."'/>"; 
         $name = str_replace(array(".", "-", ":", "'", "/", " "), "", $row['image']); 
         echo "<div class='commentBox'> 
          <form action='test.php' style='text-align: right; background-color: rgb(34,34,34); width: 100%; height: 120%; margin: 0;' method='POST'> 
           <textarea style='height: 90%; width: 79%; resize: none; border-radius: 3px; margin: 0; margin-top: 5px;' placeholder='Say something nice!' name='comment'></textarea> 
            <button type='submit' name='$name' value='submit' style='height: 100%; width: 20%; float: right;'> post </button> 
          </form> 
            <div class='seeMore'> see more </div> 
          </div>"; 
         echo "</br><div class='comments' style='display: none;'> comment display </div>"; 
       echo "</div>"; 

        ** 
        // testing the if statement for each image - works perfectly now 
        if(isset($_POST[$name])) 
        { 
         echo '<script type="text/javascript"> alert("'.$name.'"); </script>'; 
         mysqli_query($conn, "UPDATE uploads SET title='test' WHERE image='".$row['image']."'"); 
         header("Refresh:0"); 
        } 
        ** 
      }