chodzi o dynamiczne sprawdzanie, czy wpisany email jest już w bazie. Kod wykonuje się w reakcji na wydarzenie blur. Problem jest raczej z przesyłem /odbiorem danych. Namęczyłem się i nie wiem o co chodzi
JQuery
Twój kod php nie zwraca wartości zmiennej $dostep.
Zapoznaj się z warunkami w zapytaniach SQL - zamiast przeszukiwać wszystkie wiersze, można to zrobić w jednym zapytaniu.
Obecnie nawet jeśli znajdziesz jakiś wiersz, który spełnia warunek, to jeśli nie będzie to ostatni wiersz i nie masz duplikatów emaili w tabeli, to przy sprawdzaniu kolejnego nadpiszesz sobie wartość zmiennej $dostep.
JSON zwracasz poprzez echo, nie return;
Zwraca 1. Zawsze
Może zwracać true lub false, na pewno nie 1.
I na pewno nie przy odczycie tego poprzez JS, bo poprzez return w PHP nie odczytasz odpowiedzi w JS.
https://drive.google.com/open?id=0BzrqwyGixutNQzduaGJIU3BfVFE
A funkcje jsondecode encode muszą być?
Pokaż aktualny kod php.
JSON w ogóle tu nie jest potrzebny.
Teraz to już totalnie zmieniłem kod php
<?php $email=$_POST['em']; $polaczenie=http://www.php.net/mysql_connect('localhost','root',''); http://www.php.net/mysql_select_db('uzytkownicy'); $uchwyt = http://www.php.net/mysql_query("SELECT * FROM uzytkownicy WHERE email_uzytkownika = '$email'") or http://www.php.net/die(http://www.php.net/mysql_error()); $row = http://www.php.net/mysql_num_rows($uchwyt); if ($row == 1){ http://www.php.net/echo '1'; } elseif ($row == 0){ http://www.php.net/echo '0'; } ?>
Dobrze, że o tym wspomniałeś.
Pewnie dlatego zwraca zawsze 1, bo przesyłasz zawsze ten sam email:
data: "em=grzesiek.burdacki@gmail.com",
Skoro to jest json to dokładnie w takim formacie ma być odpowiedź. Sprawdź sobie błędy w konsoli. Poza tym nie używa się już rozszerzenia mysql.
viking,
obecnie używany jest drugi z podanych kodów w JS.
Swoją drogą używając getJSON, można również odbierać plain text.
Dalej jest problem.PHHP nic nie zwraca. Aktualny kod JS:
<?php $email=$_POST['em']; $polaczenie=http://www.php.net/mysql_connect('localhost','root',''); http://www.php.net/mysql_select_db('uzytkownicy'); $uchwyt = http://www.php.net/mysql_query("SELECT * FROM uzytkownicy WHERE email_uzytkownika = '$email'") or http://www.php.net/die(http://www.php.net/mysql_error()); $row = http://www.php.net/mysql_num_rows($uchwyt); if ($row == 1){ http://www.php.net/echo '1'; } elseif ($row == 0){ http://www.php.net/echo '0'; } ?>
Tym razem używasz getJSON, które wysyła żądanie metodą GET, a odbierasz POST.
Albo odbieraj POST, albo użyj drugiego kodu JS, gdzie wysyłałeś POST.
Jak robię w JQ $.post to jest blad PHP undefined index: em
$(".email").on('blur', function() {
var dostep;
var email = $(this);
var em=email.val();
$.post('rejestracja_sprawdzanie.php', em, function(dostep){
alert( "Odp. od PHP: " + dostep );
if(dostep==1){
$(".komunikat21").html("<div class='kom'>ten email jest już w bazie danych</div>");
email.removeClass("powodzenie").addClass("niepowodzenie");
}
else{
email.removeClass("niepowodzenie").addClass("powodzenie");
$(".komunikat2").text("a");
}
});
});
Nie wysyłasz w ogóle zmiennej em.
Zobacz jak to robiłeś wcześniej.
Bez sensu, bo w ten sposób kółko zataczasz.
Ale jeśli wyślę {em:'ema'} :
var em;
var email = $(this);
var ema=email.val();
$.post('rejestracja_sprawdzanie.php', {em:'ema'}, function(dostep){}
To będą to dane JSON
To będzie obiekt. Sprawdź jak to działa w połączeniu php. Zobacz co dostaniesz w $_POST.
A jeśli masz obawy, to wyślij string: 'ema=blabla@blablabla.com'
{em:ema} Działa Dzięki
A co mówiłeś że rozszerzenia mysql sie już nie uzywa. Czyli co się używa
A zajrzales do dokumentacji? Masz w czerwonej ramce od lat wiszacy komunikat. Mysqli albo pdo.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)