Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP][HTML(?)] Automatyczne wysyłanie danych z formularza do bazy danych phpmyadmin.
Forum PHP.pl > Forum > Przedszkole
Klusek
Witam, dopiero raczkuję w tej dziedzinie, potrzebuję pomocy ekspertów.
Zrobiłem sobie przykładowy formularz, potrzebuje waszej pomocy aby połączyć go
z bazą danych! - powiedzcie mi czy te wszystkie dane zmieszczą się w jednym
pliku, czy potrzebne będzie więcej, jak to zrobić i jeszcze jak zainstalować na serwerze.

Przykładowy formularz:

  1. <title>test</title></head>
  2. <body>
  3. <input type="text" size="30" name="imie"><br>
  4. <input type="text" size="40" name="nazwisko_test"><br>
  5. <input type="submit" value="wyślij">
  6. </body>
  7. </html>


Co zrobić aby po naciśnięciu przycisku, te dane: "imie", "nazwisko" - zostały wysłane do bazy w której ja sobie je odczytam?

Proszę o pomoc, pozdrawiam.
q3trm
Aby połączyć twój formularz z bazą danych potrzebujesz użyć biblioteki mysql lub mysqli(zalecana) http://www.php.net/manual/en/book.mysqli.php. Twój formularz jest błędny bo nie zawiera tagu otwierającego formularz <form action ="plik_do_którego_wysyłasz_dane" method="sposób_przesłania">

http://ti.zs2-stargard.edu.pl/kurs_php/bazy.html
http://www.kess.snug.pl/?sid=10&pid=42
http://funkcje.net/view/2/8/64/
http://edodatki.pl/porada-dla-webmasterow/...ze-w-phpmyadmin
powyższe linki zawierają dość proste wytłumaczenie jak wykonać podstawowe operacje na bazie z poziomu PHP, tylko funkcje, których używa autor są już przestarzałe i nie powinno się ich używać, natomiast zasada działania ta sama.
Klusek
Cytat(q3trm @ 19.11.2013, 22:40:49 ) *
Aby połączyć twój formularz z bazą danych potrzebujesz użyć biblioteki mysql lub mysqli(zalecana) http://www.php.net/manual/en/book.mysqli.php. Twój formularz jest błędny bo nie zawiera tagu otwierającego formularz <form action ="plik_do_którego_wysyłasz_dane" method="sposób_przesłania">

http://ti.zs2-stargard.edu.pl/kurs_php/bazy.html
http://www.kess.snug.pl/?sid=10&pid=42
http://funkcje.net/view/2/8/64/
powyższe linki zawierają dość proste wytłumaczenie jak wykonać podstawowe operacje na bazie z poziomu PHP, tylko funkcje, których używa autor są już przestarzałe i nie powinno się ich używać, natomiast zasada działania ta sama.


Mam pytanie, wszystkie te linijki kodu wpisuje w notatniku który zapisuje jako rozszerzenie .html czy .php? - moja strona została stworzona w notatniku z rozszerzeniem .html, wszystkie te linijki będę musiał dodać do pliku mojej strony czy utworzyć osobne pliki?

@edit.

Bazę danych już posiadam. Nie potrafię stworzyć tych plików z linijkami kodu dzięki którym dane zostaną przesłane.
q3trm
zawsze zapisuj z rozszerzeniem php. Natomiast kod PHP do obsługi twojego formularza najlepiej umieść w osobnym pliku, czyli w miejsce action podaj nazwę pliku np: "obsluga_formularza.php"<-- twój plik, w którym będą funkcje odpowiedzialne za zapis danych z formularza. Pliki musisz trzymać w tym samym katalogu.


//EDIT

Pokaż co już masz, to ci zarysuję jak to powinno wyglądać.
Klusek
Cytat(q3trm @ 19.11.2013, 23:05:09 ) *
zawsze zapisuj z rozszerzeniem php. Natomiast kod PHP do obsługi twojego formularza najlepiej umieść w osobnym pliku, czyli w miejsce action podaj nazwę pliku np: "obsluga_formularza.php"<-- twój plik, w którym będą funkcje odpowiedzialne za zapis danych z formularza. Pliki musisz trzymać w tym samym katalogu.


