Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [MYSQL] System kodów
Forum PHP.pl > Forum > PHP
Killerek
Witam mam taką tabelkę

  1. kod | status


i w tej tabelce jest kod phppl_ScBKn i teraz powinien się wyświetlić formularz i w nim coś takiego:

Wpisz użytkownika:
TUTAJ POLE TYPU TEXT
Wpisz kod:
TUTAJ POLE TYPU TEXT

i teraz niech skrypt sprawdzi czy kod który został wpisany do drugiego pola istnieje i jeżeli istnieje i w statusie jest 0 to robi się zapytanie

  1. UPDATE user SET `punkty` = +5 WHERE `name` = 'TUTAJ UŻYTKOWNIK'


oraz

  1. UPDATE codes SET `status` = '1' WHERE `kod` = 'TUTAJ KOD'


oraz wyskakuje napis "Konto TUTAJ NAZWA zostało doładowane 5 punktami!"

Jeżeli kod istnieje ale w statusie jest 1 to wyskakuje błąd np. "Ten kod został już wykorzystany".

Jeżeli kod nie istnieje w bazie wyskakuje "Kod nie istnieje"


Czy da się coś takiego zrobić?
Damonsson
Da
Killerek
Cytat(Damonsson @ 17.04.2013, 16:25:44 ) *
Da


smile.gif)

---

Czy jest ktoś w stanie poprawić mi ten kod?

  1. <?php
  2.  
  3. session_start(); // rozpoczęcie sesji
  4.  
  5. if (!isset($_SESSION['login'])) { // dostęp dla niezalogowanego użytkownika
  6.  
  7. include 'inc/db.php'; // połączenie się z bazą danych
  8. $tabela = 'codes'; // zdefiniowanie tabeli MySQL
  9. $tabela2 = 'uzystkownicy'; // zdefiniowanie tabeli MySQL
  10.  
  11. if ($_POST["wyslane"]) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  12.  
  13. // filtrowanie treści wprowadzonych przez użytkownika
  14. $id = $_POST["id"];
  15. $kod = $_POST["kod"];
  16.  
  17. // system sprawdza czy prawidło zostały wprowadzone dane
  18.  
  19. $wynik = mysql_query("SELECT * FROM $tabela WHERE kod='$kod'");
  20. if (mysql_num_rows($wynik) == 1) {
  21. $blad++;
  22. echo '<div class="msg error">Podany kod został już aktywowany!</div>';
  23. }
  24. $wynik = mysql_query("SELECT * FROM $tabela2 WHERE id='$id'");
  25. if (mysql_num_rows($wynik) == 1) {
  26. echo "";
  27. } else {
  28. echo "<div class='msg error'>Reklama o id $id nie istnieje.</div>";
  29. }
  30.  
  31. // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
  32. if ($blad == 0) {
  33.  
  34. $wynik = mysql_query("UPDATE $tabela SET `status`= `1` WHERE `kod`='$kod'");
  35. $wynik1 = mysql_query("UPDATE $tabela2 SET `plus`= +20 WHERE `id`='$id'");
  36. if ($wynik) {
  37. echo "<div class='msg success'>Zapytanie 1 dziala!</div>";
  38. mysql_close($polaczenie);
  39. }
  40. }
  41. }
  42.  
  43. // tworzenie formularza HTML
  44. echo <<< KONIEC
  45.  
  46.   <form action="doladuj" method="post">
  47.   <input type="hidden" name="wyslane" value="TRUE" />
  48.  
  49.   Identyfikator
  50. <input type="text" name="id" id="id" />
  51.  
  52. Kod
  53. <input type="text" name="kod" id="kod" />
  54.  
  55. <input type="submit" value="Doładuj!" /></form>
  56. KONIEC;
  57.  
  58. } else {
  59. header('Location: index '); // zalogowany użytkownik zostaje przekierowany na stronę główną
  60. }
  61.  
  62. ?>


proszę nie patrzeć na komentarze w kodzie ;p

@refresh
!*!
Co poprawić?
Killerek
ten mój kod ponieważ coś on mi nie chce działać ;/
_Borys_
Dlaczego nie chce działać ? Jeśli są błędy to pokaż je tutaj.
Po pierwsze powinieneś zadeklarować $blad przed zapytaniem do bazy
  1. $blad = 0;

