2012-12-03 3 views
0

이미지를 클릭 할 때 데이터베이스에 값을 삽입하고 싶지만 잘못된 것이 있습니다. 내 코드는 다음과 같습니다. 내 게시물을 편집했습니다. 내가 제안한 변경 사항을 적용했지만 이미지를 클릭해도 아무런 변화가 없습니다.데이터베이스에 이미지 속성 삽입하기

<html> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<script src="jquery.js"></script> 

<style type="text/css"> 
     body{background-color:black; background-repeat:no-repeat; position:absolute;width:100%;} 
     img.imgnavbar{height:auto; width:15%; opacity: 1.0; padding:2%; z-index:100;} 
     .menu{padding-top:3%;width:100%;} 
     img.shadow{height:100%; width:100%; bottom:0px; position:fixed; left:0%; z-index:-2;} 

</style> 

<script> 
$(".imgnavbar").click(function() { 
    var $myimage=$(this); 
    $.ajax({ 
     type: 'POST', 
     url: 'submit_form.php', 
     data: { 'img_alt': $myimage.attr('alt') }, 
     success: function(){ 
      console.log("OK!"); 
     } 
    }); 
}); 
</script> 
</head> 
<body> 

<div align="center" class="menu"> 
<img src='images/green.png' id="green" alt="green" class="imgnavbar"/> 
<img src='images/blue.png' id="blue" alt="blue" class="imgnavbar"/> 
<img src='images/orange.png' id="orange" alt="orange" class="imgnavbar"/> 
<img src='images/red.png' id="red" alt="red" class="imgnavbar"/> 
</div> 
<img src='images/shadow.png' id="shadow" class="shadow"/> 
</body> 

</html> 

과 PHP :

<?php 

    include ("db.php"); 

    $myimage  = htmlspecialchars(trim($_POST['img_alt'])); 

    $addCompany = "INSERT INTO company (id,name) VALUES ('','$myimage')"; 
    mysql_query($addCompany) or die(mysql_error()); 

?> 

당신이 몇 가지 조언 좀 도와 주 시겠어요? 감사! 당신은 변수에 전송하여 다른 이름 사용

+1

본질적으로 불법은 아니지만, 일반적으로 'id' 속성에 대해 동일한 값을 가진 여러 개의 고유 한 요소를 갖는 것은 바람직하지 않습니다. –

+1

클릭 이벤트는 ID를 사용하는 첫 번째 이미지에 대해서만 작동합니까? 내가 잘못하면 누군가가 나를 바로 잡습니다. –

+1

불법은 아니지만이 경우에는 코드가 작동하지 않습니다 – devnull69

답변

3

클래스 특성을 사용해야하며 id attr을 두 번 사용할 수 없습니다.

<script> 
**$(".imgnavbar")**.click(function() { 
    var $myimage=$(this); 
    $.ajax({ 
     type: 'POST', 
     url: 'submit_form.php', 
     data: { 'img_alt': $myimage.attr('alt') }, 
     success: function(){ 
      console.log("OK!"); 
     } 
    }); 
}); 
</script> 
+1

+1 내 대답과 함께 가장 분명한 문제를 해결해야합니다. – jeroen

+0

고마워, 지금 일하고있어! – user1820705

4

:

data: { 'img_alt': $myimage.attr('alt') }, 

하지만 PHP에서 당신은 사용에

$myimage  = htmlspecialchars(trim($_POST['myimage'])); 

변경하는 것이 :

$myimage  = htmlspecialchars(trim($_POST['img_alt'])); 

또한 참고하여 코드는 SQL 주입에 취약합니다. PDO/mysqli로 전환하고 바운드 변수가있는 준비된 명령문을 사용해야합니다.

+0

@ user1820705 그리고 Joe의 대답을 확인하십시오. 현재 코드는 첫 번째 요소 만 클릭 할 수 있습니다. – jeroen

+0

도움을 주셔서 감사합니다. 사진을 클릭해도 아무런 변화가 없습니다. 지금 제 코드를 좀 살펴 보시겠습니까? – user1820705

+0

@ user1820705 PHP 파일이 호출 되었습니까? 그렇다면'var_dump ($ myimage)'와 같은 기본적인 디버깅을 수행하고 브라우저 개발자 도구의 네트워크 탭에서 결과를 확인하십시오. – jeroen

0

가장 중요한 점은 각 id 속성은 페이지 당 한 번만 사용할 수 있다는 것입니다. 다른 요소에 대해 동일한 id 특성을 사용하면 안됩니다.

1

당신이 잘못된 $ _POST 매개 변수

또한 모든 이미지 요소 ID가 같은 액세스하는 것으로 보인다. 이것은 아마도 좋은 생각이 아닙니다. 아마도 클래스를 핸들로 사용해보십시오. 또한, 좀 더 의미있는 오류 정보를 얻기 위해 응용 프로그램을 디버깅 해보십시오. 당신은 너무로 AJAX 포스트의 응답을 인쇄 할 수 있습니다 :

success: function(response){ 
    console.log(response); 
} 

다음을 통해 오는 것을 확인하기 위해 PHP에 위해서 var_dump ($ _ POST)를보십시오.

관련 문제