Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Aktywacja kodów.
Forum PHP.pl > Forum > Przedszkole
kurczak610
Witam ponownie. Zrobiłem aktywacje kodów. Mam w tabeli 3 pola :

id,kod,aktywowany.

W kod mam kod np. Ja i jeżeli w aktywowany jest liczba 1 powinien wyskoczyć błąd Ze kod jest uzyty.

Oto kod:
Kod
<?php include 'header.php'; ?>
<?php
if($_SESSION['logged']!=0)
{
?>
<?php
$aktywuj=mysql_query("SELECT * FROM kody WHERE kod='$_POST[kod]'") or die(mysql_error());
while ($pokaz = mysql_fetch_array($aktywuj));
$aktywowany="$pokaz[aktywowany]";
$kod="$pokaz[kod]";
$id="$pokaz[id]";
if (isset($_POST['aktywujkod']))
{
$error='';
if (strlen($_POST['kod'])<1) $error.='Nie wpisałe¶ kodu!<br>';
if ($aktywowany != 0) $error.='Kod jest uzyty!<br>';
         if ($error!='')
         echo "<p class='error'>$error</p>";
         else {
mysql_query("UPDATE users SET points=points+100 WHERE id=$_SESSION[userid]") or die(mysql_error());
echo "Kod: <b>$_POST[kod]</b> jest dobry!";
}
}
?>
<table border="0">
<form method=POST>
<tr><td style="width: 100px";>Kod:</td><td><input type="text" name="kod" maxlength="255"></td></tr>
<tr><td></td><td><input type="submit" name="aktywujkod" value="Wypłać!"></td></tr>
</form>
</table>
<?php
}
?>
<?php include 'footer.php'; ?>


Mam problem, nie wiem jak zapisać ze jak mam w aktywowany 1 to pisze ze kod jest uzyty. Prosze o pomoc.
Pozdrawiam, Kurczak610 smile.gif
tomsi
  1. <?php
  2. if ($aktywowany == 1)
  3. {
  4. echo "Kod jest już uzyty.";
  5. }
  6. ?>
kurczak610
Jest to samo.
Gdy mam 1 to nic nie pisze ;/
tomsi
Dopisz klamerki i zlikwiduj ; w linii gdzie masz konstrukcję while. Aha i usuń "".

  1. <?php
  2. while ($pokaz = mysql_fetch_array($aktywuj))
  3. {
  4. $aktywowany=$pokaz[aktywowany];
  5. $kod=$pokaz[kod];
  6. $id=$pokaz[id];
  7.  
  8. ....
  9. }
  10. ?>


i sprawdz (daj echo) czy coś wypisuje się na ekran (sprawdź czy w zmiennej coś jest a jak coś jest to co).
kurczak610
Teraz nic się nie wyświetla, dałem tak:
Kod
<?php include 'header.php'; ?>
<?php
if($_SESSION['logged']!=0)
{
?>
<?php
$aktywuj=mysql_query("SELECT * FROM kody WHERE kod='$_POST[kod]'") or die(mysql_error());
while ($pokaz = mysql_fetch_array($aktywuj))
{
$aktywowany=$pokaz[aktywowany];
$kod=$pokaz[kod];
$id=$pokaz[id];
if (isset($_POST['aktywujkod']))
{
$error='';
if (strlen($_POST['kod'])<1) $error.='Nie wpisałe¶ kodu!<br>';
if ($aktywowany == 1) $error.='Kod jest już uzyty.';
         if ($error!='')
         echo "<p class='error'>$error</p>";
         else {
mysql_query("UPDATE users SET points=points+100 WHERE id=$_SESSION[userid]") or die(mysql_error());
echo "Kod: <b>$_POST[kod]</b> jest dobry!";
}
}
?>
<table border="0">
<form method=POST>
<tr><td style="width: 100px";>Kod:</td><td><input type="text" name="kod" maxlength="255"></td></tr>
<tr><td></td><td><input type="submit" name="aktywujkod" value="Wypłać!"></td></tr>
</form>
</table>
<?php
}
}
?>
<?php include 'footer.php'; ?>


PS. Jak dajecie w kodzie ze obok są literki?
tomsi
No bo chyba za dużo kodu wziąłeś w {}. Przenalizuj sobie ten kod co ma się w jakiej kolejności robić i które linijki sa do czego.

