Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jednorazowa funkcja-przycisk
Forum PHP.pl > Forum > Przedszkole
edwarpan
  1. <?php
  2. $state = "SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem";
  3. if($state==0){
  4. if ($_POST['submit']) {
  5. $kwota = $_POST['kwota'];
  6. $query = "UPDATE users SET kwota = kwota - ".$kwota." WHERE username='".safe($_COOKIE['username'])."'";
  7. mysql_query($query);
  8. $sql = "UPDATE users SET redeem = '1' WHERE username='".safe($_COOKIE['username'])."' ";
  9. }
  10. }
  11. else
  12. {
  13. echo "Już jesteś zapisany";
  14. }
  15. ?>

I cuś nie działa.
wookieb
Temat: Jak poprawnie zada pytanie
edwarpan
Poprawione, proszę o pomoc, manual już cały przeczytany, lecz nic nie działa.
kapuch
Cytat(edwarpan @ 13.05.2010, 16:50:02 ) *
  1. <?php
  2. $state = "SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem";
  3. if($state==0){
  4. if ($_POST['submit']) {
  5. $kwota = $_POST['kwota'];
  6. $query = "UPDATE users SET kwota = kwota - ".$kwota." WHERE username='".safe($_COOKIE['username'])."'";
  7. mysql_query($query);
  8. $sql = "UPDATE users SET redeem = '1' WHERE username='".safe($_COOKIE['username'])."' ";
  9. }
  10. }
  11. else
  12. {
  13. echo "Już jesteś zapisany";
  14. }
  15. ?>

I cuś nie działa.

