从db加载数据,使用AJAX发布更新数据库,返回加载新数据!完全困惑

时间:2013-11-05 09:49:17

标签: javascript php jquery mysql ajax

我想用php从mysql db获取数据并将它们分配给我的javascript数组。我的数据库中有200条记录,我将随机获得10条记录。

$myQuery = mysql_query("select * from tblx where xyz=1 order by rand() limit 10");

*我想要做的是将这些记录分配到一个数组中,而不是逐个显示到我的页面中,具有淡入淡出效果或其他内容。用户正在单击其中一个并将其值发布到db,而不是执行回调函数来加载新数据。

###############################/ / h1>
                              EDIT 2013.06.11

###############################/ / h1>

我完全糊涂了,所以请让逻辑清晰。

这里我从db获取数据。

index.php


$sorular_hepsi = mysql_query("select * from tblsorular where hafta=1 order by rand() limit 2");
    $soru_ust = mysql_fetch_assoc($sorular_hepsi);
        $soru_id = $soru_ust_rs["id"];
        $soru_grup_id = $soru_ust["sId"];

$soru1 = $soru_ust["soru"];

$sorular = mysql_query("select * from tblsorular where sId=$soru_grup_id");
$totalKayit = mysql_num_rows($sorular_rs);

    while ( $sorular_rs=mysql_fetch_assoc($sorular)) {
        $sorular2[] = $sorular_rs["soru"];
        $sorular2Id[] = $sorular_rs["id"];
    }

$userId = 1234;

以下是index.php

中列出的对象
<div id="sorugonder" class="soruStyle">
        <a href="#" class="sorugonder" id="<?=$sorular2Id[0]?>"><?=$sorular2[0]?></a>
    </div>

    <div id="soru_sag" class="soruStyle">
        <a href="#" class="sorugonder2" id="<?=$sorular2Id[1]?>"><?=$sorular2[1]?></a>
    </div>

这是我的ajax函数,用于将我的数据发送到islem.php

$(function() {
    $(".sorugonder").click(function() {
    // $('#load').fadeIn();
    var commentContainer = $(this).parent();

    var id = $(this).attr("id");
    var string = 'id='+ id ;

    $.ajax({
       type: "POST",
       url: "islem.php?islem=soruKayit",
       data: string,
       cache: false,

       success: function(data){

       commentContainer.slideUp('slow', function() {$(this).remove();});
             $('#sorugonder').fadeOut(1000);
             $('#soru_sag').fadeOut(2000);

             console.log(string);
             // alert(id);
            }
        });

        return false;

    });
});

此功能打印控制台记录为id=xx

这是我的islem.php页面获取ajax数据

if(isset($_POST["islem"]) && $_POST["islem"]=="soruKayit"){

    header('Content-type: application/json');

    $id= $_POST['string'];
    $cevapTarihi = date("d-m-Y H:i:s");

    $cevapId = json_encode($id);
    $userId = 1234;

     $kayit = @mysql_query("INSERT INTO tblk_skor VALUES(NULL, $userId,$cevapId,$cevapTarihi)");

        if(!$kayit){
                echo "Error:".mysql_error();
        }

    die();

}

我有4张不同的png图片,我正在使用它们作为背景。例如:

$1 = '<img src="../img/1.png" />';
$2 = '<img src="../img/2.png" />';
$3 = '<img src="../img/3.png" />';
$4 = '<img src="../img/4.png" />';

我已在每个帖子流程中更改列出的数据背景。但我无法弄清楚我必须把它们放在哪里以及放在哪里?

$ .ajax函数不会将我的数据发送到islem.php,否则我无法获取它。

简单地说:

  1. 我想将我的记录添加到数据库(只是id)
  2. 我必须执行回调函数,用10个不同的记录重复此过程10次。
  3. 完成此10rec后,我将计算结果并重定向到另一页。
  4. 每个后续步骤更改背景。
  5. 倒计时!我必须将倒计时器放入div中,用户在10秒内点击它。否则我必须执行另一个错误功能再次启动所有这些。我找不到合适的倒计时脚本来演示我的功能。
  6. 就是这个。

    有什么建议吗?

6 个答案:

答案 0 :(得分:1)

你应该为此做好准备,创建一个ajax请求并将请求发送到其他页面,该页面将获取数据和响应回到你的页面,就像AJAX那样。

$.ajax({
  type: "POST",
  url: "some.php",
  data: { XYZ: "1" }
}).done(function( msg ) {
    alert( "Data Saved: " + msg );
  });

这里url是页面的名称。和type是您将数据发送到该URL的类型。 希望它会对你有所帮助。

答案 1 :(得分:0)

你可以对你的页面进行ajax调用并获取数据(你可以json_encode()它),然后玩它,给它fadeIn()效果等等

答案 2 :(得分:0)

可以使用json_encode将php数组作为JSON回显。 所以你可以创建一个记录数组

<?php
//query code here

$results = array();
while($row = mysql_fetch_object($myQuery)){
  $results[] = $row;
}

?>

然后在你的HTML中你可以做到:

<script>
   var results = <?php echo json_encode($results); ?>;
<script>

然后根据需要在脚本中使用此变量。只需很少的变化,您就可以使用与Ajax调用相同的方法。

答案 3 :(得分:0)

在JSON中转换你的php值并使用如下所示的js转换回正常值:

<强> PHP

$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);

PHP Reff:http://us3.php.net/json_encode

<强>使用Javascript:

var myObject = JSON.parse("my json string");

Jsfiddle:http://jsfiddle.net/X6y5B/

答案 4 :(得分:0)

您可以将MySql行作为JSON返回。 一个例子:

PHP:

<?php
$arr[0]['name']   = 'test0';
$arr[0]['colour'] = 'red';
$arr[1]['name']   = 'test1';
$arr[1]['colour'] = 'blue';
$arr[2]['name']   = 'test2';
$arr[2]['colour'] = 'orange';
?>
<script type="text/javascript">
<?php 
    echo someThings = json_encode($arr); 
?>
</script>

然后在你的javascript中你可以对这些值做任何事情

使用Javascript:

counter = 0;
setInterval(function () {
    if (counter < someThings.length - 1) {
        //do something
    } else {
        counter = 0;
        //do something with the starting element again like 
        alert('The name is ' + someThing[counter].name + ' and the colour is ' + someThing[counter].colour);
    }
    counter++;
}, 5000);

答案 5 :(得分:0)

首先,你需要使用你的查询在php中创建一个变量: 下面的代码只是demo.I我在数组中循环并创建一个数组,你需要在你的查询中循环它:

<?php
$a="{ ";

for($y=2012;$y<=date("Y")+1;$y++)
{


$a.="'".$y."':{";

for($m=1;$m<=12;$m++)
{
$data_holiday=$ms->holidays($y,$m);
$a.="'".$m."': {";

foreach($data_holiday as $key=>$val)
{
$a.="'".$val['date_day']."': {tooltip: '".$val[Occasion]."', className:'holiday'},";
}

$a.="},";
}


$a.="},";

}

$a.="}";
?>

然后你可以在这样的javascript中回显它:

<script type="text/javascript">
var specialDays =<?php echo $a; ?>;
</script>