2010-10-23 13 views
0

J'ai travaillé sur un de mes projets PHP, et j'essaye d'ajouter une fonctionnalité qui indique à l'utilisateur si le nom d'utilisateur qu'il a entré dans un formulaire de registre est déjà pris lors de la mise à jour de l'entrée. En commençant cela, j'ai pensé que je savais comment coder ceci - mais j'ai rencontré quelques problèmes en cours de route.Comment (efficacement) utiliser jQuery pour faire correspondre la valeur d'une entrée avec une base de données?

Lorsque je poste les données dans mon script PHP, j'obtiens le «tout effacer». J'ai vérifié à deux reprises, ainsi que FireBugged les variables post-tous sont présents, et le serveur renvoie exactement comme prévu. J'ai inséré un champ de test dans ma base de données pour voir si cela fonctionne. Le nom dans la BD est «Cameron».

Maintenant, pour mon code.

function checkUsername() { 
    $.post(rootpath + "/inc/php/handlers/checkusername.php", { 
     submit: "submitted", 
     username: $('#username').val() 
    }, function (data) { 
     if (data = 'not_taken') { 

      $('#cui').html('<img src="' + rootpath + '/inc/images/icons/Checkmark-32.png" />'); 
     } 
     else { 
      $('#cui').html('<img src="' + rootpath + '/inc/images/icons/block-icon-32.png" width="32" height="32" />'); 
     } 
    }, "html"); 
} 

puis

<input type='text' name='username' id='username' onkeyup='checkUsername();' /> 

Dans ce cas, je souhaitais modifier le code HTML d'un div à celle d'une image. Mais ce que le code fait est de passer à l'image de coche (la première), quel que soit le retour (voir ci-dessous).

alt text

je croyais que c'était un problème avec la méthode que j'utilisé pour la mise à jour de la div, .html(). Mais j'ai alors découvert que, même si la première combinaison soumise était celle de la base de données (retournant 'prise'), la sortie serait toujours l'image de la coche.

J'ai besoin de l'image pour mettre à jour avec, évidemment, la bonne. Je suis à peu près sûr que ce n'est pas un problème de PHP car le script que j'ai mis en place retourne les données attendues.

Merci d'avance pour toute aide!

Répondre

2

Vous utilisez l'opérateur d'affectation au lieu de vérifier l'égalité dans votre condition:

if(data = 'not_taken') { 

devrait être

if(data == 'not_taken') { 
+0

Essayé cela aussi bien. – Cameron

0
function doAjaxPost(username) 
     { 

     var username= $('#username').val(); 


     $.ajax({ 
      type: "POST", 
      url: "/inc/php/handlers/checkusername.php", 
      data: "username="+username+, 
      success: function(resp){ 
      //alert($Msg); 
    }, 
     error: function(e){ 
      //alert($Msg); 
    } 
}); 
} 

dans checkusername.php

$SelectQuery=" select usename from userswhere usename='".$_POST['usename']."' "; 
        if($Row=$DB->Select($SelectQuery,'select_capacity',$Module)) 
        { 
         $select_record=1; 
        } 
        $sbval=mysql_num_rows($Row); 
        if($sbval>=1) 
        return "alreay exist"; 

Cela sera fait dans ce wa y. show finel a renvoyé le message en réponse div.

C'est une façon de faire. S'il vous plaît changer le code selon votre CMS, l'architecture, le cadre.

J'espère que cela vous aidera. acclamations :)

enter code here