Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]Problem z method="post"
wafel611
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


Witam, jestem dosyć początkujący i od razu wystąpił pewien problem, otóż mam taki sobie tutaj skrypt:

  1. <html>
  2. <head>
  3. <title>Gra tekstowa</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
  5. </head>
  6. <body>
  7.  
  8. <?
  9. mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
  10. mysql_select_db("xxx", "xxx", "xxx", "xxx") or die(mysql_error());
  11.  
  12. INSERT INTO final VALUES ('imie');
  13.  
  14. ?>
  15.  
  16. <form action="final.php" method="post" />
  17. Podaj swoje imię: <input type="text" name="imie"/>
  18. <input type="submit" value="Zatwierdź" />
  19.  
  20.  
  21. </body>
  22. </html>


I oczywiście wywala mi błąd
Kod
Parse error: syntax error, unexpected '<' in /home/sites/i/in/inf/xxx/final.php on line 16

Czy ktoś mógłby mi powiedzieć, co robię nie tak?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
Korab
post
Post #2





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

Ostrzeżenie: (0%)
-----


Kolego... mysql_query() sie klania.
Go to the top of the page
+Quote Post
kadlub
post
Post #3





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

Ostrzeżenie: (0%)
-----


nie masz zamknięcia formularza a to w linii 12 to jak ma niby działać
może powinno być tam mysql_query()
poczytaj też o POST i GET
Go to the top of the page
+Quote Post
wafel611
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


  1. <html>
  2. <head>
  3. <title>Gra tekstowa</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
  5. </head>
  6. <body>
  7.  
  8.  
  9. <form action="final.html" method="post" />
  10. Podaj swoje imię: <input type="text" name="imie"/>
  11. <input type="submit" value="Zatwierdź" />
  12. </form>
  13.  
  14. </body>
  15. </html>
  16.  
  17.  
  18. <?
  19. $mysql1 = "host"
  20. $mysql2 = "login"
  21. $mysql3 = "hasło"
  22. $mysql4 = "nazwa bazy"
  23. mysql_connect($mysql1, $mysql2, $mysql3)
  24. mysql_select_db($mysql4, $mysql1, $mysql2, $mysql3 )
  25. mysql_query("INSERT INTO final VALUES("('$_POST['imie']')")
  26. ?>


Dodałem, przeczytałem o post i get, niby wszystko robię tak jak jest na schematach, ale nijak mi nie chce dodać rekordów do bazy.

Ten post edytował wafel611 10.11.2011, 20:22:13
Go to the top of the page
+Quote Post
Kostek.88
post
Post #5





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jakie rozszerzenie ma Twoj plik? W formularzu masz wpisana akcje do HTML... Poza tym na dole sprobuj otworzyc skrypt znacznikiem <?php . Generalnie to nie ma znaczenia, ale spotkalem serwery skonfigurowane tak, ze otwarcie <? nie dzialalo.
Go to the top of the page
+Quote Post
wafel611
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


Plik ma rozszerzenie .html, próbowałem w php tak samo i nic nie daje. Dopisałem też <?php i nic.
Go to the top of the page
+Quote Post
Kostek.88
post
Post #7





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


1) plik do ktorego wysylasz akcje musi miec rozszerzenie PHP. No chyba, ze ktos ustawil inaczej, ale to graniczy z cudem.

2) Czy ten plik ktory zaprezentowales nazywa sie final.php?

3) Jaki blad Ci sie wyswietla? A moze sie nic nie wyswietla. Daj strukture tabeli, do ktorej dodajesz ten rekord...
Go to the top of the page
+Quote Post
mortus
post
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Zapis:
  1. <form action="final.html" method="post" />

jest nieprawidłowy. Zamykasz formularz zaraz po jego otwarciu, a pole imie i przycisk 'Zatwierdź' znajdują się poza tym formularzem i nie będą przesłane.
Powinno być:
  1. <form action="final.php" method="post">
  2. <!-- pola i przyciski -->
  3. </form>


