Cautare cu afisare cuvinte apropiate relevante
Scris: Sâm Oct 13, 2012
sSalut,
Cum as putea sa fac ca script de cautare cu ajax care sa faca urmatoarele:
Cel mai bun exemplu este la control panel la cautare, atunci cand scriu ceva imi raman inconitele care contin ceea ce am scris.
Deci ceea ce as dori si nu stiu sa fac este in felul urmator:
Am un select cu urmatoarele afisari:
Acesta lista este tot timpul cat timp nu am scris nimic in casuta de cautare, iar de exemplu scriu "a" si lista sa se actualizeze automat cu ajax si ar trebui sa apara:
Am incercat dar nu stiu.
Am scriptul acesta:
index.php
cautare.php
Care este functional 85% si cauta in functie de ceea ce aleg eu.
Iar al doilea index.php:
refresh.php
Al doilea script imi afiseaza in timp real ultima data introdusa in baza de date fara refresh.
Cum le combin aceste 2 scripturi ca sa imi dea ceea ce doresc eu.
Cum am zis ceea ce vreau este ca sa nu imi apara rezultatele cand scriu ceva ci sa imi ramana in functie de ceea ce scriu eu.
Sper ca ati inteles.
Astept raspuns.
Multumesc anticipat.
Cu stima Trif
Cum as putea sa fac ca script de cautare cu ajax care sa faca urmatoarele:
Cel mai bun exemplu este la control panel la cautare, atunci cand scriu ceva imi raman inconitele care contin ceea ce am scris.
Deci ceea ce as dori si nu stiu sa fac este in felul urmator:
Am un select cu urmatoarele afisari:
Cod: Selectaţi tot
a
aa
ab
bb
ba
bcc
Cod: Selectaţi tot
aa
ab
ba
Am scriptul acesta:
index.php
Cod: Selectaţi tot
<script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
<script type="text/javascript"><!--
var rbtn_v = ''; // aici se adauga valoarea initiala, transmisa daca nu e buton bifat
$(document).ready(function() {
$("input:radio[name=rbtn]").click(function() {
rbtn_v = $(this).val();
});
});
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
}
else {
var data = 'queryString='+$('#inputString').val()+ '&rbtn='+rbtn_v;
// alert(data); // verifica ce date preia si trimite javascript
$.post('cautare.php', data, function(response){
// alert(response); // ca sa se verifice datele primite
if(data.length > 0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(response);
}
});
return false; // required to not open the page when form is submited
}
}
//-->
</script>
Cod: Selectaţi tot
<form action="cautare.php" method="post" onsubmit="lookup(); return false;">
| <input type="radio" name="rbtn" value="" >Toate
| <input type="radio" name="rbtn" value="c">Copii
</form>
<form id="search" name="search">
<input type="text" size="50" name="term" value="" placeholder="Scrie numele cantarii" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />
</form> <br><br>
<div class="suggestionsBox" id="suggestions" style="display: none;">
<div class="suggestionList" id="autoSuggestionsList">
</div>
</div>
cautare.php
Cod: Selectaţi tot
$db = new mysqli('localhost', 'root' ,'', 'cantaric_ppt');
if(!$db) {
echo 'Nu se poate conecta la Baza de date!';
} else {
if(isset($_POST['queryString'])) {
$queryString = $db->real_escape_string($_POST['queryString']);
if(strlen($queryString) >0) {
$categoria = isset($_POST['rbtn']) ? $_POST['rbtn'] : 'd';
$query = $db->query("SELECT * FROM cantari_ppt WHERE categoria='".$categoria."' AND aprobare = 1 AND denumire LIKE '$queryString%' ORDER BY denumire LIMIT 10");
if($query) {
while ($result = $query ->fetch_object()) {
echo '<img src="powerpoint_icon.png" width="24" height="24"> <a href="localhost/cautare/index.php?urlf='.$result->urlf.'">'.$result->denumire.'</a> <br>';
}
} else {
echo 'A aparut o problema. nu este query';
}
} else {
}
}
else {
echo 'Nu s-a trimis nimic de la index!';
}
}
Iar al doilea index.php:
Cod: Selectaţi tot
<script language="javascript" src="jquery-1.2.6.min.js"></script>
<script language="javascript" src="jquery.timers-1.0.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var j = jQuery.noConflict();
j(document).ready(function()
{
j(".refresh").everyTime(1000,function(i){
j.ajax({
url: "refresh.php",
cache: false,
success: function(html){
j(".refresh").html(html);
}
})
})
});
j(document).ready(function() {
j('#post_button').click(function() {
$text = $('#post_text').val();
j.ajax({
type: "POST",
cache: false,
url: "save.php",
data: "text="+$text,
success: function(data) {
alert('data has been stored to database');
}
});
});
});
j('.refresh').css({color:"#000"});
});
</script>
Cod: Selectaţi tot
<div class="refresh">
</div>
Cod: Selectaţi tot
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("cantaric_ppt", $con);
// Cod de test afisare un continut pt. cei autentificati si altul pt. vizitatori
$result = mysql_query("SELECT * FROM cantari_ppt
INNER JOIN categorie
ON cantari_ppt.categoria = categorie.cheie
ORDER BY id_c DESC limit 10");
echo '<table align = center width=70% border="1">';
while($row = mysql_fetch_array($result))
{
echo '<tr><td><img src="powerpoint_icon.png" width="24" height="24"> <a href="index.php?urlf='.$row['urlf'].'">'.$row['denumire'].'</a><div align="right">' . $row['denumire_categorie'].' </td> </tr>';
echo '</div>';
}
echo '
</table>';
mysql_close($con);
Cum le combin aceste 2 scripturi ca sa imi dea ceea ce doresc eu.
Cum am zis ceea ce vreau este ca sa nu imi apara rezultatele cand scriu ceva ci sa imi ramana in functie de ceea ce scriu eu.
Sper ca ati inteles.
Astept raspuns.
Multumesc anticipat.
Cu stima Trif