Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z wysyłaniem danych do bazy
Forum PHP.pl > Forum > Przedszkole
Kokonio
Witam

na wejściu chcę powiedzieć że jestem dosyć ciemny w sprawach php i mysql (tudzież innych baz danych)
Mam pewien wiekowy skrypt ligi. Skrypt został daaawnoo temu zrobiony specjalnie pod pewną grę strategiczną i nie jest zbyt duży i rozbudowany.

Problem jest następujący. Przy wysyłaniu danych do bazy przy rejestracji gracza wyrzuca błąd ("skopałeś sprawę")

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Language" content="pl">
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  5. <title>Witaj waszmość</title>
  6. </head>
  7. <body>
  8. <?php
  9. if ($nick=='' or $pass=='' or $pass2=='' or $email=='' or $pass<>$pass2)
  10. {
  11. print "Skopales sprawe";
  12. }
  13. else {
  14. mysql_connect ("localhost","dane_znówjakieśtam", "dane_jakieśtam") or die ("Could not connect");
  15. $result1 = mysql_db_query ("jakaśtamnazwa", "select nick from cossacks_players where nick='$nick'") or die ("Query failed ?");
  16. $row1=mysql_fetch_row($result1);
  17. $nick_check=$row1[0];
  18. if ($nick==$nick_check) {
  19. print "Gracz o nicku $nick juz istnieje";
  20. }
  21. else {
  22. print "$nick, $nick_check";
  23. mysql_db_query ("in4", "insert into cossacks_players values ('$nick','$pass','$email','0','0','0','0','0')") or die ("Query failed dodawanie");
  24. print "$nick - WITAJ W LIDZE";
  25. }
  26. }


Z tego co widzę, ten błąd wyrzuca gdy jedno z pól nick/pass/e-mail jest puste albo hasła nie zgadzają się. Wszystkie dane na 100% są wprowadzane poprawnie.
Gdy usunąłem tą funkcję warunkową, pojawiła się informacja - "Gracz o takim nicku już istnieje" - pomimo że baza jest pusta!
Usunałem również tą funkcję aby zobaczyć czy wogole przejdzie rejestracja - przeszła, pojawiła się informacja " , WITAJ W LIDZE" - lecz w bazie wpisy wyglądały tak
nick - [BLOB - 0bajtów] pass - [BLOB - 0bajtów] e-mail - (puste pole)

jakieś pomysły dlaczego tak się dzieje? tak jak wspomniałem wcześniej - to dosyć wiekowy skrypt, z bodajże 2001/2002 roku.

Pozdrawiam serdecznie i liczę na pomoc.
skarabe.pl
Wygląda na klasyka: register_globals (poczytaj). Generalnie powinno pomóc umieszczenie przed pierwszym warunkiem tego:
  1. $nick = $_POST['nick'];
  2. $pass = $_POST['pass'];
  3. $pass2 = $_POST['pass2'];
  4. $email = $_POST['email'];
Kokonio
super, działa - dzięki wielkie! smile.gif pięknie zapisuje dane do bazy i sprawdza czy nick/hasła są poprawne.
jeszcze mam jedno pytanie - skrypt logowania też szwankuje - chyba problem jest podobny jak w poprzednim skrypcie.
przy logowaniu cofa do http://jakaś_stronka/login.htm

  1. <?php
  2.  
  3. mysql_connect ("localhost","bazunia", "haseło") or die ("Could not connect");
  4. $result1 = mysql_db_query ("bazunia", "select * from cossacks_players where nick='$login'") or die ("Query failed");
  5. $row1=mysql_fetch_row($result1);
  6. $pass_ok=$row1[1];
  7.  
  8. if ($password == '' or $password <> $pass_ok) {header("Location:http://jakaś stronka/login.htm"); }
  9. else {
  10. include ("przegralem2.php"); }
  11. ?>


czy problem też polega na register_globals przed funkcją?
próbowałem dodać przed skryptem
  1. $nick = $_POST['nick'];
  2. $password = $_POST['pass'];
  3. $pass_ok = $_POST['pass'];

lecz bez pozytywnego skutku. Co muszę poprawić aby również ta funkcja if/else zadziałała?

Liczę na pomoc, oczywiście skarabe.pl - punkcik pomocy dla Ciebie za poprzedni problem smile.gif
skarabe.pl
Pod $password podstaw $_POST['password'] a nie $_POST['pass'] - powinno pomóc smile.gif
Kokonio
  1. $nick = $_POST['nick'];
  2. $password = $_POST['password'];
  3. $pass_ok = $_POST['password'];