I pozostaje jeszcze kwestia zapytania. Łańcuchy znaków ze zmiennymi łączymy np. tak:
  1. mysql_query("INSERT INTO final VALUES('{$_POST['imie']}')"

O tym radzę również poczytać.

Rozumiem, że serwer www z obsługą PHP masz postawiony i uruchomiony, a pliki znajdują się w odpowiednim katalogu?

Pominąłem kwestię budowy tabeli final. Czy mamy rozumieć, że ma ona w tej chwili jedną kolumnę. Jeśli nie, to zapytanie również nie zadziała. Posłuchaj rad Kaloryfera - parafrazując "ogrzej się".

Ten post edytował mortus 10.11.2011, 21:17:51
Go to the top of the page
+Quote Post
wafel611
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


  1. <html>
  2. <head>
  3. <title>Gra tekstowa</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
  5. </head>
  6. <body>
  7.  
  8.  
  9. <form action="final.php" method="post">
  10. Podaj swoje imię: <input type="text" name="imie">
  11. <input type="submit" value="Zatwierdź">
  12. </form>
  13.  
  14. </body>
  15. </html>
  16.  
  17.  
  18. <?php
  19. $mysql1 = "host";
  20. $mysql6 = "login";
  21. $mysql3 = "hasło";
  22. $mysql4 = "nazwa bazy";
  23. mysql_connect($mysql1, $mysql6, $mysql3) or die(mysql_error());
  24. mysql_select_db($mysql4, $mysql1, $mysql6, $mysql3) or die(mysql_error());
  25. mysql_query("INSERT INTO final VALUES('{$_POST['imie']}')");
  26. ?>


Dalej nic. Tabela posiada jedną kolumnę, nic więcej. Żadnego błędu.

Sprawdziłem też czy dobrze łączy się z bazą danych, nie ma z tym żadnego problemu, nie ma żadnych błędów.

Ten post edytował wafel611 10.11.2011, 22:35:50
Go to the top of the page
+Quote Post
abort
post
Post #10





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Może jestem przewrażliwiony, ale...
1. w tym przykładzie wszystko co zaczyna się od mysql_ jest FUNKCJĄ. Jak wiadomo, istotą funkcji jest zwracanie pewnych wartości.
2. mysql_connect zwraca wartość typu resource, warto tę wartość zbadać (mimo, że jest "or die...")
3. mysql_select_db jest funkcją, której przekazuje się jeden (opcjonalnie dwa) argumenty. Pierwszym, obowiązkowym, jest nazwa tabeli. Drugim (opcjonalnym) jest resource (zwrócone przez funkcję mysql_connect). U Ciebie są cztery - po kiego grzyba? Czytałeś w ogóle manual, czy wywołujesz funkcje "na czuja"? Jeśli to drugie, to nie dziw się
4. mysql_query - tu też warto zbadać wynik funkcji.

A tak w ogóle, to w celu zdiagnozowania kodu powinieneś:
1. na końcu użyć (w celu debugu) funkcji mysql_num_rows
2. zamiast mysql_query("INSERT INTO final VALUES('{$_POST['imie']}')"); użyj:
Kod
$query="INSERT INTO final VALUES('{$_POST['imie']}')";
echo "$query";
$result=mysql_query ($query);


... przynajmniej do czasu, kiedy nie nabędziesz biegłości w konstruowaniu zapytań sql.

P.S.
Jesteś pewien, że cztery apostrofy w jednym query do mysql nie robią kuku całej operacji? Spacja po "VALUES" nie wydaje Ci się potrzebna?
Go to the top of the page
+Quote Post
wafel611
post
Post #11





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


  1. <html>
  2. <head>
  3. <title>Gra tekstowa</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
  5. </head>
  6. <body>
  7.  
  8.  
  9. <form action="final.php" method="post">
  10. Podaj swoje imię: <input type="text" name="imie">
  11. <input type="submit" value="Zatwierdź">
  12. </form>
  13.  
  14. </body>
  15. </html>
  16.  
  17.  
  18. <?php
  19. $mysql1 = "xxx";
  20. $mysql6 = "xxx";
  21. $mysql3 = "xxx";
  22. $mysql4 = "xxx";
  23. $res = mysql_connect($mysql1, $mysql6, $mysql3) or die(mysql_error());
  24. mysql_select_db($mysql4, $res) or die(mysql_error());
  25. $query="INSERT INTO final VALUES('{$_POST['imie']}')";
  26. $result=mysql_query ($query);
  27. ?>


echo $query i $res dawało
Kod
INSERT INTO final VALUES('xxx')
oraz
Kod
Resource id #2

Skrypt w końcu działa tak jak powinien. Mam jednak pytanie, skąd
  1. $result
na końcu?

Ten post edytował wafel611 10.11.2011, 23:34:21
Go to the top of the page
+Quote Post
Kostek.88
post
Post #12





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
Jesteś pewien, że cztery apostrofy w jednym query do mysql nie robią kuku całej operacji?


1) Apostrofy sa konieczne przy wstawianiu wartosci tekstowych... przynajmniej w tym wypadku. A w tablicy... czy napiszesz $_POST['imie'] czy $_POST["imie"] to jest wszystko jedno. Sam uzywam apostrofow od kilku lat i nigdy nie mam problemow. Mozna to jeszcze napisac tak

  1. mysql_query('INSERT INTO final VALUES("' . $_POST['imie'] . '")');