//EDIT

Pokaż co już masz, to ci zarysuję jak to powinno wyglądać.


Przepraszam że tak późno, wcześniej się nie dało. Wyszło mi coś takiego:
  1. <form action ="zbiornik_danych" method="POST">
  2. <title>test</title>
  3. Wprowadź imię:<input type="text" size="30" name="imie"><br>
  4. Wprowadź nazwisko:<input type="text" size="40" name="nazwisko"><br>
  5. <input type="submit" value="wyslij">
  6. </form>


<form action ="zbiornik_danych" - tutaj podaje plik do którego formularz będzie wysyłał dane?

Oraz:

  1. <?php
  2.  
  3. $imie = $_POST['imie'];
  4. $nazwisko = $_POST['nazwisko'];
  5.  
  6. if($imie and $nazwisko) {
  7.  
  8. $connection = @mysql_connect('mysql1.ph-hos.osemka.pl', '1384962389_f', '123456')
  9. or die('Brak połączenia z serwerem MySQL');
  10. $db = @mysql_select_db('test', $connection)
  11. or die('Nie mogę połączyć się z bazą danych');
  12.  
  13. $ins = @mysql_query("INSERT INTO test SET imie='$imie', nazwisko='$nazwisko'");
  14.  
  15. if($ins) echo "Rekord został dodany poprawnie";
  16. else echo "Błąd nie udało się dodać nowego rekordu";
  17.  
  18. mysql_close($connection);
  19. }
  20.  
  21. ?>


$db = @mysql_select_db('test', $connection) - co mam wypełnić w polu "test"? - od czego jest to @mysql_select_db('?', $connection)
q3trm
Cytat(Klusek @ 20.11.2013, 16:53:06 ) *
<form action ="zbiornik_danych" - tutaj podaje plik do którego formularz będzie wysyłał dane?

Tak, dane nie tylko będą wysłane, ale również zostaniesz przeniesiony do tego pliku.

Cytat(Klusek @ 20.11.2013, 16:53:06 ) *
[PHP] pobierz, plaintext
<?php

$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];

if($imie and $nazwisko) {

$connection = @mysql_connect('mysql1.ph-hos.osemka.pl', '1384962389_f', '123456')
or die('Brak połączenia z serwerem MySQL');
$db = @mysql_select_db('test', $connection)
or die('Nie mogę połączyć się z bazą danych');

$ins = @mysql_query("INSERT INTO test SET imie='$imie', nazwisko='$nazwisko'");

if($ins) echo "Rekord został dodany poprawnie";
else echo "Błąd nie udało się dodać nowego rekordu";

mysql_close($connection);
}

?>
[PHP] pobierz, plaintext


$db = @mysql_select_db('test', $connection) - co mam wypełnić w polu "test"? - od czego jest to @mysql_select_db('?', $connection)


mysql_select_db - służy do wyboru bazy danych na jakiej będziesz operował podczas połączenia z serwerem MySQL, a więc w miejsce 'test' podajesz nazwę bazy danych.
Linię 13 zmień na $ins = @mysql_query("INSERT INTO test SET imie='{$imie}', nazwisko='{$nazwisko}''"); w miejsce 'test' musisz wstawić nazwę tabeli do której mają się dodać dane. Każdą zmienną dodawaną do funkcji mysql, która ma być typu CHAR,VARCHAR,TEXT dajesz w apostrof i nawiasy klamrowe, lub takie coś ime='".$imie."' nazwisko='".$nazwisko."' w zależności od wersji PHP jaką masz na serwerze.
com
nie podawaj swoich passów biggrin.gif

pomyśl nad zmiana silnika z mysql_* na mysqli_* lub PDO bo mysql_* znikło już php wink.gif
Klusek
Cytat(q3trm @ 23.11.2013, 00:03:32 ) *
Tak, dane nie tylko będą wysłane, ale również zostaniesz przeniesiony do tego pliku.