dałem w ten sposób - niestety bez rezultatu. Jakiś inny pomysł ? smile.gif
skarabe.pl
Masz jeszcze zmienną $login (a inicjujesz $nick - zdecyduj się). Spróbuj tak:
  1. $login = $_POST['login'];
  2. $password = $_POST['password'];
Kokonio
działa pięknie! dzięki wielkie smile.gif

część plików sam poprawiłem na przykładzie 2 poprzednich, gdzie pokazałeś mi jak to zrobić.

Mam problem jeszcze z plikami tego typu (tam gdzie pojawia się $row)
  1. <?php
  2. mysql_connect ("localhost","bazunia", "bazunia") or die ("Could not connect");
  3. $result1 = mysql_db_query ("bazunia", "select * from cossacks_battles where looser='$nick' or winner='$nick' order by data desc") or die ("Query failed");
  4. $result2 = mysql_db_query ("bazunia", "select email from cossacks_players where nick='$nick'") or die ("Query failed");
  5. $row2=mysql_fetch_row($result2);
  6. $email=$row2[0];
  7. print "<a href=\"mailto:$email?subject=Cossacks\"><strong>$nick</a> - wykaz spotkań</strong><br><br></td></tr>";
  8. while ($row=mysql_fetch_array($result1)) {
  9. $looser=$row["looser"];
  10. $winner=$row["winner"];
  11. $kto=$row["kto"];
  12. $pt=$row["pt"];
  13. $lc=$row["lc"];
  14. $wc=$row["wc"];
  15. $art=$row["art"];
  16. $wersja=$row["wersja"];
  17. $ile_winner=$row["ile_winner"];
  18. include ("czas.php");
  19. print "<tr><td align=\"right\">";
  20. if ($nick==$winner) { print "<font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\">   $day.$month.$year, $hour:$minute  </font></td><td><font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\"><b>$nick</b>($wc) +$ile_winner pkt. wygrał z <b>$looser</b>($lc) +1 pkt.</font></td><td><font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\"> PT: $pt "; if ($wersja<>"") { print "ver: $wersja "; }
  21. print "Art: $art</font></td><td><font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\">Ustawiał: "; if ($kto=='0') {print "$looser"; } if ($kto=='1') {print "$winner"; } print "</font>"; }
  22. else {
  23. print "<font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\">   $day.$month.$year, $hour:$minute  </font></td><td><font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\"><b>$nick</B>($lc) +1 pkt. przegrał z <b>$winner</b>($wc) +$ile_winner pkt.</font></td><td><font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\"> PT: $pt  ";
  24. if ($wersja<>"") { print "ver: $wersja "; }
  25. print "Art: $art  </font></td><td><font size=\"1\" face=\"Tahoma\" color=\"#C8AA78\">Ustawiał: "; if ($kto=='0') {print "$looser";} if ($kto=='1') {print "$winner";} print "</font>"; }
  26. print "</td></tr>";
  27. }
  28. ?>

W tabeli w miejscu ART, PT itp ($art, $pt i tym podobne) jest puste miejsce. Jak zarejestrować tą zmienną?

  1. <?php
  2. mysql_connect ("localhost","dasdasdas", "dsadas") or die ("Could not connect");
  3. $result1 = mysql_db_query ("dasdasdas", "select * from cossacks_players order by punkty desc, mecze desc, nick") or die ("Query failed");
  4. while ($row=mysql_fetch_array($result1)) {
  5. $nick=$row["nick"];
  6. $punkty=$row["punkty"];
  7. $mecze=$row["mecze"];
  8. $result2 = mysql_db_query ("dasdasdas", "select count(*) from cossacks_battles where looser='$nick'") or die ("Query failed");
  9. $result3 = mysql_db_query ("dasdasdas", "select count(*) from cossacks_battles where winner='$nick'") or die ("Query failed");
  10. $row2=mysql_fetch_row($result2);
  11. $row3=mysql_fetch_row($result3);
  12. $lost=$row2[0];
  13. $won=$row3[0];
  14. if ($lost > 0) {
  15. $skutecznosc=round(($won*100)/($lost+$won),0);
  16. }
  17. else { $skutecznosc=100; }
  18. if ($lost==0 and $won==0) { $skutecznosc=0; }
  19.  
  20. print "Gracz: $nick - Punktów: $punkty - Meczy: $mecze - przegral: $lost - wygral: $won - skutecznosc: $skutecznosc%<br>";
  21. }
  22.  
  23. ?>

