Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Sprawdzanie danych w bazie
kropamk
post 20.01.2012, 11:56:05
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


Witam.
Potrzebuję rady. Mam w bazie danych np kod o wartości 23917. Na stronie wpisuje ten sam kod i zwraca mi informacje, że kod został przyjęty. Jeżeli drugi raz go bym wpisał to zwróci mi już informacje, że kod został wykorzystany. Proszę o wskazówki jak to wykonać. Czy co z wartością boolean questionmark.gif
Go to the top of the page
+Quote Post
by_ikar
post 20.01.2012, 12:07:43
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Cytat
Czy co z wartością boolean


Z czym?

Normalnie, przed dodaniem wartości, najpierw wysyłasz do bazy zapytanie z wartością i sprawdzasz czy taka istnieje. Jeżeli istnieje, to komunikat.
Go to the top of the page
+Quote Post
Evinek
post 20.01.2012, 12:12:36
Post #3





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


Struktura:
ID | CODE | ACTIVE(czy jak tam chcesz)
Albo bez ID - ja osobiście wolę mieć.
Później po prostu robisz zapytanie i sprawdzasz czy istnieje kod w bazie.
Jeśli tak sprawdzasz ACTIVE.
->Jeżeli równe 0 - potwierdzenie
->Jeżeli równe 1 - błąd - kod był użyty.

@EDIT:
ACTIVE może być boolean albo INT - nie wiem co szybsze.


Ten post edytował Evinek 20.01.2012, 12:14:02
Go to the top of the page
+Quote Post
kropamk
post 20.01.2012, 12:37:32
Post #4





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


Coś takiego ?
  1. <?php
  2. // DEKLARACJA ZMIENNYCH Z FORMULARZA
  3. $kod = $_POST['kod'];
  4.  
  5. // sprawdzenie czy zmienne zostaly wprowadzone
  6. if($kod)
  7. {
  8. $duplicate = mysql_query("SELECT * FROM kody WHERE kod='".$_POST['kod']."'") or die('błąd');
  9. $num_rows = mysql_num_rows($duplicate);
  10.  
  11. // SPRAWDZA CZY KOD ISTNIEJE
  12.  
  13. if ($num_rows = true){
  14.  
  15. $select_active = mysql_query("SELECT * FROM kody WHERE active") or die('błąd');
  16. $active = mysql_num_rows($select_active);
  17.  
  18. if ($active = 0) {
  19.  
  20. $insertquery = "INSERT INTO kody active VALUES 1";
  21.  
  22. if (!mysql_query($insertquery)){
  23. die('Error: ' . mysql_error());
  24. }
  25.  
  26. echo' Jest ok';
  27.  
  28. } else {
  29. echo' Kod został już wykorzystany"';
  30. }
  31. } else {
  32. echo' Taki kod nie istnieje';
  33. }
  34.  
  35. $db->db_close_connection();
  36. }
  37. ?>


Ten post edytował kropamk 20.01.2012, 12:46:45
Go to the top of the page
+Quote Post
Evinek
post 20.01.2012, 12:59:12
Post #5





Grupa: Zarejestrowani
Postów: 280
Pomógł: 46
Dołączył: 23.03.2010

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