Opisz dokladnie o co ci chodzi, bo nie widze zwiazku tytulu z kodem, ktory tu dajesz.
Poza tym ustawiasz $state = "SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem";
a pozniej praktycznie caly kod uzalezniasz od tego, czy $state==0. W tym kodzie $state nigdy nie bedzie == 0, wiec jedyne co bedzie wykonane to echo "Już jesteś zapisany";.
NIe mowie juz o reszcie kodu, ktoremy zarzucic mozna wiele, ale po co, najlepiej poczytaj jakis poradnik o php i sql.
croc
W ogóle jakiś pokićkany ten kod...
edwarpan
W cookie zapisuje się nazwa użytkownika.
Na stronie ma być button z zapisem do tabeli + odjęciem wartości 1 z innej tabeli.
I chodzi o to aby można tylko raz tam kliknąć.
  1. <?php
  2.  
  3. if ($logged_in == 1) {
  4.  
  5. ?>
  6. Logged in as: <?php echo $_COOKIE['username']; ?><br />
  7. <br /><b>Powiadamianie email o restocku! <strong>1Punkt</strong></b><br>
  8. <form action="zredeem.php" method="post">
  9. <input type="hidden" name="kwota" value="1" />
  10. <input type="submit" name="submit" value="modyfikuj" />
  11. </form>
  12.  
  13. <?php
  14. $state = "SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem";
  15. if($state==0){
  16. if ($_POST['submit']) {
  17. $kwota = $_POST['kwota'];
  18. $query = "UPDATE users SET kwota = kwota - ".$kwota." WHERE username='".safe($_COOKIE['username'])."'";
  19. $sql = "UPDATE users SET redeem = '1' WHERE username='".safe($_COOKIE['username'])."' ";
  20. mysql_query($query);
  21. }
  22. }
  23. else
  24. {
  25. echo "Już jesteś zapisany";
  26. }
  27. ?>

cały kod.
piotrooo89
mysql_error zwraca Ci coś?
croc
Co za różnica co zwraca mysql_error skoro cały kod jest pochrzaniony?
bolverk
  1. $state = "SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem";
  2. if($state==0)


To pierwsza i druga linijka twojego kodu PHP zaraz po formularzu. Przecież wynika jasno z tego że $state zawsze będzie równe
Kod
"SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem"
kapuch
Cytat(piotrooo89 @ 13.05.2010, 21:05:38 ) *
mysql_error zwraca Ci coś?

A co ma zwracac mysql_error, skoro nawet do operacji w sql nie dochodzi, skoro dal warunek zeby $state rownalo sie 0, a zaraz przed tym nadal wartosc $state rowna zapytaniu.
Jak ma ten kod sie wykonac?

Cytat(bolverk @ 13.05.2010, 21:16:23 ) *
  1. $state = "SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem";
  2. if($state==0)


To pierwsza i druga linijka twojego kodu PHP zaraz po formularzu. Przecież wynika jasno z tego że $state zawsze będzie równe
Kod
"SELECT * FROM users WHERE username='".safe($_COOKIE['username'])."' SET redeem"

No dokladnie o tym pisalem na samym poczatku, ale autorowi chyba nie chcialo sie tego przeczytac.
Fajnie ze ktos tez to zauwazyl biggrin.gif
croc
A poza tym co to za zapytanie?
  1. SELECT cośtam FROM cośtam SET cośtam


Jakiś nowy standard SQL?
kapuch
Cytat(croc @ 13.05.2010, 21:47:21 ) *
A poza tym co to za zapytanie?
  1. SELECT cośtam FROM cośtam SET cośtam


Jakiś nowy standard SQL?

Hehe chyba tak, mi sie podoba to smile.gif
Kod
UPDATE users SET kwota = kwota - ".$kwota." WHERE username='".safe($_COOKIE['username'])."'";

Do Autora:
tak powaznie, to musisz jeszcze soporo poczytac manuali, zarowno tych od PHP, jak i sql.
Bo ty nawet nie rozumiesz jakie warunki stawiasz skryptowi, ktory ma sie wykonac, nie mowic juz o blednie sformulowanych zapytaniach sql.
Skoro dajesz warunek, ze aby sie skrypt wykonal, zmienna $state musi byc rowna 0 (zero), a chwile wczesniej tej samej zmiennej nadajesz jakas wartosc (zapytanie sql), ktora napewno nie jest rowna zero, wiec jak ma ci sie cokolwiek wykonac?
Z drugiej strony, moze i lepiej ze sie nie wykonalo, bo przy tych zapytaniach, to moglby ci serwer siasc winksmiley.jpg
bolverk
Kocham ten serwis właśnie za użytkowników zadających banalne pytania, i za użytkowników na nie odpowiadających z takim poczuciem humoru. Na takie teksty nie wpadliby żadni Łowcy.B czy nawet Kabaret Moralnego Niepokoju. Oto reklama: Nigdzie indziej nie pośmiejesz się i nie nauczysz jednocześnie, tylko na wortal.php.pl smile.gif Ubawiłem się setnie czytając ostatnie posty smile.gif

A tak na marginesie, gdzie są ci programiści którzy w poszukiwaniu zagubionego przecinka analizwali własny kod przez dwa dni? Pewnie zaglądają na ten serwis właśnie.
kapuch
Cytat(bolverk @ 13.05.2010, 22:19:39 ) *
Kocham ten serwis właśnie za użytkowników zadających banalne pytania, i za użytkowników na nie odpowiadających z takim poczuciem humoru. Na takie teksty nie wpadliby żadni Łowcy.B czy nawet Kabaret Moralnego Niepokoju. Oto reklama: Nigdzie indziej nie pośmiejesz się i nie nauczysz jednocześnie, tylko na wortal.php.pl smile.gif Ubawiłem się setnie czytając ostatnie posty smile.gif

A tak na marginesie, gdzie są ci programiści którzy w poszukiwaniu zagubionego przecinka analizwali własny kod przez dwa dni? Pewnie zaglądają na ten serwis właśnie.

Hehe nie ma to jak mozolne analizowanie kodu, w celu znalezienia zgubionego przecinka, gdy juz myslisz ze go znalazles, okazuje sie ze to mucha na monitor narobila tongue.gif

PS. No pozartowac nie zaszkodzi - smiech to zdrowie, kazdy jakos zaczynal i nie wysmiewamy tu nikogo, tylko smiejemy sie z zaistnialej sytuacji biggrin.gif
Poza tym dalismy rozwiazanie problemu - pouczyc sie php i sql, no bo na poprawe bledow w tym kodzie szkoda czasu, bo autor i tak by pewnie nie zrozumial o co chodzi, nie dlatego ze jest inteligentny inaczej, ale dlatego ze brakuje mu podstawowej wiedzy na ten temat.
bolverk
Kod
Logged in as: <?php echo $_COOKIE['username']; ?><br />
<br /><b>Powiadamianie email o restocku! <strong>1Punkt</strong></b><br>
<form action="zredeem.php" method="post">
<input type="hidden" name="kwota" value="1" />
<input type="submit" name="submit" value="modyfikuj" />
</form>

Kod
UPDATE users SET kwota = kwota - ".$kwota." WHERE username='".safe($_COOKIE['username'])."'";


Już jako ostatni post w tym temacie napiszę że odwołanie do zmiennej $kwota świadczy że posługujesz się przestarzałym i do tego niebezpiecznym dla użytkownika kodem PHP. Do zmiennej w polu formularza name="kwota" odwołuj się przez pole method na początku formularza, czyli w tym przypadku:

Kod
$_POST['kwota']
edwarpan
Jakoś sobie bez Was poradziłem, poczytałem. Działa, może nie tak jak chciałem, bo jak ktoś ma 0 w tabeli kwota to i tak może się zapisać.
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.