Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Nie działa mi skrypt
Forum PHP.pl > Forum > Przedszkole
michal_2
Witam. Piszę sobie skrypt prosty, który rejestruje recordy w bazie danych. Skrypt narazie nie jest z niczym powiązany, chciałem tylko zobaczyć czy uda mi się przez php wywrzeć jakieś działanie na bazie. Oto skrypt:

rejestracja.html
  1. <title>Rejestracja</title>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  3. </head>
  4. <form action=rejestracja.php method=POST>
  5. Podaj nazwę użytkownika:
  6. <input type=text name=uzyt><br>
  7. Podaj hasło:
  8. <input type=password name=has1><br>
  9. Potwierdź hasło:
  10. <input type=password name=has2><br>
  11. <input type=submit value=Wyślij><br>
  12. </form>
  13. </body>
  14. </html>


rejestracja.php
  1. <?php
  2. $mysqli = mysqli_connect("localhost", "michal2", "abracadabra", "strona");
  3.  
  4. if (mysqli_connect_errno())
  5. {
  6. printf("Nie udało się połączyć z bazą danych: %s\n", mysqli_connect_error());
  7. exit();
  8. }
  9. else
  10. {
  11. printf("Udało się połączyć z bazą.\n");
  12.  
  13. if (!empty($_POST['uzyt']) && !empty($_POST['has1']) && !empty($_POST['has2']))
  14. {
  15. if (strlen($_POST['uzyt']) < 6)
  16. {
  17. printf("Nazwa użytkownika musi mieć więcej niż 5 znaków.\n");
  18. exit();
  19. }
  20. if (strlen($_POST['has1'] < 6)
  21. {
  22. printf("Hasło musi mieć więcej niż 5 znaków.\n");
  23. exit();
  24. }
  25. if ($_POST['has1'] != $_POST['has2'])
  26. {
  27. printf("Hasło1 i hasło2 różnią się od siebie.\n");
  28. exit();
  29. }
  30. }
  31. }
  32.  
  33. $sql = "INSERT INTO strona (user, pass) VALUES (".$_POST['uzyt'].", ".$_POST['has1'].")";
  34. $rez = mysqli_query($mysqli, $sql);
  35.  
  36. if ($rez === TRUE)
  37. echo "Rejestracja zakończyła się pomyślnie.<br>";
  38. else
  39. printf("Nie udało się zakończyć rejestracji: %s\n", mysqli_error($mysqli));
  40.  
  41. mysqli_close($mysqli);
  42.  
  43. ?>


I teraz po wpisaniu na stronie danych i wciśnięciu Wyślij - nic się nie pojawia. Nie wiem czemu. Proszę o pomoc.
Quantum
błąd w linii nr. 20

if (strlen($_POST['has1'] < 6), powinno być if (strlen($_POST['has1']) < 6).

kolejny w zapytaniu:

$sql = 'INSERT INTO strona (user, pass) VALUES (\''.$_POST['uzyt'].'\', \''.$_POST['has1'].'\')';

a jak już korzystasz z mysqli to poczytaj o przygotowywaniu zapytań http://php.net/manual/en/mysqli.prepare.php.

Swoją drogą to dziwne, że nic się nie wyświetla, daj przykładowe echo na początek pliku rejestracja.php i sprawdź co wypluje.
_Martin_
Wybacz, ze odejde od tematu ale proponuje jakiś program do pisania w php, obojetnie jakiś darmowy co ma fukcje kodowania i kolorowania składni, Wtedy wizualnie się nie pomylisz smile.gif
Polecam Komodo Edit IDE 5.2.4 smile.gif - Bądź inny z darmowych smile.gif
michal_2
Poprawiłem:

  1. <?php
  2. $mysqli = mysqli_connect("localhost", "michal2", "abracadabra", "strona");
  3.  
  4. if (mysqli_connect_errno())
  5. {
  6. printf("Nie udało się połączyć z bazą danych: %s\n", mysqli_connect_error());
  7. exit();
  8. }
  9. else
  10. {
  11. printf("Udało się połączyć z bazą.\n");
  12.  
  13. if (!empty($_POST['uzyt']) && !empty($_POST['has1']) && !empty($_POST['has2']))
  14. {
  15. if (strlen($_POST['uzyt']) < 6)
  16. {
  17. printf("Nazwa użytkownika musi mieć więcej niż 5 znaków.\n");
  18. exit();
  19. }
  20. if (strlen($_POST['has1']) < 6)
  21. {
  22. printf("Hasło musi mieć więcej niż 5 znaków.\n");
  23. exit();
  24. }
  25. if ($_POST['has1'] != $_POST['has2'])
  26. {
  27. printf("Hasło1 i hasło2 różnią się od siebie.\n");
  28. exit();
  29. }
  30. }
  31. }
  32.  
  33. $sql = "INSERT INTO strona (user, pass) VALUES ('".$_POST['uzyt']."', '".$_POST['has1']."')";
  34. $rez = mysqli_query($mysqli, $sql);
  35.  
  36. if ($rez === TRUE)
  37. echo "Rejestracja zakończyła się pomyślnie.<br>";
  38. else
  39. printf("Nie udało się zakończyć rejestracji: %s\n", mysqli_error($mysqli));
  40.  
  41. mysqli_close($mysqli);
  42.  
  43. ?>

I nadal nic nie wyświetla
Blame
Nie
  1. if ($_POST['has1'] != $_POST['has2'])

a
  1. if ($_POST['has1'] !== $_POST['has2'])
michal_2
tak samo
EDIT:
Coś jest nie tak bo przepisałem z książki ten przykład (po zmienieniu oczywiście parametrów serwera):

  1. <?php
  2. $mysqli = mysqli_connect("localhost", "michal2", "abracadabra", "strona");
  3.  
  4. if (mysqli_connect_errno())
  5. {
  6. printf("Nie udało się połączyć: %s\n", mysqli_connect_error());
  7. exit();
  8. }
  9. else
  10. printf("Połączono z hostem: %s\n", mysqli_get_host_info($mysqli));
  11.  
  12. ?>


I też nic nie wyświetla... Z czego to może wynikać?
darko
linia 20. nie
if (strlen($_POST['has1'] < 6)
ale
if (strlen($_POST['has1']) < 6)


Walidacja danych z formularza powinna działać. Pokaż strukturę bazy i włącz ERROR_REPORTING E_ALL
michal_2
co to znaczy:

Pokaż strukturę bazy i włącz ERROR_REPORTING E_ALL
questionmark.gif
cim
Witam,

jakie masz tabele, pola etc. a error_reporting to:


Pozdrawiam
Blame
To znaczy że masz nam pokazać jak wygląda tabela MySQL z której korzystasz(nazwy pól itp.) i na początku pliku php dodać linijkę error_reporting(E_ALL);
michal_2
tabela strona, a pola to user i pass, a tą linijkę dodam potem bo jestem teraz w gościach smile.gif

EDIT: No więc dodałem tą linijkę i nic się nie zmieniło.

Jak ustawiłem na początku skryptu:

  1. ini_set('display_errors', 1);


to wskakuje mi błąd:

Fatal error: Call to undefined function mysqli_connect() in D:\Apache\Apache2\htdocs\n.php on line 4

Jak ustawić raportowanie błędów jako standard|?
I jak poradzić sobie z tym błędem|?
skowron-line
Cytat(michal_2 @ 27.12.2009, 11:12:29 ) *
Jak ustawić raportowanie błędów jako standard|?
I jak poradzić sobie z tym błędem|?

Co to znaczy standard questionmark.gif
A co oznacza taki błąd co znaczy w języku polskim wyraz undefined questionmark.gif Sprawdź czy masz włączone mysqli na swoim serwerze. ( podpowiedz: phpinfo(); )
Mephistofeles
Włączyłeś rozszerzenie MySQLi w php.ini?

Spóźniłem się. Zajrzyj do php.ini, tam sobie włączysz wszystko co chcesz (raportowanie błędów, rozszerzenia), wyłącz przy okazji register_globals i magic_qoutes.
michal_2
Ok już znalazłem. W pliku php.ini trzeba było takie coś wstawić:

extension=ext/php_mysql.dll
extension=ext/php_mysqli.dll

i teraz działa. A teraz wracając do skryptu:

  1. <?php
  2. $mysqli = mysqli_connect("localhost", "michal2", "abracadabra", "strona");
  3.  
  4. if (mysqli_connect_errno())
  5. {
  6. printf("Nie udało się połączyć z bazą danych: %s\n", mysqli_connect_error());
  7. exit();
  8. }
  9. else
  10. {
  11. printf("Udało się połączyć z bazą.\n");
  12.  
  13. if (!empty($_POST['uzyt']) && !empty($_POST['has1']) && !empty($_POST['has2']))
  14. {
  15. if (strlen($_POST['uzyt']) < 6)
  16. {
  17. printf("Nazwa użytkownika musi mieć więcej niż 5 znaków.\n");
  18. exit();
  19. }
  20. if (strlen($_POST['has1']) < 6)
  21. {
  22. printf("Hasło musi mieć więcej niż 5 znaków.\n");
  23. exit();
  24. }
  25. if ($_POST['has1'] !== $_POST['has2'])
  26. {
  27. printf("Hasło1 i hasło2 różnią się od siebie.\n");
  28. exit();
  29. }
  30. }
  31. }
  32.  
  33. $sql = "INSERT INTO strona (user, pass) VALUES ('".$_POST['uzyt']."', '".$_POST['has1']."')";
  34. $rez = mysqli_query($mysqli, $sql);
  35.  
  36. if ($rez === TRUE)
  37. echo "Rejestracja zakończyła się pomyślnie.<br>";
  38. else
  39. printf("Nie udało się zakończyć rejestracji: %s\n", mysqli_error($mysqli));
  40.  
  41. mysqli_close($mysqli);
  42.  
  43. ?>


Wyświetliło mi: Udało się połączyć z bazą. Nie udało się zakończyć rejestracji: Table 'strona.strona' doesn't exist

Jak sobie z tym poradzić|?
skowron-line
@michal_2 ośmieszasz się takimi pytaniami
http://translate.google.pl/#en|pl| tu masz translator i każdy błąd sobie tu wklejaj skoro nie znasz angielskiego i nie wiesz co znaczy "doesn't exist"

@DOWN
a nie wpadłeś na to żeby sobie zapytanie na ekran zrzucić i zobaczyć co może być nie tak questionmark.gif
michal_2
Nie no rozumiem błąd ale nie rozumiem czemu chce tabele strona.strona a nie strona. Pisałem mu żeby otworzył tabele strona.

Edit: Już wsyztsko działa. Wpisałem nazwe tabeli strona zamiast uzytkownicy. Teraz działa dobrze dzięki.
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.