i nie bedzie problemu (no chyba, ze literowke zrobilem wink.gif )

Cytat
Spacja po "VALUES" nie wydaje Ci się potrzebna?

Mnie wydaje sie niepotrzebna...

@wafel611
1) Dodaje Ci pusty rekord czy nic nie dodaje?

2) Daj strukture bazy danych. Jakiego typu masz to pole w bazie, do ktorego wstawiasz rekord?

Ten post edytował Kaloryfer 10.11.2011, 23:42:10
Go to the top of the page
+Quote Post
wafel611
post
Post #13





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


Dodaje już mi każdy rekord. Jedna tabela, jedno pole 'imie' text bez atrybutów. Problem rozwiązany już jest. Dziękuję wszystkim za pomoc, następnym razem postaram się trochę bardziej pogłówkować smile.gif
Go to the top of the page
+Quote Post
abort
post
Post #14





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Cytat(Kaloryfer @ 10.11.2011, 23:41:35 ) *
Mnie wydaje sie niepotrzebna...


Wiesz... ja wychodzę z założenia, że nadmierna spacja w query nie narobi zamieszania, a jej brak potrafi namieszać, i to bardzo. Poza tym, sama czytelność kodu jest ciutkę lepsza. Ale ja ekspertem nie jestem, w php piszę amatorsko (a nawet, rzekłbym, że rekreacyjnie).
Go to the top of the page
+Quote Post
Kostek.88
post
Post #15





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
Dodaje już mi każdy rekord. Jedna tabela, jedno pole 'imie' text bez atrybutów. Problem rozwiązany już jest. Dziękuję wszystkim za pomoc, następnym razem postaram się trochę bardziej pogłówkować


A moglbys napisac co bylo nie tak? Nastepnym razem daj wiecej informacji, a nie ze nie dziala tongue.gif

Cytat
Wiesz... ja wychodzę z założenia, że nadmierna spacja w query nie narobi zamieszania, a jej brak potrafi namieszać, i to bardzo. Poza tym, sama czytelność kodu jest ciutkę lepsza. Ale ja ekspertem nie jestem, w php piszę amatorsko (a nawet, rzekłbym, że rekreacyjnie).


Masz racje, czasem tak moze byc, fajny nawyk sobie wypracowales. To prawda, czytelnosc kodu, choc to kwestia indywidualna, moze byc troszke lepsza. Ale w tym przypadku nie byla konieczna po prostu smile.gif
Go to the top of the page
+Quote Post
wafel611
post
Post #16





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.11.2011

Ostrzeżenie: (0%)
-----


Po zmienieniu z:
  1. mysql_query("INSERT INTO final VALUES('{$_POST['imie']}')");

na:
  1. $query="INSERT INTO final VALUES('{$_POST['imie']}')";
  2. $result=mysql_query ($query);

oraz usunięciu niepotrzebnych zmiennych z
zaczęło dodawać rekordy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 00:30