Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rejestracja na kod, łączenie z baza
Damiian
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Witam ponownie:)

Nie wiem jak to opisać, może przejdę odrazu do rzeczy jak to ma wyglądać smile.gif
1. Ja dodaje unikalny kod do bazy danych:
  1. mysql_query("INSERT INTO `test` (`id`, `imie`, `haslo` `kod`) VALUES (null, '','', '$kod')") or die(mysql_error());


2. Użytkownik wpisuje nick, hasło, oraz kod w formularzu ( mam )
3. Przekierowuje go na skrypt sprawdzający:
  1. <form action="check.php" method="post">

4. Skrypt sprawdzał by czy kod podany przez usera znajduje sie w bazie,
jeśli tak to zeby potem sprawdzał czy koło kodu są dwa pola wolne w bazie (nick i hasło)
Jesli sa wolne to zeby skrypt dopisal do nich Nick i hasło
a jesli sa zajete to ma mu sie pokazać błąd ze dany kod juz jest uzywany przez inna osobe.

Chodzi mi o takie unikalne kody, które można użyć raz, i na jednego użytkownika.

Wiecie jak takie cos wykonać?


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl2.php.net/manual/en/function.uniqid.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Damiian
post
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Dodawac moge sam, bo to bedzie tylko pare kodów.

Głównie chodzi mi o:

Kod
4. Skrypt sprawdzał by czy kod podany przez usera znajduje sie w bazie,
jeśli tak to zeby potem sprawdzał czy koło kodu są dwa pola wolne w bazie (nick i hasło)
Jesli sa wolne to zeby skrypt dopisal do nich Nick i hasło
a jesli sa zajete to ma mu sie pokazać błąd ze dany kod juz jest uzywany przez inna osobe.




Ten post edytował Damiian 2.06.2010, 12:33:23


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale konkretnie w czym problem? Z bazy rekordy nie potrafisz pobrac? Poprostu nie rozumiem gdzie masz problem.

