Jquery Ajax复制结果

Jquery Ajax复制结果,jquery,ajax,search,Jquery,Ajax,Search,我有一个带有ajax搜索的在线商店网站,当我点击更多结果时,它会复制一些产品。我找不到任何错误 我真的需要帮助。由于html输出太长,您可以在此处进行检查 real\u escape\u字符串($s); //将搜索查询分解为单词 $words=explode(“,$s); //开始选择 $query=“选择*从artikli.ArtKonto上的artikli内部加入artikli_组=artikli_组.artGrKonto”; //从哪里开始 $where=“where”; $i=0; fo

我有一个带有ajax搜索的在线商店网站,当我点击更多结果时,它会复制一些产品。我找不到任何错误

我真的需要帮助。由于html输出太长,您可以在此处进行检查

real\u escape\u字符串($s);
//将搜索查询分解为单词
$words=explode(“,$s);
//开始选择
$query=“选择*从artikli.ArtKonto上的artikli内部加入artikli_组=artikli_组.artGrKonto”;
//从哪里开始
$where=“where”;
$i=0;
foreach($words作为$word)
{
//集合替换
$scope=数组(“š”、“đ”、“ž”、“č”、“ć”);
$replace=数组(“Đ”、“Ž”、“Ž”、“Ć”);
//选择第一个字符
$fc=substr($word,0,1);
//选择其他字符
$oc=substr($word,1);
//先变换到上
$fcb=strtoupper($fc);
$fcb=str_replace($scope,$replace,$fcb);
//将另一个转换为上一个
$ocl=strtolower($oc);
$ocl=str_replace($replace,$scope,$ocl);
//设置正常字
$word=$fcb.$ocl;
//设置较低的单词
$word\u lower=strtolower($word);
$word\u lower=str\u replace($replace,$scope,$word\u lower);
//设置大写字母
$word\u upper=strtoupper($word);
$word\u upper=str\u replace($scope,$replace,$word\u upper);
如果(strlen($word)>3)
$word\u many=substr($word,0,-1);
其他的
$word\u many=$word;
//设置查询的一部分
如果($i==0)
$where.='(artNaziv喜欢“%”.$word.'%”或artNaziv喜欢“%”.$word_lower.'%”或artNaziv喜欢“%”.$word_lower.'%”或artNaziv喜欢“%”.$word_lower.'%”);
其他的
$where.='AND(artNaziv喜欢“%”.$word.'%”或artNaziv喜欢“%”.$word_lower.'%”或artNaziv喜欢“%”.$word_lower.'%.”或artNaziv喜欢“%”.$word_lower.'%');
$i++;
}
//更新位置
如果(isset($\u GET['since'])&&&$\u GET['since']!=NULL)
$where.=“和ID_artikl<”$\u GET['since'];
//定购
$order=“artKn ASC订购”;
//设限
如果($_GET['type']!=“small”){
$limit=“limit 15”;
}否则{
$limit=“limit 5”;
}
如果($_GET['type']!=“small”){
//合并选择零件和总结果计数的WHERE零件
$query_num=$query.$where.$order;
$result\u num=$mysqli->query($query\u num);
$total\u results\u num=$result\u num->num\u行;
}否则{
$total_results_num=0;
}
//将选择部件和用于获取结果的WHERE部件合并
$query=$query.$where.$order.$limit;
//实例化响应
$response=array('html'=>array(),'after'=>'','results'=>0,'total'=>$total\u results\u num,'first\u ID'=>0','last\u ID'=>0','end'=>false);
//进程查询
$result=$mysqli->query($query);
$response['results']=$result->num_行;
如果($response['results']<15)
{
$response['end']=true;
如果($template_file==“”)
$response['after']=“Učitaj više rezultata.”;
其他的
$response['after']=“Svi rezultati za pojam”$s.“”;
}
其他的
{
如果($template_file==“”)
$response['after']=“Nema više rezultata.”;
其他的
$response['after']=“Svi rezultati za pojam”$s.“”;
}
$i=0;
而($row=$result->fetch_assoc())
{
如果($i==0)
$response['first_ID']=$row['ID_artikl'];
$row['is_ajax_requested']=true;
如果($\u GET['type']=='small')
$row['artNaziv']=子行(iconv('ISO-8859-2','UTF-8',$row['artNaziv']),0,30)。”;
其他的
$row['artNaziv']=iconv('ISO-8859-2','UTF-8',$row['artNaziv']);
$row['artInfo']=iconv('ISO-8859-2','UTF-8',$row['artInfo']);
$row['artGrNaziv']=iconv('ISO-8859-2','UTF-8',$row['artGrNaziv']);
数组推送($response['html',$mustache->render($template,newartikl($row));
$response['last_ID']=$row['ID_artikl'];
$i++;
}
$pattern=array(“\u010d”、“\u010c”、“\u009a”、“\u008a”、“\u009e”、“\u008e”、“\u0111”);
$replacement=数组(“č”、“Č”、“š”、“Š”、“Ž”、“đ”);
echo str_replace($pattern,$replacement,json_encode($response));
?>

我没有评论的名声,但有几件关于安全的事情:

1) 您刚刚公开发布了您的数据库用户名和密码。如果您的服务器曾经遭到破坏,此类信息将允许攻击者访问,以立即造成严重损害


2) 说到安全性和服务器危害,不要单独使用session_start(),因为它不安全。我建议您执行安全会话管理。有关信息和一些示例,请参阅。(请务必阅读最后一个链接中的评论部分以了解更多信息)

