Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Formularz
wilku002
post 11.04.2010, 15:43:49
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 22.03.2010

Ostrzeżenie: (20%)
X----


Witam, mam pewien formularz wczytujący dane na baze MYSQL, żadnych błedów nie mam. Problem polega na tym, że wszystko oprócz pola "age" się nie wczytuje do bazy.

rejestracja.php
  1. <?php
  2. require('connect.php');
  3.  
  4. if (isset($_POST['konto']) and isset($_POST['password']) and isset($_POST['password2']) and isset($_POST['age']))
  5.  
  6. {
  7.  
  8. if ($_POST['password']==$_POST['password2'])
  9.  
  10. {
  11.  
  12. $konto = mysql_real_escape_string (trim($_POST['konto']));
  13.  
  14. $password = sha1(md5(mysql_real_escape_string (trim($_POST['password']))));
  15.  
  16. $ile =mysql_query("SELECT * FROM `players` WHERE Name = '$konto'");
  17.  
  18. $ile = mysql_num_rows($ile);
  19.  
  20. if ($ile==0) {
  21.  
  22. $zapytanie="INSERT INTO players (name,password,age) VALUES('$konto','$password','$age')";
  23.  
  24. mysql_query($zapytanie) or die("Wystąpił błąd" );
  25.  
  26. echo('Konto '.$konto.' zostalo utworzone');
  27.  
  28.  
  29.  
  30. }
  31.  
  32. else
  33.  
  34. {
  35.  
  36. echo("Taki uzytkownik juz istnieje. Kliknij wstecz aby zarejestrowac sie ponownie");
  37.  
  38. }
  39.  
  40. }
  41.  
  42. else echo ("Podane hasla nie zgadzaja sie");
  43.  
  44. }
  45.  
  46. else{
  47.  
  48. ?>
  49.  
  50. <html>
  51.  
  52. <body>
  53.  
  54. <form action="rejestracja.php" method="post">
  55.  
  56. <strong>Nazwa konta:</strong><input name="konto" type="text" value="" /><br>
  57.  
  58. <strong>Haslo:</strong><input name="password" type="password" value="" /><br>
  59.  
  60. <strong>Powtorz haslo:</strong><input name="password2" type="password" value="" /><br>
  61.  
  62. <strong>Wiek:</strong></strong><input name="age" type="text" value="" /><br>
  63.  
  64. <input type="submit" value="SUBMIT" />
  65.  
  66. </form>
  67.  
  68. </body>
  69.  
  70. </html>
  71.  
  72. <?php
  73.  
  74. }
  75.  
  76. ?>


connect.php
  1. <?
  2. define('DB_HOST','localhost');
  3. define('DB_USER','root'); //wpisz nazwęużytkownika bazy danych
  4. define('DB_PASS','vertrigo'); //wpisz hasło dla tego użytkownika
  5. define('DB_DB','lv-rp');
  6.  
  7. $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS)
  8. or die('Nie udało połączyc się z bazą danych. '.mysql_error());
  9.  
  10. mysql_select_db(DB_DB,$connect)
  11. ?>


