2012-01-01 2 views
2

목표 :jQuery와 MySQL을 사용하여 같은 페이지에 제출하고 표시하는 방법?

는 Q (PHP, 자바 스크립트와 jQuery를 사용) & 스크립트를 만들 질문을하고 답변을 제출 할 수있게합니다 질문을했다. 사용자가 새 대답을 제출하면 해당 대답이 데이터베이스에 삽입되고 답변이 포함 된 div가 자동으로 새로 고쳐져 새로 제출 된 답변을 포함/표시합니다.

문제 :

답을 제출 한 후, 제출 프로세스가를 작동하지 입니다.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script language="JavaScript"> 
    $(document).ready(function() 
     { 
     /*Function # 4: 
      Hide the AnswerForm and show Answers where the div will be automatically refreshed upon answer submission. <>>>> REVIEW!!! */ 
     function addAnswer(i,qID) 
     { 
      //alert("newanswer-q"+i); 

      //$("newanswer-q"+i).style.display("none"); 
      //$("Answers-q"+i).style.display("block"); 
      changeDiv("Answers-q"+i, "block"); 

      //step # 1: define posted data to insert into database 
      var name = $("input#name").val();; 
      var answer = $("input#answer").val();; 

      alert(name+","+answer); 

      //step # 2: submit form to be processed by CHANGE.PHP to insert into DB 
       $.ajax({ 
       type:"POST", 
       url:"change.php", 
       data: "questionID="+qID+"&count="+i+"&name="+name+"&answer="+answer, 
       success: function(data) 
         { 
          if(data==0) 
          { 
           alert("YEEEEEEEEEESSSS!!!!!! :DDDDDD"); 
           $("#Answer-q"+i).html("Finally!"); 
          } 
          else 
          { 
           $("#Answer-q"+i).html("?!?!"); 
          } 
         } 
       }); 

      //Step # 3: refresh Answers div 
      //changeDiv('Answers-q'+i, 'block'); 

      $("#Answers-q"+i).load("printAnswers.php"); 
     }//end addAnswer 


     $("#refreshAnswers").click(function(evt){ 
     $("#refreshAnswers").load("printAnswers.php"); 
     evt.preventDefault(); 
     }); 
    } 
    </script> 


     <style type="text/css"> 

     .answers 
     { 
      background-color: red; 
      position: relative; 
      display: block; 
      left: 1in; 
     } 

     .answerform 
     { 
      background-color: yellow; 
      position: relative; 
      display: block; 
      left: 1in; 
     } 
     .error 
     { 
      color: red; 
      display:none; 
     } 
     </style> 

    </head> 
    <body> 
     <?php 
      mysql_connect("#", "#", "#") or die(mysql_error()); 
      mysql_select_db("test") or die(mysql_error()); 

      $q1 = "SELECT * 
        FROM questions"; 
      $allQ = mysql_query($q1); 
      while($q = mysql_fetch_array($allQ)) 
      { 
       $i = $q['qID']; 

       echo '<div id="questions" style="background-color: blue;">'; 
       echo 'Question: '.$q['Question'].'<br><br>'; 
       echo 'posted by '.$q['userName'].'<br><br>'; 
       echo 'posted on '.$q['addDate'].'<br><br>'; 
       echo '</div>';?> 

       <input type="button" id="viewAnswers" name="viewAnswers" value="View Answers" onClick="changeDiv('Answers-q<?=$i?>', 'block');"> 
       <input type="button" id="addAnswer" name="addAnswer" value="Answer Question" onClick="changeDiv('newanswer-q<?=$i?>', 'block');"> 

       <div id="Answers-q<?=$i?>" class="answers"> 
        <? include("printAnswers.php"); // display all answers to question # i 
?> 
       </div> 

      <? echo '<div id="newanswer-q'.$i.'" class="answerform">'; 
         include("addAnswerForm.php"); // display add new answer to question # i 
       echo '</div>'; 
      } ?> 
      <br>-------------------------<br> 
      Go back to <a href="index.php">index.php</a> 
    </body> 
    </html> 

Change.php

<?php 

    mysql_connect('#', '#', '#') or die(mysql_error()); 

    mysql_select_db('test') or die(mysql_error()); 

    // Get values from form 
    $name=$_POST['name']; 

    $answer=$_POST['answer']; 

    $qID = $_POST['qID']; 

    // Insert data into mysql 

    $sql="INSERT INTO answers(Answer, userName, qID) 
      VALUES('$answer', '$name','$qID')"; 

    $result=mysql_query($sql); 

?> 

내가 모두 내 초급 수준의 기술에 행운 덕분에 이제 몇 시간이에 붙어있다 : 여기

내 코드입니다 PHP와 jQuery.

누구나 생명줄을 던질 수 있습니까?

+1

한눈에 ...이 줄의''닫는 PHP 괄호를 주석 처리하고 있습니다. 주석 뒤에 주석이 없도록 주석을 제거하거나 닫는 괄호를 한 줄 아래로 이동해야합니다. – Scott

답변

0

데이터의 가치는 무엇입니까? 성공 함수에서 console.log(data)을 시도하십시오. 나에게 change.php가 출력을 생성하지 않으므로 데이터가 0이어야하는 이유는 무엇입니까?

+0

거짓인지 아닌지 확인하는 것입니다. 어쨌든, 이제는 문제가 해결되었지만 이제는 데이터베이스에 입력 된 양식 입력이 qID 데이터가없는 while 루프 반복만큼 반복됩니다. (내 코드에 대한 항목을 지금까지 확인하십시오 ...) – dmaz37

+0

addAnswer()가 어디에서 호출 되었습니까? – user823255

0

데이터가 "GET"요청을 통해 전송 된 것으로 보입니다.

이에

변경 테 AJAX 데이터 오브젝트 : 당신은 문자열로 당신이 그런 식으로 그것을 전달하는 경우,이 URL에 추가됩니다

data : { 
    questionID : qid, 
    count : i, 
    name : name, 
    answer : answer 
} 

당신이로 전달하면, (GET 요청되는) 게시되는 객체.