也始终发布页面的输出HTML(从浏览器中保存),这样我们就不必在心里编译PHP:)遗憾的是,它不全是英文的,但我想我们感兴趣的是
load\u poma\u results
函数吗?乍一看还可以。你能使用像Fiddler2或Chrome F12这样的工具来查看服务器响应并查看数据中是否有重复项吗?对不起,我没有告诉你们所有人,load_poma_结果用于边栏搜索,这可能会被删除,但我说的是这个搜索,例如,当我在页眉中搜索页面顶部的某个项目时,它正常工作,但当我单击Nema više rezultata时,这意味着没有更多的结果,一些项目重复,但一些不重复。
<?php

// start session
session_start();

// set header
header('content-type: application/json; charset=windows-1250');

// define constants
define("IS_AJAX_REQUEST", (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'));

// include article class
include '../../spraycan/class/Artikl.class.php';

// include mustache.php
include '../../lib/mustache/Mustache.php';
// instantiate mustache engine
$mustache = new Mustache_Engine();

// set template file
if(isset($_GET['type']) && $_GET['type'] != NULL && $_GET['type'] == "small")
    $template_file = "tpl.small.html";
else
    $template_file = "tpl.big.html";
// get template contents
$template = file_get_contents($template_file);

// connect to database
$mysqli = new mysqli("localhost", "opstanak_dgojak", "rtchri92", "opstanak_1");
mysqli_report(MYSQLI_REPORT_ERROR);

// fetch search query
$s = $_GET['s'];
$s = $mysqli->real_escape_string($s);
// explode search query to words
$words = explode(" ", $s);

// start SELECT
$query = "SELECT * FROM artikli INNER JOIN artikli_group ON artikli.ArtKonto = artikli_group.artGrKonto";
// start WHERE
$where = " WHERE";
$i = 0;

foreach($words as $word)
{
    // set replacements
    $scope = array("š", "đ", "ž","č","ć");
    $replace = array("Š","Đ","Ž","Č","Ć");

    // select first char
    $fc = substr($word,0,1);
    // select other chars
    $oc = substr($word,1);
    // transform first to upper
    $fcb = strtoupper($fc);
    $fcb = str_replace($scope, $replace, $fcb);
    // transform other to upper
    $ocl = strtolower($oc);
    $ocl = str_replace($replace, $scope, $ocl);

    // set normal word
    $word = $fcb.$ocl;
    // set lower word
    $word_lower = strtolower($word);
    $word_lower = str_replace($replace, $scope, $word_lower);
    // set upper word
    $word_upper = strtoupper($word);
    $word_upper = str_replace($scope, $replace, $word_upper);

    if(strlen($word) > 3)
        $word_many = substr($word, 0, -1);
    else
        $word_many = $word;
    // setup where part of query
    if($i == 0)
        $where .= ' (artNaziv LIKE "%'.$word.'%" OR artNaziv LIKE "%'.$word_lower.'%" OR artNaziv LIKE "%'.$word_many.'%" OR artNaziv LIKE "%'.$word_upper.'%")';
    else
        $where .= ' AND (artNaziv LIKE "%'.$word.'%" OR artNaziv LIKE "%'.$word_lower.'%" OR artNaziv LIKE "%'.$word_many.'%" OR artNaziv LIKE "%'.$word_upper.'%")';
    $i++;
}

// update WHERE
if(isset($_GET['since']) && $_GET['since'] != NULL)
    $where .= " AND ID_artikl < ".$_GET['since'];
// set ORDER
$order = " ORDER BY artKn ASC";
// set LIMIT
if($_GET['type'] != "small") {
    $limit = " LIMIT 15";
} else {
    $limit = " LIMIT 5";
}
if($_GET['type'] != "small") {
    // merge SELECT part with the WHERE part for total results count
    $query_num = $query.$where.$order;
    $result_num = $mysqli->query($query_num);
    $total_results_num = $result_num->num_rows;
} else {
    $total_results_num = 0;
}

// merge SELECT part with the WHERE part for fetching results
$query = $query.$where.$order.$limit;

// instantiate response
$response = array('html' => array(), 'after' => '', 'results' => 0, 'total' => $total_results_num, 'first_ID' => "0", 'last_ID' => "0", 'end' => false);


// process query
$result = $mysqli->query($query);
$response['results'] = $result->num_rows;

if($response['results'] < 15)
{
    $response['end'] = true;
    if($template_file == '')
        $response['after'] = "<div id='load_more' class='not_loading'>Učitaj više rezultata.</div>";
    else
        $response['after'] = "<div id='load_all'>Svi rezultati za pojam <strong>".$s."</strong>.</div>";
}
else
{
    if($template_file == '')
        $response['after'] = "<div id='load_more' class='the_end'>Nema više rezultata.</div>";
    else
        $response['after'] = "<div id='load_all'>Svi rezultati za pojam <strong>".$s."</strong>.</div>";

}

$i = 0;
while($row = $result->fetch_assoc())
{
    if($i == 0)
        $response['first_ID'] = $row['ID_artikl'];
    $row['is_ajax_requested'] = true;
    if($_GET['type'] == 'small')
        $row['artNaziv'] = substr(iconv('ISO-8859-2', 'UTF-8', $row['artNaziv']),0,30).'...';
    else
        $row['artNaziv'] = iconv('ISO-8859-2', 'UTF-8', $row['artNaziv']);
    $row['artInfo'] = iconv('ISO-8859-2', 'UTF-8', $row['artInfo']);
    $row['artGrNaziv'] = iconv('ISO-8859-2', 'UTF-8', $row['artGrNaziv']);
    array_push($response['html'], $mustache->render($template, new Artikl($row)));
    $response['last_ID'] = $row['ID_artikl'];
    $i++;
}

$pattern = array("\u010d","\u010c","\u009a","\u008a","\u009e","\u008e","\u0111");
$replacement = array("č","Č","š","Š","ž","Ž","đ");

echo str_replace($pattern, $replacement, json_encode($response));

?>