O jakich literkach mówisz? Pewnie chodzi Ci o cyfry z liniami kodu smile.gif Ty używasz to wstawiania kodu code a wstawiasz php musisz kod dać php
kurczak610
Działa smile.gif Dam ci pomógł jak sie da winksmiley.jpg

Mam jeszcze pytanko, chciałbym zrobić zeby kody sie stwarzaly automatycznie.
Czyli mam 2 pola i wpisuje:
1 pole= Prefix kodu, wpisuje tam: ja I kod jest np. ja123
2 pole= Ilosć kodów ile chce stwrorzyc czyli wpisuje np. 20 i robi sie 20 kodów.
Kody automatycznie zapisuja sie w bazie danych, i wlacza sie 2 strona z kodami jakie sie stworzyly.

Nie wiem jak coś takiego zrobić ;/

PS. Jak dodać do tego skryptu ze jak nie ma w bazie takiego kodu to pisze nie ma takiego kodu ?


Zrobiłem to ze jak nie ma takiego kody w bazie to tak pisze.
Kod:
  1. <?php
  2. if ($kod == NULL) $error.='Nie ma takiego kodu!';
  3. ?>


Pomóżcie coś z tym tworzeniem kodów smile.gif
tomsi
A do takiego łączenia to możesz zrobić np. tak

  1. <?php
  2. $qwe="123";
  3. echo "tekst".$qwe;
  4. ?>


1.
Robisz normlanie pole input w formularzu żeby wpisać ten prefiks potem podstawiasz (łączysz dwa stringi). Ten post możesz sobie zapisać do zmiennej żeby było wygodniej pracować z kodem. Jeśli liczby mają być na stałe to robisz na wzór tego co Ci podałem wyżej tylko zamieniasz sobie żeby liczby były na stałe. Jeśli chcesz żeby liczby były różne, ale wiesz ze mają być trzy to sobie możesz je losować RAND'em.
2.
Też robisz sobie pole input. Wpisujesz liczbę ilości kodu i punkt 1 robisz w pętli np. FOR i tam gdzie masz w FOR ile razy ma się wykonać wstawiasz zmienną z wartością jaką podałeś w input.
Po zrobieniu kodów możesz je zapisać np. w tablicach, albo znowu jakąs pętlą w zmiennych które dodajesz do bazy INSERT'em. Na drugą stroną możesz przesłać POST'em albo może najlepiej jak amsz je już w bazie to w drugim skrypcie pobierz je sobie z bazy smile.gif


A pomógł możesz dodać smile.gif A teraz możesz nawet drugi raz tongue.gif
kurczak610
Dzięki, Dam 2 pomogł.
Może jeszcze dziś jak bede miał czas to się pobawię.
Mam jeszcze 1 pytanko, dodałem do bazy nowe pole: kto (bedzie tam pisało kto użyl kod)
i mam coś takiego:
  1. <?php
  2. mysql_query("UPDATE kody SET aktywowany=aktywowany+1, kto=$_SESSION[username] WHERE id=$id") or die(mysql_error());
  3. ?>


Ale nie działa tongue.gif
tomsi
Daj ' ' w username w tym zapytaniu. Tylko pamiętaj o tym, że może potrzebne będzie zrobić tak \' zamiast '.

Jeśli nic się nie zmieni to:

1.
Musisz zapisać cos do sesji
  1. <?php
  2. $_SESSION['username'] = 'nazwa username';
  3. ?>


2.
Na każdej stronie, gdzie będzie Ci potrzebna sesja musisz na samym początku dać
  1. <?php
  2. ?>



P.S.
Może zamiast tego całego wyrażenia daj zmienna jakąś. Tzn.
  1. <?php
  2. $sesja=$_SESSION['username'];
  3.  
  4. mysql_query("UPDATE kody SET aktywowany=aktywowany+1, kto=$sesja WHERE id=$id") or die(mysql_error());
  5. ?>
kurczak610
Zle ;/ Wyskakuje:

Unknown column 'kurczak610' in 'field list'