analogicznie tutaj - zamiast punktów, meczy, skuteczności itp - jest wszędzie 0 - pomimo że rozegrano parę meczy.



Z góry dzięki za pomoc - jestem laikiem w tych sprawach, ale dzięki poprzednim postom udało mi się samemu część rzeczy naprawić - za co jestem Ci naprawdę wdzięczny smile.gif

Pozdrawiam, czekam na odpowiedź.
skarabe.pl
Zrób print_r($row) tuż za while i przeklej tutaj to, co Ci się wyświetliło.
Kokonio
zrobiłem tak:
  1. <?php
  2. mysql_connect ("localhost","dasdasdas", "dsadas") or die ("Could not connect");
  3. $result1 = mysql_db_query ("dasdasdas", "select * from cossacks_players order by punkty desc, mecze desc, nick") or die ("Query failed");
  4. while print_r($row) ($row=mysql_fetch_array($result1)) {
  5. $nick=$row["nick"];
  6. $punkty=$row["punkty"];
  7. $mecze=$row["mecze"];
  8. $result2 = mysql_db_query ("dasdasdas", "select count(*) from cossacks_battles where looser='$nick'") or die ("Query failed");
  9. $result3 = mysql_db_query ("dasdasdas", "select count(*) from cossacks_battles where winner='$nick'") or die ("Query failed");
  10. $row2=mysql_fetch_row($result2);
  11. $row3=mysql_fetch_row($result3);
  12. $lost=$row2[0];
  13. $won=$row3[0];
  14. if ($lost > 0) {
  15. $skutecznosc=round(($won*100)/($lost+$won),0);
  16. }
  17. else { $skutecznosc=100; }
  18. if ($lost==0 and $won==0) { $skutecznosc=0; }
  19.  
  20. print "Gracz: $nick - Punktów: $punkty - Meczy: $mecze - przegral: $lost - wygral: $won - skutecznosc: $skutecznosc%<br>";
  21. }
  22.  
  23. ?>


Wynik:
Cytat
Parse error: syntax error, unexpected T_STRING, expecting '(' in /usr/home/ggdf/domains/cgdfgl/public_html/cup/pokaz_wyniki.php on line 4
wujek2009
Usuń print_r($row) z 4 linijki, ponieważ w złym miejscu umieściłeś to. PRINT_R wstaw np. przed: $nick=$row["nick"];
Kokonio
dałem tak -
  1. while ($row=mysql_fetch_array($result1)) {
  2. print_r($row) $nick=$row["nick"];

potem również tak-
  1. while ($row=mysql_fetch_array($result1)) {
  2. print_r $nick=$row["nick"];


błąd ten sam :
Cytat
Parse error: syntax error, unexpected T_VARIABLE in /usr/home/ladas/domains/dasdsa/public_html/cup/pokaz_wyniki.php on line 5
wujek2009
Kod
while($row=mysql_fetch_array($result1)) {
print_r($row);
$nick=$row["nick"];
Kokonio
wynik:

Kod
Array ( [0] => a [nick] => a [1] => a [pass] => a [2] => a@a.pl [email] => a@a.pl [3] => 0 [punkty] => 0 [4] => 0 [mecze] => 0 [5] => 0 [I] => 0 [6] => 0 [II] => 0 [7] => 0 [III] => 0 ) Gracz: a - Punktów: 0 - Meczy: 0 - przegral: 0 - wygral: 0 - skutecznosc: 0%
Array ( [0] => g [nick] => g [1] => g [pass] => g [2] => g@g.pl [email] => g@g.pl [3] => 0 [punkty] => 0 [4] => 0 [mecze] => 0 [5] => 0 [I] => 0 [6] => 0 [II] => 0 [7] => 0 [III] => 0 ) Gracz: g - Punktów: 0 - Meczy: 0 - przegral: 0 - wygral: 0 - skutecznosc: 0%
Array ( [0] => fdsfds [nick] => Koko [1] => fdsfds [pass] => fdsfds [2] => cxzcxz@ddsad.pl[email] => cxzcxz@ddsad.pl [3] => 0 [punkty] => 0 [4] => 0 [mecze] => 0 [5] => 0 [I] => 0 [6] => 0 [II] => 0 [7] => 0 [III] => 0 ) Gracz: fdsfds - Punktów: 0 - Meczy: 0 - przegral: 0 - wygral: 0 - skutecznosc: 0%
skarabe.pl
Baza nie kłamie - wszędzie są zera, ergo według Twojej bazy danych, wbrew temu co piszesz, nie został rozegrany żaden mecz.
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.