Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sprawdzanie danych w bazie
Forum PHP.pl > Forum > Przedszkole
kropamk
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
by_ikar
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.
Evinek
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.
kropamk
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. ?>
Evinek
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
kropamk
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. ?>
piotrooo89
zapraszam do postaw w manualu:

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

A czy mogę w jakiś sposób dodać adres strony www, tytuł strony czy IP strony do bazy danych?
piotrooo89
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?
kropamk
poproszę o jakąś wskazówkę, co mam zrobić

mogęzrobić tak ?
  1. <title name="tytul">Tytul</title>
piotrooo89
ale ja dalej nie wiem w czym masz problem? wstawiasz do bazy i pozamiatane.
kropamk
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.
piotrooo89
$_SERVER.
kropamk
dziękuje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.