Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z kodem Dynamicznie sprawdzającym obecność adresu w bazie
gburhiphop
post 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
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 16:13:14
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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;

Ten post edytował trueblue 12.07.2016, 16:28:20


--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 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
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 18:41:34
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
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.


--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 12.07.2016, 19:04:11
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.07.2016

Ostrzeżenie: (0%)
-----


https://drive.google.com/open?id=0BzrqwyGix...QzduaGJIU3BfVFE

A funkcje jsondecode encode muszą być?
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 19:15:52
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Pokaż aktualny kod php.

JSON w ogóle tu nie jest potrzebny.


--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 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

  1. <?php
  2. $email=$_POST['em'];
  3.  
  4. $polaczenie=mysql_connect('localhost','root','');
  5. mysql_select_db('uzytkownicy');
  6.  
  7.  
  8. $uchwyt = mysql_query("SELECT * FROM uzytkownicy WHERE email_uzytkownika = '$email'") or die(mysql_error());
  9. $row = mysql_num_rows($uchwyt);
  10.  
  11.  
  12. if ($row == 1){
  13. echo '1';
  14. }
  15.  
  16. elseif ($row == 0){
  17. echo '0';
  18. }
  19. ?>


Ale i tak zawsze zwraca 1 z pierwszego warunku

Ten post edytował gburhiphop 12.07.2016, 19:25:00
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 19:25:45
Post #8





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
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:
  1. data: "em=grzesiek.burdacki@gmail.com",


--------------------
Go to the top of the page
+Quote Post
viking
post 12.07.2016, 19:26:50
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
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.


--------------------
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 19:32:30
Post #10





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
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.


--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 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:

  1. <?php
  2. $email=$_POST['em'];
  3. $polaczenie=mysql_connect('localhost','root','');
  4. mysql_select_db('uzytkownicy');
  5.  
  6.  
  7. $uchwyt = mysql_query("SELECT * FROM uzytkownicy WHERE email_uzytkownika = '$email'") or die(mysql_error());
  8. $row = mysql_num_rows($uchwyt);
  9.  
  10.  
  11. if ($row == 1){
  12. echo '1';
  13. }
  14.  
  15. elseif ($row == 0){
  16. echo '0';
  17. }
  18. ?>


Jak robię w JQ $.post to jest blad PHP undefined index: em

Ten post edytował gburhiphop 12.07.2016, 19:58:25
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 19:54:41
Post #12





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
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.


--------------------
Go to the top of the page
+Quote Post
gburhiphop
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");
}
});
});
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 20:03:26
Post #14





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
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.



--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 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
Go to the top of the page
+Quote Post
trueblue
post 12.07.2016, 20:16:27
Post #16





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
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'


--------------------
Go to the top of the page
+Quote Post
gburhiphop
post 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
Go to the top of the page
+Quote Post
viking
post 13.07.2016, 06:28:25
Post #18





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A zajrzales do dokumentacji? Masz w czerwonej ramce od lat wiszacy komunikat. Mysqli albo pdo.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:10