mysql_select_db - służy do wyboru bazy danych na jakiej będziesz operował podczas połączenia z serwerem MySQL, a więc w miejsce 'test' podajesz nazwę bazy danych.
Linię 13 zmień na $ins = @mysql_query("INSERT INTO test SET imie='{$imie}', nazwisko='{$nazwisko}''"); w miejsce 'test' musisz wstawić nazwę tabeli do której mają się dodać dane. Każdą zmienną dodawaną do funkcji mysql, która ma być typu CHAR,VARCHAR,TEXT dajesz w apostrof i nawiasy klamrowe, lub takie coś ime='".$imie."' nazwisko='".$nazwisko."' w zależności od wersji PHP jaką masz na serwerze.



Cytat(com @ 23.11.2013, 03:50:19 ) *
nie podawaj swoich passów biggrin.gif

pomyśl nad zmiana silnika z mysql_* na mysqli_* lub PDO bo mysql_* znikło już php wink.gif


Kolejny problem, po wrzuceniu plików na hosting i wejściu na dany adres, nic nie wyskakuje "strona jest zablokowana" - tak jakby nic nie działało.

  1. <H1>Formularz</H1>
  2. <form action ="zbiornik_danych" method="POST">
  3. <title>test</title>
  4. Wprowadź imię:<input type="text" size="30" name="imie"><br>
  5. Wprowadź nazwisko:<input type="text" size="40" name="nazwisko"><br>
  6. <input type="submit" value="wyslij">
  7. </form>
  8. </body>
  9. </html>


Tak powinien wyglądać formularz? - zapisać go w .html i wrzucić na hosting, co trzeba jeszcze dodać aby pliki siebie obługiwały?
Turson
<title>test</title> powinno być w sekcji <head></head> (pomiędzy <html> a <body>)

  1. <form action ="zbiornik_danych" method="POST">

Używasz ModRewrite, że formularz kierujesz na zbiornik_danych? Prędzej zbiornik_danych.php smile.gif
Klusek
Cytat(Turson @ 23.11.2013, 12:07:52 ) *
<title>test</title> powinno być w sekcji <head></head> (pomiędzy <html> a <body>)

  1. <form action ="zbiornik_danych" method="POST">

Używasz ModRewrite, że formularz kierujesz na zbiornik_danych? Prędzej zbiornik_danych.php smile.gif


Poprawione, lecz po wrzuceniu na hosting i wpisaniu adresu strony, nie pokazuje formularza. Pomocy :/
Turson
Jakie rozszerzenie ma plik formularza?
q3trm
Spróbuj ten kod

  1. <!doctype html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>test</title>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <H1>Formularz</H1>
  12. <form action ="zbiornik_danych.php" method="POST">
  13.  
  14. Wprowadź imię:<input type="text" size="30" name="imie"><br>
  15. Wprowadź nazwisko:<input type="text" size="40" name="nazwisko"><br>
  16. <input type="submit" value="wyslij">
  17. </form>
  18.  
  19. </body>
  20.  
  21. </html>
  22.  
  23.  


Polecam najpierw nauczyć się HTML'a a potem brać się za PHP.

//EDIT
Jeżeli chcesz zobaczyć formularz zaraz po wejściu na stronę musisz go trzymać w pliku index najlepiej z rozszerzeniem .php.
Turson
Cytat(q3trm @ 23.11.2013, 12:59:12 ) *
Jeżeli chcesz zobaczyć formularz zaraz po wejściu na stronę musisz go trzymać w pliku index najlepiej z rozszerzeniem .php.

Formularz może być HTML jak najbardziej.
Poza tym, charset nie zmienia nic w tym czy formularz się wyświetli czy nie.
Klusek
Cytat(q3trm @ 23.11.2013, 12:59:12 ) *
Spróbuj ten kod

  1. <!doctype html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>test</title>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <H1>Formularz</H1>
  12. <form action ="zbiornik_danych.php" method="POST">
  13.  
  14. Wprowadź imię:<input type="text" size="30" name="imie"><br>
  15. Wprowadź nazwisko:<input type="text" size="40" name="nazwisko"><br>
  16. <input type="submit" value="wyslij">
  17. </form>
  18.  
  19. </body>
  20.  
  21. </html>
  22.  
  23.  


