2017-10-19 4 views
0

데이터베이스의 이미지를 표시하고 있습니다. 각 이미지에는 양식과 제출 버튼이 포함 된 설명 상자가 있습니다. 제출 단추에는 표시되는 이미지의 이름이 있습니다. 전의. 이미지 이름이 flowers.jpg 인 경우 제출 버튼의 이름은 flowers.jpg로 설정됩니다. (나는 문자열을 대체 했으므로 내 코드에서 flowersjpg로 설정됩니다.) 이름은 아무런 문제없이 제출 버튼에 추가됩니다. 몇 개의 이미지가 있기 때문에 isset() 함수의 $ _POST [] 매개 변수에 $ row [ 'image'] (이미지 이름)을 전달하려고했지만 작동하지 않습니다. - 나는 $ _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>'; 
      } 

에, 그것을 잘 작동하지만 난에 변수를 넣을 때, 그것은 작동하지 않습니다. $ 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>'; 
     } 

나는 이것을 시도했지만 $ name 주위에 따옴표가 없기 때문에 효과가 있다고 생각하지 않습니다.

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

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

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

당신의 체크 세트의 '$ 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>'; 
    } 

내가 while 루프의 끝 부분으로는 isset() 함수의 if 문으로 이동, 지금 모든 이미지에 적용됩니다.

  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"); 
        } 
        ** 
      }