Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z UPDATE
Forum PHP.pl > Forum > Przedszkole
brekmar
Witam mam taki dosyc spory problem ze skryptem. Baza danych wyglada tak:
Baza

Chce zrobic skrypt ktory, po wpisaniu nazwy uzytkownika do formularza i zatwierdzeniu, najpierw sprawdzi jaka jest aktualna data, nastepnie pobierze date z pola w bazie data i je porowna ze soba, jesli beda identyczne to wyswietli komunikat "Już dziś tutaj byles" ajesli data bedzie inna to pobierze wartosc pola "punkty", doda do tej wartosci 1, i zUPDATuje baze danych w taki sposob ze do pola data wpisze aktualna date a do pola punkty to powiekszone o 1. Ja to zrobilem tak i nie dziala?

Stworzylem formularz pod htmlem ktory wyglada tak:
  1. <title>xxx</title>
  2.  
  3. </head>
  4.  
  5. <form action="przetworz.php" method=post>
  6. <table border=0>
  7.  
  8. <tr>
  9. <td>Login</td>
  10. <td align=left><input type="text" name="login" size=3 maxlength=10></td>
  11. </tr>
  12. <tr>
  13. <td colspan=2 align=center><input type=submit value="Wyslij"></td>
  14. </tr>
  15.  
  16. </form>
  17.  
  18. </body>
  19. </html>


No i skrypt w php do niego:

  1. <?php
  2. $name = $HTTP_POST_VARS['name'];
  3. $data=date;
  4. $db = @mysql_connect( 'localhost', 'root', '' )
  5. or die( 'Nie można połączyć z bazą!' );
  6. @mysql_select_db( 'mojabaza' )
  7. or die( 'Nie można wybrać bazy!' );
  8.  
  9. $zap = "SELECT data FROM uzytkownicy WHERE Login='$name'";
  10. $wynik = mysql_query($zap) or die("Zapytanie niepoprawne 2");
  11. $a = mysql_fetch_array($wynik);
  12. $a1=$a['data'];
  13. if ($a1==$data) {
  14. print('Już dziś tutaj byles');
  15. }
  16. else {
  17. $zap2 = "SELECT punkty FROM uzytkownicy WHERE Login='$name'";
  18. $wynik2 = mysql_query($zap2) or die("Zapytanie niepoprawne 3");
  19. $b = mysql_fetch_array($wynik2);
  20. $b2=$b['punkty'];
  21. $b2 = $b2+1;
  22. $zap3="update uzytkownicy set punkty='$b2', data='$data' where login='$name'";
  23. $wynik3 = mysql_query($zap3) or die("Zapytanie niepoprawne 4");
  24. print('Punkty zostaly zupgradowane');
  25. }
  26. ?>


No i po wyslaniu wyswietla komunikat ze baza zostala zupgradowana, ale... sami zobaczcie co on robi:
Formularz
Wpiszcie A jako Login
A tutaj macie wynik ;/
Wynik
Uzytkownik ma aktualnie w bazie 0 punktow i data jest 0000-00-00.
Jak widac niczego nie zupgradowal, co jest nie tak, prosze o pomoc?
nospor
Czemu, ale to czemu początkujacy userzy sa tak przekonani o bezbledności swoich skryptow, ze nigdy, ale to nigdy nie zrobią glupiego sprawdzenia:
echo $name;
?
Czemu? brekmar jestes w stanie mi to wyjasnic? Jakbys to zrobil to bys wiedzila ze ci sie $name nie pobiera, a nie pobiera sie bo pole ma nazwe Login a nie name....
ma byc:
  1. <?php
  2. $name = $_POST['login'];
  3. ?>

a na przyszlosc wal wszedzie echo gdzie sie tylko da

ps: przenosze
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.