Dałem sobie rade z zapisywaniem kto uzyl kod.
Ale nie wiem jak zrobić tą automatyczną "twożarkę kodów" tongue.gif
Nie wiem co to rand.
  1. <?php
  2. $qwe="123";
  3. echo "tekst".$qwe;
  4. <script type="text/javascript">
  5.    var string_1 = "$_POST[prefix]";
  6.    var string_2 = "$_POST[reszta]";
  7.  
  8.    alert(string_1 + ' ' + string_2);
  9. </script>
  10. mysql_query("INSERT INTO kody VALUES ('NULL','$_POST[kod]','0',' ')") or die(mysql_error());
  11. ?>
  12.  
  13. <form type="POST">
  14. <input type="text" name="prefix"><br>
  15. <input type="text" name="liczba"><br>
  16. <input type="submit" name="submit" value="Stwórz!">


Mam coś takiego, pomożcie coś tongue.gif
tomsi
Cytat(kurczak610 @ 10.05.2009, 17:24:26 ) *
Ale nie wiem jak zrobić tą automatyczną "twożarkę kodów" tongue.gif
Nie wiem co to rand.


Tzn jak się to ma tworzyć automatycznie?

RAND
kurczak610
Nie chce narazie skryptu robienie kodów, mam inny problem
  1. <?php include 'header.php'; ?>
  2. <?php
  3. ?>
  4. <?php
  5. if($_SESSION['logged']!=0)
  6. {
  7. ?>
  8. <?php
  9. $aktywuj=mysql_query("SELECT * FROM kody WHERE kod='$_POST[kod]'") or die(mysql_error());
  10. while ($pokaz = mysql_fetch_array($aktywuj))
  11. {
  12. $aktywowany=$pokaz[aktywowany];
  13. $kod=$pokaz[kod];
  14. $id=$pokaz[id];
  15. }
  16. if (isset($_POST['aktywujkod']))
  17. {
  18. $error='';
  19. if (strlen($_POST['kod'])<1) $error.='Nie wpisałeś kodu!<br>';
  20. if ($aktywowany == 1) $error.='Kod jest już uzyty.';
  21. if ($kod == NULL) $error.='Nie ma takiego kodu!';
  22.         if ($error!='')
  23.         echo "<p class='error'>$error</p>";
  24.         else {
  25. mysql_query("UPDATE users SET points=points+100 WHERE id=$_SESSION[userid]") or die(mysql_error());
  26. mysql_query("UPDATE kody SET aktywowany=aktywowany+1, kto='".$_SESSION['username']."' WHERE id=$id") or die(mysql_error());
  27. echo "Kod: <b>$_POST[kod]</b> jest dobry!";
  28. }
  29. }
  30. ?>
  31. <table border="0">
  32. <form method=POST>
  33. <tr><td style="width: 100px";>Kod:</td><td><input type="text" name="kod" maxlength="255"></td></tr>
  34. <tr><td></td><td><input type="submit" name="aktywujkod" value="Wypłać!"></td></tr>
  35. </form>
  36. </table>
  37. <?php
  38. }
  39. ?>
  40. <?php include 'footer.php'; ?>

W tym skrypcie moge wpisać 1 kod, jak zrobić zeby można było zaaktywować na raz wiecej niz 1 kod ?
tomsi
Musiałbyś zrobić jakąs pętle.

Ja widzę to tak. Robisz sobie jakieś pole np. select. W nim masz liczby i jeżeli wybierzesz np. 5 to pojawia Ci sie w formularzy 5 pól input do wpisania kodu (jak wybierzesz 100 to 100 pól input).
Następnie robisz pętle tam, gdzie sprawdzasz czy kod był podany, użyty itd. I też wykonujesz to tyle razy ile podałeś w select. Jak kody są ok to dodawaj je do bazy. Jeśli wystąpił bład to możesz mieć dwa wyjścia:
1) do bazy dodajesz tylko kody, które spełniają wszystkie warunki (są nowe i w ogóle sa wpisane w formularzu), a złe wypiszesz w inpucie do poprawy
2) nie dodajesz do bazy żadnego kodu (ale wtedy musisz się dobrze zastanowić jak zrobić żeby np. ze 100 kodów 1 jest zły i te 99 innych prawidłowych też utracisz)
kurczak610
Nie rozumiem, Chciałbym aby wyglądało to tak jak na stronie np.
Prizpass.pl

Rejestrujesz się, wchodzisz w zakładkę aktywuj Prizz+, i wchodzisz w Masowa Aktywacja kodów.
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.