Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie zapytania - usuwanie zmiennych
Forum PHP.pl > Forum > PHP
ColdFlame
Witam Serdecznie

Próbuję zrobić jakby takie premium na forum i chciałbym aby po wpisaniu danego ciągu znaków w odpowiednie pole.
Skrypt wysyłał zapytanie do bazy danych, a konkretnie tabeli "kody", by sprawdzić czy dany ciąg znaków jest odpowiednim kodem.
Jeżeli tak to wywoływał by on pewną zmienną tzw. "Premium", a jeżeli nie to wyświetliłaby się informacja o błędnym kodzie.
Mam nadzieję że jakoś przejrzyście Wam to wyjaśniłem. smile.gif
Nie wiem za bardzo jak się za to zabrać, więc byłbym wdzięczny za każdą, nawet najmniejszą wskazówkę.

Pozdrawiam
ColdFlame
markonix
  1. $s = mysql_query("SELECT * FROM kody WHERE kod='".$_POST['kod']."' AND aktywny='0'");
  2. // sprawdza czy podany kod jest poprawny lub jest jeszcze ważny
  3. if (mysql_num_rows($s)==0)
  4. {
  5. // błąd
  6. }
  7. else
  8. {
  9.  
  10. // jest ok, dodaj premium
  11.  
  12. }

Wcześniej kod warto zwalidować - zwykle jest po prostu alfanumeryczny więc to nie problem bo jest do tego dedykowana funkcja winksmiley.jpg
toaspzoo
plik index.html (forma)
  1. <form method=post action="2.php">
  2. <input type=text name=kod>
  3. <input type=submit value=sprawdz>
  4. </form>