pobierasz rekord z bazy. Jako warunek wyszukiwania dajesz kod.
jesli rekord nie zostanie zwrocony, znaczy ze kodu takiego w bazie nie ma (pomijam sytuacje gdy bedzie jakis blad bazy)
jesli rekord zostanie zwrocony, to patrzysz czy ten rekord ma te imie czy nie i na tej podstawie walisz odpowiedni komunikat.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Damiian
post
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Chodzi o takie cos:


  1. $result = mysql_query("SELECT kod FROM test WHERE kod = '$Kood'");
  2. $num = @mysql_num_rows($result);
  3. if ($num> 0) {
  4. //( znalazł że kod jest to tabeli)
  5. //- Zobaczył czy obok kodu są dwa pola wolne na nick i hasło
  6. //jeśli są to żeby dopisał tam te dane co podał uzytkownik, a jeśli są już zajete to żeby wyswietlil błąd ze kod jest //zajety przez inna osobę:
  7. //Tak jest na dodawanie, lecz nie wiem jak dopisac do juz istniejącej.
  8. //Chciałem zrobić update ale wtedy potrzebuje id, a to ma sie robic automatycznie do kazdego z kodów.
  9. mysql_query("INSERT INTO `test` (`id`, `imie`, `haslo` `kod`) VALUES (null, '$Nick','$hasło', '')") or die(mysql_error());
  10. //a mi chodzi o dopisanie do danego kodu nicku i hasła, a jesli juz istnieje to wyswietlenie komunikatu o błedzie
  11. }
  12. else
  13. {
  14.  
  15. }
  16. {


Trudno to opisać ;p


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ale czemu selectem pobierasz tylko KOD? Czemu nie pobierzesz wszystkich danych włącznie z ID, i nazwiskiem?
Wowczas od razu w php mozesz sprawdzic czy jest to imie przy kodzie czy nie. Wowczas mozesz zrobic update bo masz to nieszczęsne ID.

Teraz kombinujesz jak kon pod górkę. smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Damiian
post
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Ponieważ dopiero zaczynam z Php i myślę 'prosto' a nie tak jak przetwarzałby to kod ^^

A Ty jak byś to wykonał zeby było najlatwiej i najprosciej? smile.gif


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A Ty jak byś to wykonał zeby było najlatwiej i najprosciej?
No przecież ci napisalem
Cytat
pobierasz rekord z bazy. Jako warunek wyszukiwania dajesz kod.
jesli rekord nie zostanie zwrocony, znaczy ze kodu takiego w bazie nie ma (pomijam sytuacje gdy bedzie jakis blad bazy)
jesli rekord zostanie zwrocony, to patrzysz czy ten rekord ma te imie czy nie i na tej podstawie walisz odpowiedni komunikat.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Damiian
post
Post #9





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Umiem zrobić tylko coś takiego:
  1. $query = mysql_query("SELECT
  2. *
  3. FROM
  4. `test`
  5. ");
  6. while($row = mysql_fetch_array($query))
  7. {
  8. echo $row['email'];
  9. }


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
phpion
post
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zainteresuj się klauzulą WHERE - szczegóły i przykłady w dokumentacji.
Go to the top of the page
+Quote Post
Damiian
post
Post #11





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


A jak mam dodać np do istniejącego już emailu, imię?

Zrobilem testowy skrypt:

  1. <?php
  2.  
  3. $imie = $_POST['imie'];
  4.  
  5. $email = $_POST['email'];
  6.  
  7.  
  8. $connection = mysql_connect('mysql.cba.pl', 'xxx', 'xxx')
  9. or die('Brak połączenia z serwerem MySQL');
  10. $db = mysql_select_db('xxxxx', $connection)
  11. or die('Nie mogę połączyć się z bazą danych');
  12.  
  13.  
  14. $nick = mysql_real_escape_string($imie);
  15. $mail = mysql_real_escape_string($email);
  16. $resultn = mysql_query("SELECT imie FROM test WHERE imie IS NULL");
  17. $resultm = mysql_query("SELECT email FROM test WHERE email = '$mail'");
  18.  
  19. $numn = @mysql_num_rows($resultn);
  20. $numm = @mysql_num_rows($resultm);
  21.  
  22. if ($numn== 0 & $numm> 0) {
  23. $zapytanie = "UPDATE `test` SET `imie` = '$nick' WHERE `email`='$mail'";
  24. $idzapytania = mysql_query($zapytanie);
  25. echo 'dodano';
  26.  
  27. }
  28. else
  29. {
  30. echo ' nie udalo sie';
  31. }
  32.  
  33.  
  34. mysql_close($connection);
  35.  
  36. ?>



Teraz jest ok, dodaje sie gdy jest puste pole w nick, lecz jak jest pełne to dalej przekierowuje na dodano.
Tylko teraz nie wiem jak zrobić ze gdy w bazie pod adresem nick znajduje sie jakies imie to żeby wyswielilo komunikat

Pomoże ktoś?

Ten post edytował Damiian 3.06.2010, 10:42:53


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
tehaha
post
Post #12





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


lepiej odpal sobie jakiś podstawowy kurs, bo wszystko tu kompletnie mieszasz
1. nie wiem po co te 2 zapytania skoro wygląda na to że dotyczą tego samego rekordu
  1. $resultn = mysql_query("SELECT imie FROM test WHERE imie IS NULL");
  2. $resultm = mysql_query("SELECT email FROM test WHERE email = '$mail'");


możesz przecież zrobić z tego jedno:
2.
  1. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());
  2. if(mysql_num_rows($result) > 0)
  3. {
  4. echo "taki rekord już istnieje";
  5. }


wysyłasz zapytanie -> jeżeli lista zwróconych rekordów jest większa od 0, to taki rekord istnieje
3. wszystkie rekordy powinny mieć id (INT11)

4. wywal znak @
5. po mysql_query() zawsze dawaj or die(mysql_error());
6. jeżeli dasz samo echo dodano, to przecież ono zawsze się wyświetli, więc wyświetlaj je tylko wtedy, kiedy mysql_query() zwróci: true
Go to the top of the page
+Quote Post
Damiian
post
Post #13





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Dziekuje za odpowiedz, Ps. PM.


Już w nocy próbowałem łączyć lecz to nic nie daje.
Postaram się opisać to najdokładniej jak mogę, co ma wykonywać skrypt:
Osoba wpisuje Nick i Email w formularzu (nick na razie nie ważny)
Klika submit.
Skrypt łączy sie z bazą i ma sprawdzić:
Czy email zgadza sie z tym co podal uzytkownik w polu email,
Czy pole nick jest puste...
Jesli email sie zgadza i pole nick w bazie jest puste to ma dodać dane do bazy
a jesli email lub pole nick jest zajete to zeby wyswietlal stosowny komunikat

  1. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());
  2.  
  3. if(mysql_num_rows($result)> 0)
  4.  
  5. {
  6.  
  7. echo "taki rekord już istnieje";
  8.  
  9. }
  10. else
  11. {
  12. echo "dodano";
  13. }
  14.  
  15. mysql_close($connection);
  16.  
  17. ?>


