Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny] formularz z wysyłaniem do MySQL
Forum PHP.pl > Forum > Przedszkole
raszbu
Witam,

Prowadzę stronę z linkami do transmisji sportowych ( http://transmisje.org.pl/ ). Chciałbym do niej dodać formularz dzięki któremu użytkownicy będą mogli dodawać swoje transmisje. Przy dużej pomocy google udało mi się stworzyć coś takiego: http://www.raszbu2.unixstorm.org/test/test2.php

Kod źródłowy prezentuje się tak:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. </head>
  5. <?php
  6. // nawiazujemy polaczenie
  7. $connection = @mysql_connect('xxxxxx', 'raszbu2_test2', 'xxxxxx')
  8. // w przypadku niepowodznie wyświetlamy komunikat
  9. or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error());
  10. // połączenie nawiązane ;-)
  11. echo "Udało się połączyć z serwerem!<br />";
  12. // nawiązujemy połączenie z bazą danych
  13. $db = @mysql_select_db('raszbu2_test2', $connection)
  14. // w przypadku niepowodzenia wyświetlamy komunikat
  15. or die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error());
  16. // połączenie nawiązane ;-)
  17. echo "Udało się połączyć z bazą dancych!";
  18. // zamykamy połączenie
  19. mysql_close($connection);
  20.  
  21. mysql_query("insert into nazwa_tabeli (pole1, pole2, pole3) values ('".$_POST['pole1']."','".$_POST['pole2']."', '".$_POST['pole1']."');");
  22. ?>
  23.  
  24.  
  25.  
  26. <table>
  27. <form action="" method="post">
  28. <tr>
  29. <td><b>Data:</b></td>
  30. <td><input type="text" name="formName"/></td>
  31. </tr>
  32.  
  33. <tr>
  34. <td><b>Godzina:</b></td>
  35. <td><input type="text" name="formNazwa"/></td>
  36. </tr>
  37.  
  38. <tr>
  39. <td><b>Nazwa:</b></td>
  40. <td><input type="text" name="formText"/></td>
  41. </tr>
  42.  
  43. <tr>
  44. <td><b>Link:</b></td>
  45. <td><textarea name="text"></textarea></td>
  46. </tr>
  47.  
  48. <tr>
  49. <td><b>Nazwa kanału:</b></td>
  50. <td><textarea name="formText"></textarea></td>
  51. </tr>
  52.  
  53. <tr>
  54. <td>&nbsp;</td>
  55. <td><input type="submit" name="submit" value="Wyślij formularz"/></td>
  56. </tr>
  57. </form>
  58. </table>
  59.  
  60.  
  61. </html>



Problem polega na tym że nic się nie dzieje w bazie danych - jest pusta mimo iż wysyłam do niej próbne treści.
Proszę żeby ktoś poprawił mi ten kod aby działał.
Daiquiri
Przenoszę do przedszkola. Usuń @ w kodzie tak na początek.
marius94
w 19 linijce masz zamkniecie polaczenia MySQL, wiec sie nie wykonuje
w 27 dodaj adres pliku
raszbu
Rozdzieliłem stronę z formularzem od strony ze skryptem php - wyczytałem że jest to bardziej bezpieczne.

Wyszło coś takiego:

test3.html
  1. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  2. </head>
  3.  
  4. <form action="skrypt_dodaj.php" method="post">
  5. <tr>
  6. <td><b>Data:</b></td>
  7. <td><input type="text" name="data"/></td>
  8. </tr>
  9.  
  10. <tr>
  11. <td><b>Godzina:</b></td>
  12. <td><input type="text" name="godzina"/></td>
  13. </tr>
  14.  
  15. <tr>
  16. <td><b>Nazwa:</b></td>
  17. <td><input type="text" name="nazwa"/></td>
  18. </tr>
  19.  
  20. <tr>
  21. <td><b>Link:</b></td>
  22. <td><textarea name="link"></textarea></td>
  23. </tr>
  24.  
  25. <tr>
  26. <td><b>Nazwa kanału:</b></td>
  27. <td><textarea name="nazwa_kanalu"></textarea></td>
  28. </tr>
  29.  
  30. <tr>
  31. <td>&nbsp;</td>
  32. <td><input type="submit" value="Wyślij formularz"/></td> <!-- nazwę przycisku usunąłem, bo nie trzeba go nawet nazywać (chyba że potrzebujesz tego np. do JS) -->
  33. </tr>
  34. </form>
  35.  
  36. </html>



