Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz
Forum PHP.pl > Forum > PHP
Nigger
Witam. Dopiero zaczynam się uczyć i w ramach ćwiczeń chciałem zrobić system rejestracji i logowania. Zaczełem oczywiście od rejestracji. Narazie jest to malutki formularz ...Po wypełnieniu i wysłaniu danych do pliku php wyświetlama mi się nie to co bym chciał :-] i dane nie zapisują się do bazy danych.
Plik formularaza :
  1. <head>Rejestracja</head>
  2. <form action ="rejestracja.php" method=post>
  3. <table border =0>
  4. <tr>
  5. <td>Imie:</td>
  6. <td align="center"><input type="text" name="imie" size="30" maxlenght="20"></td>
  7. </tr>
  8. <tr>
  9. <td>Nazwisko:</td>
  10. <td align="center"><input type="text" name="nazwisko" size="30" maxlenght="20"></td>
  11. </tr>
  12. <tr>
  13. <td>e-mail</td>
  14. <td align="center"><input type="text" name ="email" size="30" maxlenght="20"></td>
  15. </tr>
  16. <tr>
  17. <td colspan align="center"><input type="submit" value="Zarejestruj"></td>
  18. </tr>
  19. </form>
  20. </body>
  21. </html>

A plik przetwarzający:
  1. <html>
  2. <head>Rejestracja</head>
  3. <?
  4. $imie=$_POST['imie'];
  5. $nazwisko=$_POST['nazwisko'];
  6. $email=$_POST['email'];
  7.  
  8. if(!$imie || !$nazwisko || !$email)
  9. {
  10. echo 'Nie podano wszystkich danych</bt> Wróc na poprzednią stronę.';
  11. }
  12.  
  13. if (!get_magic_quotnotes_gpc())
  14. {
  15. $imie = addslashes($imie);
  16. $nazwisko = addslashes($nazwisko);
  17. $email = addslashes($email);
  18. }
  19. @ $registr = new mysqli('localhost', 'rejestracja', 'rejestracja', 'registr');
  20.  
  21. if (mysqli_connect_errno())
  22. {
  23. echo 'Błąd: Połączenie z bazą danych nie udane. Spróbuj ponownie';
  24. }
  25.  
  26. $zapytanie = "insert into registr values (?.?.?.?)";
  27. $instrukcja = $registr->prepare($zapytanie);
  28. $instrukcja->bind_param("aaad".$imie.$nazwisko.$email);
  29. $instrukcja->execute();
  30. echo instrukcja->affected_rows.'</br>rejestracja zakończona powodzeniem.';
  31. $instrukcja->close();
  32. ?>

A wyświetla mi się coś takiego:
Rejestracja prepare($zapytanie); $instrukcja->bind_param("aaad".$imie.$nazwisko.$email); $instrukcja->execute(); echo instrukcja->affected_rows.'rejestracja zakończona powodzeniem.'; $instrukcja->close(); ?>
Moja baza danych nazywa się rejestracja, tabela registr, użytkownik i hasło to rejestracja (jak łatwo to zauważyć).Prosze o szybką pomoc.

PS. Temat umieszczam drugi raz poniewarz w dziale Bazy Danych jest mała oglądalność, a mi zależy na czasie...

EDIT. Czy to jest aż tak trudne, że nikt nie może mi odpowiedzieć? Naprawde zależy mi na czasie, a wczoraj nie moge uzyskać odpowiedzi. Ponawiam prośbe tongue.gif
nospor
1)zamiast <? sprobuj <?php
2) w instrukcja->affected_rows zjadles $ $instrukcja->affected_rows (poszukaj czy gdzies jeszcze tak nie masz)

Na przyszlosc nie zakladaj dwoch topicow na to samo, bo możesz coś "zarobic".
Nigger
Przepraszam za napisanie 2ch postów...
Ten problem już ominołem - trzeba było <php i $ przed instrukcja, ale pojawił się kolejny:

Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\rejestracja\rejestracja.php on line 30

Co może być tego powodem?
nospor
tym, ze $instrukcja nie jest obiektem. najwyraźniej:
$registr->prepare($zapytanie); nie zwraca ci obiektu. jakies bledy w zapytaniu? nie wiem co robi prepare wiec sie nie wypowiadam bardziej
Nigger
Sory, że tak zawracam dupe, ale mam ostatni problem tongue.gif
Już doszedłem czemu to tak wychodziło, ale teraz już jest coś "poważniejszego". Mój skrypt wygląda teraz tak:

  1. <html>
  2. <head>Rejestracja</head>
  3. <?php
  4. $imie=$_POST['imie'];
  5. $nazwisko=$_POST['nazwisko'];
  6. $email=$_POST['email'];
  7.  
  8. if(!$imie || !$nazwisko || !$email)
  9. {
  10. echo 'Nie podano wszystkich danych</br> Wróc na poprzednią stronę.';
  11. }
  12.  
  13. {
  14. $imie = addslashes($imie);
  15. $nazwisko = addslashes($nazwisko);
  16. $email = addslashes($email);
  17. }
  18. @ $db = new mysqli('localhost', 'rejestracja', 'rejestracja', 'rejestracja');
  19.  
  20. if (mysqli_connect_errno())
  21. {
  22. echo 'Błąd: Połączenie z bazą danych nie udane. Spróbuj ponownie';
  23. }
  24.  
  25. $zapytanie = "insert into registr values (?,?,?,?)";
  26. $instrukcja = $db->prepare($zapytanie);
  27. $instrukcja->bind_param("aaad",$imie,$nazwisko,$email);
  28. $instrukcja->execute();
  29. echo $instrukcja->affected_rows.'rejestracja zakończona powodzeniem.';
  30. $instrukcja->close();
  31. php?>
  32. </html>


A błąd:
Rejestracja
Warning: mysqli_stmt::bind_param() [function.mysqli-stmt-bind-param]: Number of elements in type definition string doesn't match number of bind variables in C:\wamp\www\rejestracja\rejestracja.php on line 30
0rejestracja zakończona powodzeniem
Cysiaczek
Cytat(Nigger @ 4.07.2006, 10:35 ) *
  1. <?php
  2. $instrukcja->bind_param("aaad",$imie,$nazwisko,$email);
  3.  
  4. </html>
  5. ?>


A błąd:
Rejestracja
Warning: mysqli_stmt::bind_param() [function.mysqli-stmt-bind-param]: Number of elements in type definition string doesn't match number of bind variables in C:\wamp\www\rejestracja\rejestracja.php on line 30
0rejestracja zakończona powodzeniem


No widać wyraźnie, że źle bindujesz (podstawiasz). Liczba argumentów do których podstawiasz nie zgadza się z liczbą argumentów podstawianych. ufff.
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.