Kod tabeli 'players'
  1. CREATE TABLE IF NOT EXISTS `players` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(50) character SET latin1 collate latin1_general_ci NOT NULL,
  4. `password` varchar(50) character SET latin1 collate latin1_bin NOT NULL,
  5. `adminlevel` int(11) NOT NULL DEFAULT '0',
  6. `sex` int(11) NOT NULL DEFAULT '1',
  7. `age` int(11) NOT NULL DEFAULT '1',
  8. `money` bigint(20) NOT NULL,
  9. `bank` int(11) NOT NULL DEFAULT '0',
  10. `kills` int(11) NOT NULL,
  11. `ck` int(11) NOT NULL DEFAULT '0',
  12. `bw` int(11) NOT NULL DEFAULT '0',
  13. PRIMARY KEY (`id`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
mortus
post 11.04.2010, 15:59:41
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


W linii 4 zamiast and użyj &&, ponieważ oba te operatory działają inaczej. Poza tym samo sprawdzenie isset($_POST['konto']) nie wystarcza, bo jeśli nie wypełnimy odpowiedniego pola w formularzu, to $_POST['konto'] i tak będzie ustawione (isset zwróci true). W zamian możemy użyć !empty($_POST['konto']). To samo tyczy się pola password i password2 oraz odpowiednich indeksów w tablicy $_POST ($_POST['password'] i $_POST['password2']). Twój kod w obecnej postaci umożliwia dodawanie do bazy użytkowników bez nazwy i hasła. Zastosuj zmiany, a powinno być w porządku.
Go to the top of the page
+Quote Post
wilku002
post 11.04.2010, 16:24:58
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 22.03.2010

Ostrzeżenie: (20%)
X----


  1. <?php
  2. require('connect.php');
  3.  
  4. if (!empty($_POST['konto']) && !empty($_POST['password']) && !empty($_POST['password2']) && !empty($_POST['age']))
  5.  
  6. {
  7.  
  8. if ($_POST['password']==$_POST['password2'])
  9.  
  10. {
  11.  
  12. $konto = mysql_real_escape_string (trim($_POST['konto']));
  13.  
  14. $password = sha1(md5(mysql_real_escape_string (trim($_POST['password']))));
  15.  
  16. $ile =mysql_query("SELECT * FROM `players` WHERE Name = '$konto'");
  17.  
  18. $ile = mysql_num_rows($ile);
  19.  
  20. if ($ile==0) {
  21.  
  22. $zapytanie="INSERT INTO players (name,password,age) VALUES('$konto','$password','$age')";
  23.  
  24. mysql_query($zapytanie) or die("Wystąpił błąd" );
  25.  
  26. echo('Konto '.$konto.' zostalo utworzone');
  27.  
  28.  
  29.  
  30. }
  31.  
  32. else
  33.  
  34. {
  35.  
  36. echo("Taki uzytkownik juz istnieje. Kliknij wstecz aby zarejestrowac sie ponownie");
  37.  
  38. }
  39.  
  40. }
  41.  
  42. else echo ("Podane hasla nie zgadzaja sie");
  43.  
  44. }
  45.  
  46. else{
  47.  
  48. ?>
  49.  
  50. <html>
  51.  
  52. <body>
  53.  
  54. <form action="rejestracja.php" method="post">
  55.  
  56. <strong>Nazwa konta:</strong><input name="konto" type="text" value="" /><br>
  57.  
  58. <strong>Haslo:</strong><input name="password" type="password" value="" /><br>
  59.  
  60. <strong>Powtorz haslo:</strong><input name="password2" type="password" value="" /><br>
  61.  
  62. <strong>Wiek:</strong></strong><input name="age" type="text" value="" /><br>
  63.  
  64. <input type="submit" value="SUBMIT" />
  65.  
  66. </form>
  67.  
  68. </body>
  69.  
  70. </html>
  71.  
  72. <?php
  73.  
  74. }
  75.  
  76. ?>


Przerobiłem tak jak mówiłeś i to nic nie dało :/

Niby wszystko jest w porządku Name i Password się wpisuje do tablicy a age nie :/

Ten post edytował wilku002 11.04.2010, 16:26:10
Go to the top of the page
+Quote Post
mortus
post 11.04.2010, 16:41:47
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Cytat(wilku002 @ 11.04.2010, 16:43:49 ) *
Problem polega na tym, że wszystko oprócz pola "age" się nie wczytuje do bazy.
Chyba problem polega na tym, że wartość pola age nie jest zapisywana w tabeli bazy danych, a wszystko inne jest. W linii 15 umieść
  1. $age = $_POST['age'];
i powinno działać. A błędów Ci nie wyświetla, bo masz wyłączone wyświetlanie i raportowanie błędów. Aby je włączyć dodaj na początku kod
  1. ini_set('display_errors', 1);
Wtedy będą Ci się wszystkie błędy wyświetlać. Na przyszłość zapoznaj się z tematem Jak poprawnie zadać pytanie.
Pozdrawiam

Ten post edytował mortus 11.04.2010, 16:44:09
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:40