Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Formularz
Forum PHP.pl > Forum > Przedszkole
wilku002
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 ;
mortus
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.
wilku002
  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 :/
mortus
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
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.