Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] [MYSQL] System kodów
Killerek
post 17.04.2013, 15:11:47
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
Damonsson
post 17.04.2013, 15:25:44
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Da
Go to the top of the page
+Quote Post
Killerek
post 18.04.2013, 12:47:19
Post #3





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


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

Ten post edytował Killerek 17.04.2013, 16:02:02
Go to the top of the page
+Quote Post
!*!
post 18.04.2013, 12:58:09
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Co poprawić?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Killerek
post 18.04.2013, 13:49:00
Post #5





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


ten mój kod ponieważ coś on mi nie chce działać ;/
Go to the top of the page
+Quote Post
_Borys_
post 18.04.2013, 14:19:51
Post #6





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


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.

Ten post edytował _Borys_ 18.04.2013, 14:20:15
Go to the top of the page
+Quote Post
CuteOne
post 18.04.2013, 14:24:16
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


$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?

Ten post edytował CuteOne 18.04.2013, 14:24:50
Go to the top of the page
+Quote Post
Killerek
post 18.04.2013, 15:10:51
Post #8





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


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?

Ten post edytował Killerek 18.04.2013, 15:51:58
Go to the top of the page
+Quote Post
com
post 18.04.2013, 15:48:01
Post #9





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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
Go to the top of the page
+Quote Post
Killerek
post 18.04.2013, 15:51:48
Post #10





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
com
post 18.04.2013, 16:00:29
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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

Ten post edytował com 18.04.2013, 16:01:57
Go to the top of the page
+Quote Post
Killerek
post 18.04.2013, 16:25:15
Post #12





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


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/

Ten post edytował Killerek 18.04.2013, 16:25:27
Go to the top of the page
+Quote Post
com
post 18.04.2013, 16:35:56
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


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

Ten post edytował com 18.04.2013, 16:37:46
Go to the top of the page
+Quote Post
Killerek
post 18.04.2013, 16:40:00
Post #14





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


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.

Ten post edytował Killerek 18.04.2013, 16:48:40
Go to the top of the page
+Quote Post
!*!
post 19.04.2013, 08:18:45
Post #15





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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.

Ten post edytował !*! 19.04.2013, 08:19:19


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
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: 24.07.2025 - 17:43