-3

チェックボックスを使用してフォームを取得したのと同じページに、mysql からのデータを表示しようとしています。問題は、それを表示するjsスクリプトをどのように書くかです。コードは次のとおりです。

<form id="myForm" action="pdoakcja.php" method="post"> 
<!--Instruktor: <input type="text" name="name" /> -->
Permissions:<input type="checkbox" name="M1" value="M1" />M1
<input type="checkbox" name="M2" value="M2" />M2
<input type="submit" value="Szukaj" /> 
</form>


<div id='name-data'>Instruktorzy o podanych uprawnieniach:</div>
<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>

<script> 
............??????
</script> 
4

3 に答える 3

0

これは、jQueryでそれを行う方法を示す疑似例です。これは、チェックボックスをクリックすると更新されるため、送信を完全に削除できます。あなたはすでにその仕事をしているデータベースを持っていると言っているので、私はそれを含めません。コピーして貼り付けるだけです。

<?php 
//Some pseudo data kinda as your receive it from a query
$datafromSql = array(
array('id'=>1,'permission'=>'M1','theData'=>'User has M1 permission'),
array('id'=>2,'permission'=>'M2','theData'=>'User has M2 permission'),
array('id'=>3,'permission'=>'M1','theData'=>'User has M1 permission'),
array('id'=>4,'permission'=>'M1','theData'=>'User has M1 permission'),
);

//Access the data
if($_SERVER['REQUEST_METHOD']=='POST'){
    $is_ajax = false;
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){
        $is_ajax = true;
    }
    //pseudo code, really you would put your query here
    // SELECT theData FROM your_table WHERE permission=POST_VALUE ... ...

    //And then format your output
    $result=array();

    foreach($datafromSql as $row){
        if($is_ajax == true){
            foreach($_POST as $key=>$value){
                if($_POST[$key] == 'true' && $row['permission']==$key){
                    $result[]=$row['theData'].'<br />';
                }
            }
        }else{
            foreach($_POST as $key=>$value){
                if($_POST[$key] == $row['permission']){
                    $result[]=$row['theData'].'<br />';
                }
            }
        }
    }
    $result = implode('<hr />',$result);

    //AJAX Response, echo and then die.
    if($is_ajax === true){
        header('Content-Type: text/html');
        //example output sent back to the jQuery callback
        echo $result;
        //echo '<pre>'.print_r($_POST,true).'</pre>';
        die;
    }

}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" charset="utf-8"></script>
<script type="text/javascript">
function update(){
    $.post('./<?php echo basename(__FILE__)?>',
    {
        M1:  $("#M1").is(':checked'),
        M2:  $("#M2").is(':checked')
    },
    function(data) {
        $('#result').replaceWith('<div id="result"><h1>The Result:</h1>'+ data +'</div>');
    });
}
</script>

</head>

<body>

<form method="POST" action="<?php echo basename(__FILE__)?>">
Permissions: 
<input type="checkbox" id="M1" name="M1" value="M1" onChange="update()"/>M1
<input type="checkbox" id="M2" name="M2" value="M2" onChange="update()"/>M2
<input type="submit" value="Szukaj" /> 
</form>

<p id='result'><?php echo isset($result)?$result:null;?></p>

</body>

</html>
于 2012-08-21T11:44:44.200 に答える
0

jqueryフォームプラグインを使用して問題を解決できます。これにより、ページをリロードせずにフォームを送信し、同じページにターゲットページからのリターンを表示することができます. 指示に従ってください:

最初にこの jquery フォームプラグインをダウンロードして保存します。

それで

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<!-- This jquery.form.js is for Submitting form data using jquery and Ajax  -->
<script type="text/javascript" src="js/jquery.form.js"></script> 
 <script type="text/javascript"> 

   $(document).ready(function() { 
    var options = { 

        success:       showResponse             

        };              
 // bind form using 'ajaxForm'              
   $('#myForm').ajaxForm(options); 
 });                    

// post-submit callback                      
 function showResponse(responseText, statusText, xhr, $form)  {                         
 if(responseText==1){

    $("#error").html('No Result Found');            


 } else{
    $("#result").html(responseText);                        

    }                   

}                                

</script>           
<form id="myForm" enctype="multipart/form-data" action="pdoakcja.php" 
 method="post"  name="myForm">

  <!--Instruktor: <input type="text" name="name" /> -->
   Permissions:<input type="checkbox" name="M1" value="M1" />M1
   <input type="checkbox" name="M2" value="M2" />M2
   <input type="submit" value="Szukaj" /> 

</form>

 <span id="error"></span>
 <span id="result"></span>

あなたの pdoakcja.php ファイル: (私はあなたの別の投稿から次のコードを取得しましたがまだチェックしていません)

 <?php
 $query = mysql_query("SELECT * FROM permissions WHERE m LIKE '".$_POST['M1']."' OR m  LIKE '".$_POST['M2']."' OR mn LIKE '".$_POST['MN1']."' ");  
   if($query) {
    while($permissions = mysql_fetch_assoc($query)){
    $query2 = mysql_query("SELECT name_surname FROM instruktorzy WHERE  instruktor_id='".$permissions['instruktor_id']."'");  
     while($Mdwa = mysql_fetch_assoc($query2)){
        echo "<p style=\"font-size: 14px; font-family: Helvetica; background-color:  #FFFFFF\"> ".$Mdwa['name_surname']."<br />" ; "</p>" ;
     }
   }
 } else {echo "1";}
  ?>

これがうまくいくことを願っています。詳細については、jquery フォーム プラグインの Web サイトを参照してください。

于 2012-08-21T11:30:56.480 に答える
-1

PHP MySQL 関数を使用してデータベースから必要なデータを取得し、javascript ではなく PHP 経由で表示する必要があります。

特にこれを見てください: mysql_fetch_assoc - 完全に機能する例があります。

于 2012-08-21T10:50:42.880 に答える