Mam taką zagwozdkę: zrobiłem formularz sprawdzający czy dany login już istnieje w bazie danych i wyświetlający informację na bieżąco po wprowadzeniu znaku (keyup).
AJAXem wysyłam posta do kontrolera url: "
register/checkLogin",
$(function()
{
$('#username').keyup(function() {
$("#status").html('<img src="public/img/ajax-loader.gif"> Sprawdzanie dostępności.');
clearTimeout($.data(this, 'timer'));
var wait = setTimeout(search, 600);
$(this).data('timer', wait);
});
function search() {
var username = $("#username").val();
var msgbox = $("#status");
if(username.length > 4)
{
$("#status").html('Sprawdzanie dostępności.');
$.ajax({
type: "POST",
url: "register/checkLogin",
data: "username="+ username,
success: function(msg){
$("#status").ajaxComplete(function(event, request){
if(msg == 'OK')
{
$("#username").removeClass("red");
$("#username").addClass("green");
msgbox.html('<img src="yes.png"> <font color="Green"> Dostępny</font>');
}
else
{
$("#username").removeClass("green");
$("#username").addClass("red");
msgbox.html(msg);
}
});
}
});
}
else
{
$("#username").addClass("red");
$("#status").html('<font color="#cc0000">Za mało znaków</font>');
}
return false;
}
});
W kontrolerze mam funkcję:
public function checkLogin() {
'login' => $_POST['username']
);
$this->model->checkLogin($data);
}
W modelu:
public function checkLogin($data) {
if (isset($data['login'])) { $sth = $this->db->selectOne('SELECT userId FROM user WHERE login = :login', array( ':login' => $data['login']
));
if ($sth) {
echo '<span style="color: #cc0000;"><strong>' . $data['login'] . '</strong> jest już zajęty.</span>'; } else {
}
}
}
W modelu wywołując print_r($sth) daje taki efekt dla zajętego loginu: Array ( [userId] => 6 ). Dla wolnego nie zwraca nic.
Nie podoba mi się, że w modelu mam umieszczony ten fragment:if ($sth) {
echo '<span style="color: #cc0000;"><strong>' . $data['login'] . '</strong> jest już zajęty.</span>'; } else {
}
Tylko nie wiem gdzie mam go wrzucić i jak przekazać odpowiednio? Do widoku? Do kontrolera? Czy może, wcale to nie jest złe i powinno być to w modelu? W widoku mam jedynie
<input id="username" name="username" type="text" /> <span id="status"> </span>
Gdyby mógł ktoś rzucić okiem i fachowo mnie oświecić jak to powinno się zrobić należycie, byłbym niezmiernie wdzięczny.