Po drugie nie podoba mi się to +20 przy UPDATE, jeśli wartość w `plus` musi być zwiększona o 20 to zmień na
  1. $wynik1 = mysql_query("UPDATE $tabela2 SET `plus`= `plus` + 20 WHERE `id`='$id'");

oczywiście pod warunkiem że `plus` jest typu int lub podobne.
CuteOne
$wynik = mysql_query("SELECT * FROM $tabela WHERE kod='$kod'");
if (mysql_num_rows($wynik) == 1) {
$blad++;
echo '<div class="msg error">Podany kod został już aktywowany!</div>';
}

//....

if ($blad == 0) {

$wynik = mysql_query("UPDATE $tabela SET `status`= `1` WHERE `kod`='$kod'");

Chyba widzisz swój błąd?
Killerek
Wynalazłem coś takiego:

  1. <?php
  2.  
  3. include 'inc/db.php'; // połączenie z bazą danych
  4. $tabela = 'codes'; // zdefiniowanie tabeli MySQL
  5. $tabela2 = 'uzytkownicy'; // zdefiniowanie tabeli MySQL
  6.  
  7. $id = $_POST['id']; // pobieranie ID do zmiennej
  8. $kod = $_POST['kod']; // pobieranie KOD do zmiennej
  9.  
  10. if ($_POST['wyslane']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  11.  
  12. // Sprawdzanie ile plusów dodaje dany kod
  13. $wynik = mysql_query("SELECT * FROM $tabela WHERE kod='$kod'");
  14. if ($wynik) {
  15. $informacja = mysql_fetch_array($wynik);
  16. $ile_dodac = "{$informacja['ile']}";
  17. }
  18.  
  19. $wynik = mysql_query("SELECT * FROM $tabela WHERE kod='$kod' and status=1");
  20. if (mysql_num_rows($wynik) == 1) {
  21. echo '<div class="msg error">Podany kod został już aktywowany!</div>';
  22. } else {
  23. $wynik = mysql_query("UPDATE $tabela SET status='1' WHERE kod='$kod' and status=0");
  24. $wynik = mysql_query("UPDATE $tabela2 SET `plus`= `plus` + $ile_dodac WHERE `id`='$id'");
  25. $wynik = mysql_query("SELECT * FROM $tabela WHERE kod='$kod' and status=1");
  26. if (mysql_num_rows($wynik) == 1) {
  27. echo '<div class="msg error">Konto doładowane.</div>';
  28. }
  29. }
  30.  
  31. // Jeżeli nie wpisano id lub kodu
  32. if(empty($id) or empty($kod)) {
  33. echo '<div class="msg error">Doładowanie konta nie powidło się.</div>';
  34. }
  35. mysql_close($polaczenie);
  36. }
  37.  
  38. // Wyświetlanie formularza
  39. echo <<< KONIEC
  40.  
  41. <form class="form" action="doladuj" method="post">
  42.  
  43. <input type="hidden" name="wyslane" value="TRUE" />
  44.  
  45. Identyfikator:
  46. <input type="text" name="id" id="id" value="" />
  47.  
  48. Kod:
  49. <input type="text" name="kod" id="kod" value="" />
  50.  
  51. <input type="submit" value="Doładuj konto!" />
  52.  
  53. </form>
  54.  
  55. KONIEC;
  56.  
  57. ?>


ale nie wiem jak zrobić, żeby sprawdzało czy istnieje użytkownik o id $id. i jeżeli istnieje to dopiero się dodają punkty i zmienia status kodu na 1.

Pomozecie?
com
ty mówisz poważnie?
  1. $wynik = mysql_query("UPDATE $tabela2 SET `plus`= `plus` + $ile_dodac WHERE `id`='$id'");

to niby co ta linijka robi?
a w tej
  1. $wynik = mysql_query("UPDATE $tabela SET status='1' WHERE kod='$kod' and status=0");

dodaj jeszcze w zapytaniu `id`='$id' bo pewnie o to ci chodziło wink.gif
Killerek
Cytat(com @ 18.04.2013, 16:48:01 ) *
ty mówisz poważnie?
  1. $wynik = mysql_query("UPDATE $tabela2 SET `plus`= `plus` + $ile_dodac WHERE `id`='$id'");

to niby co ta linijka robi?
a w tej
  1. $wynik = mysql_query("UPDATE $tabela SET status='1' WHERE kod='$kod' and status=0");

dodaj jeszcze w zapytaniu `id`='$id' bo pewnie o to ci chodziło wink.gif


  1. $wynik = mysql_query("UPDATE $tabela2 SET `plus`= `plus` + $ile_dodac WHERE `id`='$id'");

Ta linijka dodaje plusy.

  1. $wynik = mysql_query("UPDATE $tabela SET status='1' WHERE kod='$kod' and status=0");

Tutaj nie mogę dodać np. WHERE kod='$kod' and id='$id' and status=0 ponieważ id znajduje się w innej tabeli kody są w codes a id od usera w tabelce uzytkownicy.
com
Cytat
ale nie wiem jak zrobić, żeby sprawdzało czy istnieje użytkownik o id $id. i jeżeli istnieje to dopiero się dodają punkty i zmienia status kodu na 1.

no przecież z tego co zrozumiałem to o to Ci chodziło? tu przeciez jest że update następuje jeśli istnieje id biggrin.gif widzę troche trzeba sie wgłebić w mysql wink.gif a w drugim to mnie teraz rozwaliłeś a o relacjach słyszałeś coś? bo jak mozna tworzyć tabele które maja współgrać i ich ze sobą nie połączyć wink.gif
Killerek
Cytat(com @ 18.04.2013, 17:00:29 ) *
no przecież z tego co zrozumiałem to o to Ci chodziło? tu przeciez jest że update następuje jeśli istnieje id biggrin.gif widzę troche trzeba sie wgłebić w mysql wink.gif a w drugim to mnie teraz rozwaliłeś a o relacjach słyszałeś coś? bo jak mozna tworzyć tabele które maja współgrać i ich ze sobą nie połączyć wink.gif


Problem mam z tym, że jeżeli wpisze kod ale nie wpisze id to i tak zapytanie z zmiana statusu z 0 na 1 się wykona.

---

Lista kodów tutaj http://www.panel.freeads.ct8.pl/
com
no to własnie Ci to napisałem, dlatego musisz dodać w tebeli komórke w ktrórej bedziesz przechowywał id użytkownika do którego dany kod należy, i jesli bedzie sie on zgadzał to wtedy kod sie wykona wink.gif nie wytłumaczę Ci teraz całego działania realcji w jednym poście, musisz o tym poczytać wink.gif coś w temacie masz tu http://gryf.mif.pg.gda.pl/~mate/wyklady/bazy/relacje.html i http://pl.wikibooks.org/wiki/PHP/Relacje_i_indeksy smile.gif
Killerek
Cytat(com @ 18.04.2013, 17:35:56 ) *
no to własnie Ci to napisałem, dlatego musisz dodać w tebeli komórke w ktrórej bedziesz przechowywał id użytkownika do którego dany kod należy, i jesli bedzie sie on zgadzał to wtedy kod sie wykona wink.gif nie wytłumaczę Ci teraz całego działania realcji w jednym poście, musisz o tym poczytać wink.gif coś w temacie masz tu http://gryf.mif.pg.gda.pl/~mate/wyklady/bazy/relacje.html i http://pl.wikibooks.org/wiki/PHP/Relacje_i_indeksy smile.gif


Rozumiem o co ci chodzi ale mi chodzi o takie coś jak "Kto pierwszy ten lepszy" czy kto użyje tego kodu jako pierwszy to jemu doda te plusy. Coś jak craftserve na facebooku daje daną ilość kodów i kazdy z nich tworzy serwer. A mi chodzi o to samo tylko że u mnie ma dodawać te plusy... Istnieje jakiś inny sposób na to?

Chodzi mi oto że żaden kod nie ma być przypisany do usera tylko kazdy sobie moze uzyc go.
!*!
Cytat(Killerek)
Rozumiem o co ci chodzi ale mi chodzi o takie coś jak "Kto pierwszy ten lepszy" czy kto użyje tego kodu jako pierwszy to jemu doda te plusy.

Cytat(Killerek)
Chodzi mi oto że żaden kod nie ma być przypisany do usera tylko kazdy sobie moze uzyc go.


Chłopie zdecyduj się w końcu. com podał Ci rozwiązanie, wystarczy że je zaimplementujesz.
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.