I mam w bazie:




I twoj skrypt nie waznie czy wpisze:
tester@o2.pl
czy
totest@o2.pl

Zawsze pokazuje dodano. sad.gif


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
tehaha
post
Post #14





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


a zastanowiłeś się co robi ten skrypt, który tu przedstawiłeś?
Go to the top of the page
+Quote Post
Damiian
post
Post #15





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


  1. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());


Wybierz imie, email w tabeli test gdzie imie jest puste a email to email podany w formularzu...

  1. if(mysql_num_rows($result)> 0)


Kiedy rezulatat bedzie inny to wyswietl:

taki rekord już istnieje

a jesli wszystko bedzie ok, to:

dodano


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
tehaha
post
Post #16





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


to ja napiszę moją interpretację linijek 3-13:
- jeżeli liczba zwróconych rekordów jest większa niż 0 - wyświetl: "taki rekord już istnieje", jeżeli liczba zwróconych rekordów nie jest większa niż 0 wyświetl: "dodano"

nie widzę w tym sensu, chyba komunikat typu "dodano" będziesz chciał wyświetlić po poprawnym dodaniu rekordu, a nie w momencie kiedy zapytanie nie zwróci żadnego rekordu
Go to the top of the page
+Quote Post
Damiian
post
Post #17





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Zrobiłem to tak:

  1. $nick = mysql_real_escape_string($imie);
  2. $mail = mysql_real_escape_string($email);
  3.  
  4.  
  5. $result = mysql_query("SELECT imie, email FROM test WHERE imie IS NULL AND email = '$email'") or die(mysql_error());
  6.  
  7. if(!mysql_num_rows($result)> 0)
  8.  
  9. {
  10.  
  11. $zapytanie = "UPDATE `test` SET `imie` = '$nick' WHERE `email`='$mail'";
  12. $idzapytania = mysql_query($zapytanie);
  13. }
  14.  
  15.  
  16.  
  17. mysql_close($connection);


i gdy pole nick jest puste to sie dodaje.
teraz jak zrobic ze gdy pole nick jest zajete to wyswietlic komunikat?
Próbowalem z else i z if(mysql_num_rows($result)> 0)


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
gigzorr
post
Post #18





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


sprawdzanie to mozna zrobic tak :
  1. $sprczegostam = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM tabela WHERE user='".$user."' LIMIT 1"));
  2. if ($sprczegostam[0] >= 1)
  3. {
  4. echo "Taki login juz istnieje.";
  5. }


Ten post edytował gigzorr 3.06.2010, 14:56:24
Go to the top of the page
+Quote Post
Damiian
post
Post #19





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Eh, chyba musze porzucic prace nad ta rejestracja...

Nie umiem. ;/


--------------------
Jeśli pomogłem, daj: Pomógł.
Go to the top of the page
+Quote Post
tehaha
post
Post #20





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


masz problemy ponieważ brakuje Tobie fundamentalnej wiedzy i pomimo dużych chęci, nie bardzo wiesz co robisz, zacznij od przerobienia kursu php,a potem możesz już dowolnie realizować swoje wizje, tu masz dużo kursów - Temat: linkiKursy dla pocztkujcych, no niestety ale żeby cokolwiek zrobić w php trzeba mieć opanowane podstawy i tego etapu nie przeskoczysz
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 22.08.2025 - 04:41