plik 2.php
  1. <?php
  2. include('db.php');
  3.  
  4. if($_POST['kod'] <> '')
  5. {
  6. $kod = $_POST['kod'];
  7. $pokaz = zapytaj("SELECT * FROM `kody` WHERE `kod` = '$kod';");
  8. $kod_sql = mysql_fetch_array($pokaz);
  9.  
  10. if($kod == $kod_sql)
  11. {
  12.  
  13. echo 'dobry kod!';
  14. }
  15. else
  16. {
  17. echo 'zly kod!';
  18. }
  19. ?>


plik db.php

  1. <?php
  2. function zapytaj($sql) {
  3. $db = mysql_connect('HOST', 'USER', 'HASŁO');
  4. mysql_select_db('BAZA_DANYCH', $db);
  5. $wynik = mysql_query($sql, $db);
  6. return $wynik;
  7. }
  8. ?>


---

Mam nadzieję, że pomogłem smile.gif
agmakonts
Jeśli pierwsza opcja to będzie Ci potrzebny jakiś algorytm generujący numer wraz z liczbą kontrolną, tu Ci nie pomogę ale powinno być trochę tutoriali/gotowców w necie. Możesz dla przykładu zobaczyć np jak PESEL działa
ColdFlame
Cytat(markonix @ 26.12.2010, 11:47:15 ) *
  1. $s = mysql_query("SELECT * FROM kody WHERE kod='".$_POST['kod']."' AND aktywny='0'");
  2. // sprawdza czy podany kod jest poprawny lub jest jeszcze ważny
  3. if (mysql_num_rows($s)==0)
  4. {
  5. // błąd
  6. }
  7. else
  8. {
  9.  
  10. // jest ok, dodaj premium
  11.  
  12. }

Wcześniej kod warto zwalidować - zwykle jest po prostu alfanumeryczny więc to nie problem bo jest do tego dedykowana funkcja winksmiley.jpg


Bardzo Ci dziękuję.
Wszystko rozumiem, tylko nie wiem jeszcze jednego, albowiem:

Cytat
else
{

// jest ok, dodaj premium

}


Tzn. rozumiem o co tu chodzi, ale nie wiem jak to zdefiniować.
U mnie za premium odpowiada zmienna:
($d, $premium);

To za pomocą jakiej komendy należy ją aktywować ? (tzn. włączyć to premium). ?
Żeby wykrywał id danego usera i aktywował mu tą $premium ?

Cytat
Jeśli pierwsza opcja to będzie Ci potrzebny jakiś algorytm generujący numer wraz z liczbą kontrolną, tu Ci nie pomogę ale powinno być trochę tutoriali/gotowców w necie. Możesz dla przykładu zobaczyć np jak PESEL działa


Z pewnością poczytam, dziękuję.

Pozdrawiam
ColdFlame
markonix
Dodanie premium to pewnie jakaś akcja bazodanowa (albo update typu konta albo insert do listy premium).

Za to może odpowiada już jakaś funkcja, nie zmienna winksmiley.jpg
ColdFlame
Cytat(toaspzoo @ 26.12.2010, 11:50:02 ) *
plik index.html (forma)
  1. <form method=post action="2.php">
  2. <input type=text name=kod>
  3. <input type=submit value=sprawdz>
  4. </form>


plik 2.php
  1. <?php
  2. include('db.php');
  3.  
  4. if($_POST['kod'] <> '')
  5. {
  6. $kod = $_POST['kod'];
  7. $pokaz = zapytaj("SELECT * FROM `kody` WHERE `kod` = '$kod';");
  8. $kod_sql = mysql_fetch_array($pokaz);
  9.  
  10. if($kod == $kod_sql)
  11. {
  12.  
  13. echo 'dobry kod!';
  14. }
  15. else
  16. {
  17. echo 'zly kod!';
  18. }
  19. ?>


plik db.php

  1. <?php
  2. function zapytaj($sql) {
  3. $db = mysql_connect('HOST', 'USER', 'HASŁO');
  4. mysql_select_db('BAZA_DANYCH', $db);
  5. $wynik = mysql_query($sql, $db);
  6. return $wynik;
  7. }
  8. ?>


---

Mam nadzieję, że pomogłem smile.gif



Wszystko fajnie. Zrobiłem wg. Twoich instrukcji i teraz jeżeli wpisze dowolny ciąg znaków to przechodzę do pliku: 2.php
i widnieje mi błąd:

"Parse error: syntax error, unexpected $end in <ścieżka> 2.php on line 19 "

Czym może to być spowodowane ? ;/


toaspzoo
no jasne, na końcu pliku 2.php dodaj przed ?> jeszcze jedną klamrę! "}"
markonix
Zwykły error składniowy, pokaż linie 19.
Coś masz pewnie niedomknięte.

Poza tym skorzystaj z mojej rady, bo przy kodzie ColdFlame to 100 userów może skorzystać z jednego kodu, a chyba nie o to chodziło.
Funkcja "zapytaj"? Po prostu umieść jej kod w pliku db i go includuj. Po co łączyć się z bazą przy każdym zapytaniu jak wystarczy raz na początku..

Jak coś napiszesz sam w/g moich wskazówek to Ci pomogę.
ColdFlame
Jakoś sobie poradziłem, ale teraz niestety jest kolejny problem.
Non stop wyświetla się ZLY KOD...
Moja baza danych wygląda tak:

TABELA "kody", która ma dwie kolumny: "kod" i "data"
Kod odpowiada za kod winksmiley.jpg a data za aktywność kodu.

Możecie udzielić mi jakiś wskazówek do tego jak mogę zrobić by ten skrypt sprawdzał czy dany ciąg znaków jest w kodem w kolumnie kod i czy jego kolumna "data" jest aktywna ?
1 to aktywna
0 to nie aktywna

przy czym gdyby była aktywna to 1 zmieniałby na 0, a gdy byłaby nieaktywna to 0 NIE ZMIENIAŁBY na 1.

Dziękuję za wszystkie odpowiedzi.

Pozdrawiam
ColdFlame
markonix
Nazewnictwo musi mieć sens - jeżeli już tam nie wstawiasz (choć warto wstawić) daty to po co nazywasz datą kolumnę?

Nazwij ją uzyte, typ pola tiny INT (1 znak) i domyślnie 0.
0 - nieużyty
1 - użyty.

Zapytanie które sprawdza poprawność kodu i zarazem czy kod jest aktywny masz w pierwszym moim poście, w pierwszej linijce.
ColdFlame
Cytat(markonix @ 27.12.2010, 18:43:11 ) *
Nazewnictwo musi mieć sens - jeżeli już tam nie wstawiasz (choć warto wstawić) daty to po co nazywasz datą kolumnę?

Nazwij ją uzyte, typ pola tiny INT (1 znak) i domyślnie 0.
0 - nieużyty
1 - użyty.

Zapytanie które sprawdza poprawność kodu i zarazem czy kod jest aktywny masz w pierwszym moim poście, w pierwszej linijce.


Dobrze, dziękuję.
To jak mam zintegrować te dwa kody ?
tzn. ten Twój:
$s = mysql_query("SELECT * FROM kody WHERE kod='".$_POST['kod']."' AND aktywny='0'");
i ten 2.php ?

Wystarczy jak dodam tą linijkę ?

Dziękuję za odpowiedź i pozdrawiam
ColdFlame
markonix
Nic nie integruj tylko napisz od nowa.. Toż to kilka linijek.
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.