Problem z kodem Dynamicznie sprawdzającym obecność adresu w bazie |
Problem z kodem Dynamicznie sprawdzającym obecność adresu w bazie |
12.07.2016, 16:01:27
Post
#1
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
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 CODE var dostep; var email = $(this); var emaildata=email.val(); var em={em:emaildata}; $.getJSON('rejestracja_sprawdzanie.php', em, function(dostep){ if(dostep==true){ $(".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"); } }); }); PHP CODE <?php $ema=$_POST['em']; $email=json_decode($ema); echo $email; $polaczenie=mysql_connect('localhost','root',''); mysql_select_db('uzytkownicy'); $zap_wysw_emaile="SELECT * FROM uzytkownicy"; $wynik_z_wysw_emaili=mysql_query($zap_wysw_emaile); $i=0; while ($wiersz_email = mysql_fetch_array($wynik_z_wysw_emaili)){ if($ema==$wiersz_email['email_uzytkownika']){ $dostep=true; } else{ $dostep=false; } $i++; } json_encode($dostep); return $dostep; ?> w JQUery próbowałem też np tak: CODE var dostep; var email = $(this); var emaildata=email.val(); var em={em:emaildata}; $.ajax({ type: "POST", url: "rejestracja_sprawdzanie.php", data: "em=grzesiek.burdacki@gmail.com", success: function(dostep){ alert( "Odp. od PHP: " + dostep ); } Zwracało adres email, lub nic w zależności od tego jak ie wersje tego kodu miałem. Ma zwracać $dostep |
|
|
12.07.2016, 16:13:14
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
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; Ten post edytował trueblue 12.07.2016, 16:28:20 -------------------- |
|
|
12.07.2016, 18:27:08
Post
#3
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
Zwraca 1. Zawsze
|
|
|
12.07.2016, 18:41:34
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
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. -------------------- |
|
|
12.07.2016, 19:04:11
Post
#5
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
|
|
|
12.07.2016, 19:15:52
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Pokaż aktualny kod php.
JSON w ogóle tu nie jest potrzebny. -------------------- |
|
|
12.07.2016, 19:23:09
Post
#7
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
Teraz to już totalnie zmieniłem kod php
Ale i tak zawsze zwraca 1 z pierwszego warunku Ten post edytował gburhiphop 12.07.2016, 19:25:00 |
|
|
12.07.2016, 19:25:45
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Dobrze, że o tym wspomniałeś.
Pewnie dlatego zwraca zawsze 1, bo przesyłasz zawsze ten sam email:
-------------------- |
|
|
12.07.2016, 19:26:50
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 373 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
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.
-------------------- |
|
|
12.07.2016, 19:32:30
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
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. -------------------- |
|
|
12.07.2016, 19:52:04
Post
#11
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
Dalej jest problem.PHHP nic nie zwraca. Aktualny kod JS:
CODE $(".email").on('blur', function() { var dostep; var email = $(this); var em=email.val(); $.getJSON('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"); } }); }); PHP:
Jak robię w JQ $.post to jest blad PHP undefined index: em Ten post edytował gburhiphop 12.07.2016, 19:58:25 |
|
|
12.07.2016, 19:54:41
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (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. -------------------- |
|
|
12.07.2016, 20:00:22
Post
#13
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
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"); } }); }); |
|
|
12.07.2016, 20:03:26
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
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. -------------------- |
|
|
12.07.2016, 20:14:15
Post
#15
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
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 |
|
|
12.07.2016, 20:16:27
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 782 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
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' -------------------- |
|
|
12.07.2016, 20:23:52
Post
#17
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 12.07.2016 Ostrzeżenie: (0%) |
{em:ema} Działa Dzięki
A co mówiłeś że rozszerzenia mysql sie już nie uzywa. Czyli co się używa |
|
|
13.07.2016, 06:28:25
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 373 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
A zajrzales do dokumentacji? Masz w czerwonej ramce od lat wiszacy komunikat. Mysqli albo pdo.
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 25.09.2024 - 17:56 |