2011-06-09 3 views
0

je suis en train d'obtenir une liste des noms de la table MySQL useing php et la fonction jQuery autocomplete, mais je ne reçois pas result.could vous aider plzproblème Autocomplete jQuery & php

ici est jQuery

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" 
    type="text/javascript"></script> 

<script language="javascript" type="text/javascript"> 
    function findmatch(str){ 
    if (str.length>0){ 
     $('#found').load('SelectQury.php?n='+str); 
    } 
    }//fun 
</script> 
</head> 

<body> 
    <div id="container"> 
    <input type="text" name="text" id="textfield" autocomplete="off"  
    onkeyup="findmatch(this.value);"/> 
    <div id="found" >non found</div> 
    </div> 

</body> 
</html> 

code php

if(isset($_POST['text'])){ 
    $s=$_POST['text']; 

$query="SELECT FROM student WHERE name LIKE '$s%'"; 
$result=mysql_query($query) or die ('Wrong query : ' . mysql_error()); 
$string=''; 
while($row = mysql_fetch_assoc($result)){ 
    $string.= $row['name']; 
} 
echo $string; 
}else{ 
    echo 'wrong GET keywoord'; 

}//ifisset 

Répondre

0

Deux problèmes:

1. you are sending the value as "GET" method `?n=` and accessing in the PHP code as `$_POST` 
2. the passed variable is `n` and not `text` 
3. error in mysql query 

Utilisez le code PHP suivant:

if(isset($_GETT['n'])){ 
    $s=$_GET['n']; 

    $query="SELECT * FROM student WHERE name LIKE '$s%'"; 
    $result=mysql_query($query) or die ('Wrong query : ' . mysql_error()); 
    $string=''; 
    while($row = mysql_fetch_assoc($result)){ 
     $string.= $row['name']; 
    } 
     echo $string; 
    }else{ 
    echo 'wrong GET keywoord'; 

} 
+0

merci maintenant je reçois cette erreur msg: Mauvaise requête: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'FROM étudiant WHERE nom LIKE a%' à la ligne 1 – Mary

0

Je pense que vous voulez que la fonction du serveur pour retourner le code HTML pour une liste plutôt qu'une seule chaîne qui est la concaténation des tous les noms des étudiants. Avez-vous utilisé un outil comme fiddler pour vérifier ce qui est envoyé et retourné par le serveur?

0

Il serait plus facile si vous pouvez utiliser $.getJSON pour simplifier que jQuery peut analyser rapidement que d'utiliser la fonction .load.

Puisque vous utilisez post il peut être fait de cette façon avec jQuery:

var inputName = $('input[name=text]').val(); 

$.post('SelectQury.php', { text: inputName }, function(response) 
{ 
    var nameBuild = ''; 
    for(i = 0; i < response.length; i++) 
    { 
     nameBuild += '<div class="row">' + response[i].name + '</div>'; 
    } 

    $(nameBuild).appendTo('#found'); 
}, 'JSON'); 

Si vous utilisez get, puis utilisez la $.getJSON en faisant ceci:

var inputName = $('input[name=text]').val(); 

$.getJSON('SelectQury.php', { name: inputName }, function(response) 
{ 
    var nameBuild = ''; 
    for(i = 0; i < response.length; i++) 
    { 
     nameBuild += '<div class="row">' + response[i].name + '</div>'; 
    } 

    $(nameBuild).appendTo('#found'); 
}); 

PHP :

Remplacer $ _POST par $ _GET si vous utilisez obtenir que le poste

if(isset($_POST['text'])) 
{ 
    $s = mysql_real_escape_string($_POST['text']); 

    $query = "SELECT FROM student WHERE name LIKE '$s%'"; 
    $result = mysql_query($query) or die ('Wrong query : ' . mysql_error()); 

    $string = array(); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     $string[] = array('name' => $row['name']); 
    } 

    echo json_encode($string); 
} 
else 
{ 
    echo 'wrong GET keywoord'; 
} 
0

C'est vraiment très simple. JQuery fait le gros du travail. Le problème est d'obtenir les données de php en javascript. Après cela, vous passez les données dans la fonction de saisie semi-automatique jquery

exemple:

var data = "<?php echo implode(",",$customer_list) ?>".split(","); 
    $("#CUSTOMER_NAME").autocomplete({source: data}); 

Voici un tableau de customer_list qui est mis dans le tableau de données javascript. Utilisez le sélecteur jquery dans le champ de saisie, puis ajoutez la fonction de saisie semi-automatique.

Espérons que cela aide