Lepiej w jednym zapytaniu.

  1. if($kod)
  2. {
  3. $duplicate = mysql_query("SELECT * FROM kody WHERE kod=$kod) or die(mysql_error());
  4.  
  5. if (mysql_num_rows($duplicate) > 0){
  6. $dane= mysql_fetch_array($duplicate);
  7. if ($dane['active'] == 0) {
  8.  
  9. $insertquery = "UPDATE kody SET active=1 WHERE kod=$kod";
  10. mysql_query($insertquery) or die(mysql_error());
  11.  
  12. echo' Jest ok';
  13.  
  14. } else {
  15. echo ' Kod został już wykorzystany';
  16. }
  17. } else {
  18. echo' Taki kod nie istnieje';
  19. }
  20.  
  21. $db->db_close_connection();
  22. }
  23. ?>


Powinno działać lecz nie musi.
Pisane z palca bez testowania. Mogą być błędy. Jeśli jakieś będą poprawię później albo niech ktoś poprawi.
Pozdrawiam

Ten post edytował Evinek 20.01.2012, 12:59:54
Go to the top of the page
+Quote Post
kropamk
post 23.01.2012, 09:07:13
Post #6





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


Działa. Dziękuję za pomoc.

Witam ponownie.
Chciałbym do tego wszystkiego dodać do bazy id uzytkownika, ktory rejstruje kod oraz date. Coś mi nie idzie, poniżej zamieszczam kod a błąd mam taki "
Notice: Undefined variable: date in C:\xampp\htdocs\rabat\register_code.php on line 66
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(active=1, user_id=1, Data_Utworzenia=) WHERE kod='21'' at line 1".
Proszę o pomoc.
  1. <?php
  2. // DEKLARACJA ZMIENNYCH Z FORMULARZA
  3. $username = $_SESSION['username'];
  4. $kod = mres($_POST['kod']);
  5.  
  6. // sprawdzenie czy zmienne zostaly wprowadzone
  7. if($kod)
  8. {
  9. $duplicate = mysql_query("SELECT * FROM kody WHERE kod='".mres($_POST['kod'])."'") or die(mysql_error());
  10.  
  11. if (mysql_num_rows($duplicate) > 0){
  12. $dane= mysql_fetch_array($duplicate);
  13. if ($dane['active'] == 0) {
  14. //wybieramy usera zeby wyciagnac jego id, aby wrzucic je do tabeli kody
  15. $select_user = mysql_query("SELECT * FROM users WHERE username='$username'");
  16. if(!$select_user) {
  17. die('Error9: '. mysql_error());
  18. }
  19. $fetch_user = mysql_fetch_array($select_user);
  20. if(!$fetch_user) {
  21. die('Error10: '. mysql_error());
  22. }
  23. $user_id = $fetch_user[0];
  24.  
  25. $data = date("Y-m-d"); //data dodania
  26.  
  27.  
  28. $insertquery = "UPDATE kody SET (active=1, user_id=$user_id, Data_Utworzenia=$date) WHERE kod='".mres($_POST['kod'])."'";
  29. mysql_query($insertquery) or die(mysql_error());
  30. echo' Jest ok';
  31.  
  32. } else {
  33. echo ' Kod został już wykorzystany';
  34. }
  35. } else {
  36. echo' Taki kod nie istnieje';
  37. }
  38.  
  39. $db->db_close_connection();
  40. }
  41. ?>


Ten post edytował kropamk 23.01.2012, 09:08:43
Go to the top of the page
+Quote Post
piotrooo89
post 23.01.2012, 09:08:53
Post #7


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




zapraszam do postaw w manualu:

  1. $insertquery = "UPDATE kody SET active=1, user_id=$user_id, Data_Utworzenia='$date' WHERE kod='".mres($_POST['kod'])."'";


--------------------
Go to the top of the page
+Quote Post
kropamk
post 23.01.2012, 09:45:46
Post #8





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


Dziękuję.

A czy mogę w jakiś sposób dodać adres strony www, tytuł strony czy IP strony do bazy danych?
Go to the top of the page
+Quote Post
piotrooo89
post 23.01.2012, 09:56:03
Post #9


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(kropamk @ 23.01.2012, 09:45:46 ) *
A czy mogę w jakiś sposób dodać adres strony www, tytuł strony czy IP strony do bazy danych?


a dlaczego miałbyś nie móc?


--------------------
Go to the top of the page
+Quote Post
kropamk
post 23.01.2012, 10:00:25
Post #10





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


poproszę o jakąś wskazówkę, co mam zrobić

mogęzrobić tak ?
  1. <title name="tytul">Tytul</title>


Ten post edytował kropamk 23.01.2012, 10:05:56
Go to the top of the page
+Quote Post
piotrooo89
post 23.01.2012, 10:28:25
Post #11


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




ale ja dalej nie wiem w czym masz problem? wstawiasz do bazy i pozamiatane.


--------------------
Go to the top of the page
+Quote Post
kropamk
post 23.01.2012, 10:31:16
Post #12





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


Chcę aby wraz z wysłaniem formularza (tego co powyżej) do bazy dodawał się automatycznie adres strony www. Nie wiem pod jaka zmienna czy czymś innym jest przechowywany adres www i jak go wysłać do bazy danych.
Go to the top of the page
+Quote Post
piotrooo89
post 23.01.2012, 10:36:24
Post #13


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




$_SERVER.


--------------------
Go to the top of the page
+Quote Post
kropamk
post 23.01.2012, 10:55:15
Post #14





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


dziękuje.
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: 19.07.2025 - 17:09