skrypt_dodaj.php
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. </head>
  5.  
  6. <?php
  7. $mysqli = new mysqli( 'XX.XXX.XXX.XXX,'raszbu2_test2','xxxxx','raszbu2_test2');
  8. if($mysqli) echo "udało się połączyć z serwerem mysqli";
  9. if( isset($_POST['data']) && isset($_POST['godzina']) && isset($_POST['nazwa']) && isset($_POST['link']) && isset($_POST['nazwa_kanalu']))
  10. {
  11. $mysqli->query("insert into nazwa_tabeli (pole1, pole2, pole3, pole4, pole5) values ('".$_POST['data']."','".$_POST['godzina']."', '".$_POST['nazwa']."', '".$_POST['link']."', '".$_POST['nazwa_kanalu']."');");
  12. }
  13. else
  14. echo "nie dobrze - skrypt nie otrzymał danych od użytkownika!!!";
  15. $mysqli->close();
  16. ?>


Problem teraz wygląda tak że nie tworzy się nic w bazie danych - jest całkowicie pusta.

http://www.raszbu2.unixstorm.org/test/test3.html

Jak widać po linku serwer www znajduje się w firmie: http://www.unixstorm.org/ pakiet: biznes
Daiquiri
Chyba coś poknociłeś w 7 linijce z przecinkami i apostrofami w $mysqli; smile.gif

POSTY mają dane?
marius94
nie ma apostrofu konczacego po podanym hoscie.

zrob sobie jeszcze przed polaczeniem z baza

  1. print_r($_POST);


i sprawdz czy w ogole te dane dochodza. sprobuj tez wywalic na chwile linijki 9 i 10 i wtedy sprawdz czy sie cos dodaje do bazy. sprobuj tez wyslac od razu jakies dane zamiast tych z POSTa


ps. dlaczego rozdzielenie formularza od strony ze skryptem jest bezpieczniejsze? mozna prosic o jakis link do tego? smile.gif
raszbu
Takie coś?:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. </head>
  5.  
  6. <?php
  7.  
  8. $mysqli = new mysqli( 'host','raszbu2_test2','haslo','raszbu2_test2');
  9. if($mysqli) echo "udało się połączyć z serwerem mysqli";
  10. if( isset($_POST['data']) && isset($_POST['godzina']) && isset($_POST['nazwa']) && isset($_POST['link']) && isset($_POST['nazwa_kanalu']));
  11. {
  12. $mysqli->query("insert into nazwa_tabeli (pole1, pole2, pole3, pole4, pole5) values ('".$_POST['data']."','".$_POST['godzina']."', '".$_POST['nazwa']."', '".$_POST['link']."', '".$_POST['nazwa_kanalu']."');");
  13. }
  14. else
  15. echo "nie dobrze - skrypt nie otrzymał danych od użytkownika!!!";
  16. $mysqli->close();
  17. ?>



Ale w tedy wyskakuje taki błąd:
Kod
Parse error: syntax error, unexpected T_ELSE in /home/raszbu2/domains/raszbu2.unixstorm.org/public_html/test/skrypt_dodaj.php on line 14
melkorm
//PARSER MODE ON
Kod
if( isset($_POST['data']) && isset($_POST['godzina']) && isset($_POST['nazwa']) && isset($_POST['link']) && isset($_POST['nazwa_kanalu'])); // średnik

//PARSER MODE OFF
raszbu
Cytat(melkorm @ 24.03.2011, 14:27:17 ) *
//PARSER MODE ON
Kod
if( isset($_POST['data']) && isset($_POST['godzina']) && isset($_POST['nazwa']) && isset($_POST['link']) && isset($_POST['nazwa_kanalu'])); // średnik

//PARSER MODE OFF


Nie widzę różnicy pomiędzy kodem tym który podałeś a który był.
melkorm
A komentarz widzisz? Który jasno i wyraźnie opisuje Twój błąd?
raszbu
Cytat(melkorm @ 24.03.2011, 15:40:42 ) *
A komentarz widzisz? Który jasno i wyraźnie opisuje Twój błąd?


Nie
Daiquiri
Forum to nie parser. Średniki popraw!
raszbu
Dodałem ten średnik (wink.gif już i dalej nie działa.
melkorm
Eh, jednak bash ma w sobie coś racji ...
Cytat
<ivo> wiesz jaki jest najkrótszy żart informatyczny?
<J@R@$> ?
<ivo> programista php


Nie wkleję Tobie gotowca bo forum to nei parser jak już Daiquiri wspomniała.

Masz usunąć średnik który znajduje się na końcu linijki gdzie masz IF'a.
raszbu
Średnik usunięty:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. </head>
  5.  
  6. <?php
  7.  
  8. $mysqli = new mysqli('85.232.255.138','raszbu2_test2','ZKtvEqn9','raszbu2_test2');
  9. if($mysqli) echo "udało się połączyć z serwerem mysqli";
  10.  
  11. if( isset($_POST['data']) && isset($_POST['godzina']) && isset($_POST['nazwa']) && isset($_POST['link']) && isset($_POST['nazwa_kanalu']))
  12. {
  13. $mysqli->query("insert into nazwa_tabeli (pole1, pole2, pole3, pole4, pole5) values ('".$_POST['data']."','".$_POST['godzina']."', '".$_POST['nazwa']."', '".$_POST['link']."', '".$_POST['nazwa_kanalu']."');");
  14. }
  15. else
  16. echo "nie dobrze - skrypt nie otrzymał danych od użytkownika!!!";
  17. $mysqli->close();
  18. ?>


Dzięki za pomoc ale dalej nic mi się nie pojawia w bazie sad.gif
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.