Polecam najpierw nauczyć się HTML'a a potem brać się za PHP.

//EDIT
Jeżeli chcesz zobaczyć formularz zaraz po wejściu na stronę musisz go trzymać w pliku index najlepiej z rozszerzeniem .php.


Strona działa: http://testtestowyrazdwa.aq.pl/
Lecz teraz kolejna sprawa, "zbiornik_danych.php" - jaki kod trzeba zastosować aby zostały one zapisane? + jak robi się to z tabelami w php my admin, przepraszam że pytam ale na filmikach/tutorialach próbowałem to robić lecz bez skutku. Baza danych stworzona, teraz jak się z nią połączyć i zapisać dane w tabeli?


Cytat(q3trm @ 23.11.2013, 12:59:12 ) *
Spróbuj ten kod

  1. <!doctype html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>test</title>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <H1>Formularz</H1>
  12. <form action ="zbiornik_danych.php" method="POST">
  13.  
  14. Wprowadź imię:<input type="text" size="30" name="imie"><br>
  15. Wprowadź nazwisko:<input type="text" size="40" name="nazwisko"><br>
  16. <input type="submit" value="wyslij">
  17. </form>
  18.  
  19. </body>
  20.  
  21. </html>


Polecam najpierw nauczyć się HTML'a a potem brać się za PHP.

//EDIT
Jeżeli chcesz zobaczyć formularz zaraz po wejściu na stronę musisz go trzymać w pliku index najlepiej z rozszerzeniem .php.

Strona działa: http://testtestowyrazdwa.aq.pl/
Lecz teraz kolejna sprawa, "zbiornik_danych.php" - jaki kod trzeba zastosować aby zostały one zapisane? + jak robi się to z tabelami w php my admin, przepraszam że pytam ale na filmikach/tutorialach próbowałem to robić lecz bez skutku. Baza danych stworzona, teraz jak się z nią połączyć i zapisać dane w tabeli?
com
masz bom w pliku zbiornik_danych.php wink.gif

  1. $imie = $_POST['imie'];
  2. $nazwisko = $_POST['nazwisko'];
  3.  
  4. if($imie and $nazwisko) {
  5.  
  6. $connection = @mysql_connect('mysql1.ph-hos.osemka.pl', '1384962389_f', '123456')
  7. or die('Brak połączenia z serwerem MySQL');
  8. $db = @mysql_select_db('test', $connection)
  9. or die('Nie mogę połączyć się z bazą danych');
  10.  
  11. $ins = @mysql_query("INSERT INTO test SET imie='$imie', nazwisko='$nazwisko'");
  12.  
  13. if($ins) echo "Rekord został dodany poprawnie";
  14. else echo "Błąd nie udało się dodać nowego rekordu";
  15.  
  16. mysql_close($connection);
  17. }

A ten kod to nie jest do tego?
Klusek
Cytat(com @ 23.11.2013, 21:43:04 ) *
masz bom w pliku zbiornik_danych.php wink.gif

A ten kod to nie jest do tego?


Możesz jaśniej wytłumaczyć? - dobrze, więc połączyłem się z bazą, lecz dlaczego dane nie są do niej wysyłane?

com
Jeśli chodzi o bom:
http://stackoverflow.com/questions/1742461...-utf-8-with-bom

Nie będę przepisywał manuala na nowo, zalecam skorzystanie z mysqli lub pdo... ale wracając do twojego nie szczęsnego kodu to Wygłuszasz błedy @ wiec nie wiesz naprawdę co się tam dzieje...
ten warunek if($ins) zostanie zawsze spełniony wiec jest bez sensu, do dodawania do bazy służy właśnie insert tak jak tu masz przejrzyj dokumentacje bo tam jest wszytko opisane :
http://us2.php.net/manual/en/ref.mysql.php

ewentualnie zajrzyj tu:
http://it.dth.pl/id/podstawowy-kurs-jezyka-sql/

btw nie SET bo insert budujesz tak:
  1. $q = 'INSERT INTO `'.$table.'` ('.$fields.') VALUES ('.$values.')';
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.