Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularze i MySQL, czyli jeden wielki kłopot...
quex
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


Witam,

Mam problem z formularzami, a mianowicie chodzi o to, że gdy wklejam coś do pola textarea, to przekazuje mi dalej to, co wklejam, ale już nie wpisuje do bazy MySQL a jak wpisuje sam wszystko, co jest ok.

Formularz:
<textarea name="tresc" rows="20" cols="25"></textarea>
...
<input type="submit" value="wy&para;lij">

Skrypt dodający:
$result= mysql_query("INSERT INTO `artykuly` VALUES ('', '$temat', '$login', '$tresc', '$dzial_nr', '$data', '0','$emotikony','$bbcode','0')");


Pozdrawiam quex.

Ten post edytował quex 18.01.2005, 21:07:11
Go to the top of the page
+Quote Post
Ive
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


dalej to znaczy gdzie? do funkcji dodajacy? czy do np. validujacej ? opisz to moze dokladniej daj odpowiedzialne kody i opatrz te kody bbcodem ...
posluguj sie tablicami $_POST w funkcji dodajacej ... czyli np.
  1. <?
  2. $tresc = $_POST['tresc'];
  3. ?>

wiecej nie wywnioskowalem z twojej wypowiedzi ...
Go to the top of the page
+Quote Post
quex
post
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


dalej=do skryptu, pisze że jak sam coś pisze to dodaje, a jak wklejam to nie, więc chyba zmienna jest dobra, wiem jak mam używać zmiennych przekazywanych przez formularz.
Go to the top of the page
+Quote Post
shima
post
Post #4





Grupa: Zarejestrowani
Postów: 245
Pomógł: 0
Dołączył: 9.09.2002

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


Skąd wklejasz, czy kodowanie jest zgodne i (gdy niekoniecznie zgodne) czy jedno z nich to UTF?


--------------------
Nie ma nic stałego prócz zmiany...
Go to the top of the page
+Quote Post
quex
post
Post #5





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


wklejam z notatnika/worda
Go to the top of the page
+Quote Post
Ive
post
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


co?... ja tam nic nie rozumiem z twoich wypowiedzi haha.gif wklej tu caly kod odpowiedzialny za wyswietlenia forma i za dodanie danych do bazy
Go to the top of the page
+Quote Post
ARJ
post
Post #7





Grupa: Zarejestrowani
Postów: 453
Pomógł: 22
Dołączył: 20.09.2004
Skąd: Kraków - NH -

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


pokazałeś tylko wybrane kawałki kodu dotego bez bbcode. jak wysyłasz dane z formularza? post czy get? używaj $_POST["zmienna"] lub $_GET["zmienna"].
i z tego oc widze to w zapytaniu do bazy przed $temat jest niepotrzebny cudzysłów i przecinek.


--------------------
Warsztat: Windows 7 Pro 64bit | Apache 2.2 | PHP 5.2 | MySQL 5.0 | PHPmyadmin 2.6.4
Go to the top of the page
+Quote Post
Ive
post
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


@arj: on tam wstawil te '' , bo pewnie to sa apostrofy a nie cydzyslowia a to oznacza ze znajdue sie tam pole jakies [zapewne INT z AUTO_INCREMENT] i jakby tego nie dal to by zapytanie moglo zle dodawac rekordy do bazy ...
Go to the top of the page
+Quote Post
quex
post
Post #9





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


Widze, że się nie rozumiemy. Chodzi o to że pewnych tekstów mi nie chce zapisać do bazy :/. Formularz przekazuje dane metodą POST. Wszystkie zmienne są zapisane w pliki index.php, w postaci $_POST["zmienna"].
Oto kodzik:
Formularz:
  1. <?
  2. echo(&#092;"<form action=\"index.php?menu=dodaj&amp;co=artykul\" method=\"post\">\");
  3. echo(&#092;"<input name=\"akcja\" type=\"hidden\" value=\"dodaj\">\");  
  4. echo(&#092;"<input name=\"temat\" type=\"text\" value=\"\" size=\"25\">\");
  5. echo(&#092;"<textarea name=\"tresc\" rows=\"20\" cols=\"25\"></textarea>\");
  6. echo(&#092;"<select name=\"dzial\">\"); 
  7. echo(&#092;"<option>dział 1\"]);
  8. echo(&#092;"</select>\"); 
  9. echo(&#092;"emotikony: \");
  10. echo(&#092;"<input type=\"radio\" name=\"emotikony\" value=\"1\" class=\"sonda\" checked> Takn\");
  11. echo(&#092;"<input type=\"radio\" name=\"emotikony\" value=\"0\" class=\"sonda\"> Nien\");
  12. echo(&#092;"bbcode: \");
  13. echo(&#092;"<input type=\"radio\" name=\"bbcode\" value=\"1\" class=\"sonda\" checked> Takn\");
  14. echo(&#092;"<input type=\"radio\" name=\"bbcode\" value=\"0\" class=\"sonda\"> Nien\");
  15. echo(&#092;"<input type=\"submit\" value=\"wyślij\">\");
  16. ?>


a teraz skrypt dodający:
  1. <?
  2. if ($akcja==&#092;"dodaj\"){
  3.  
  4. $tresc = htmlspecialchars(stripslashes($tresc));
  5. $tresc = str_replace (&#092;"
  6. &#092;", \"[br]\", $tresc);
  7.  
  8. $tresc = str_replace (&#092;"&amp;plusmn;\", \"&plusmn;\", $tresc);
  9. $tresc = str_replace (&#092;"&amp;para;\", \"&para;\", $tresc);
  10. $tresc = str_replace (&#092;"&amp;frac14;\", \"Ľ\", $tresc);
  11. $tresc = str_replace (&#092;"&amp;iexcl;\", \"ˇ\", $tresc);
  12. $tresc = str_replace (&#092;"&amp;brvbar;\", \"&brvbar;\", $tresc);
  13. $tresc = str_replace (&#092;"&amp;not;\", \"&not;\", $tresc);
  14. $tresc = str_replace (&#092;"&amp;aelig;\", \"ć\", $tresc);
  15. $tresc = str_replace (&#092;"&amp;ecirc;\", \"ę\", $tresc);
  16. $tresc = str_replace (&#092;"&amp;sup3;\", \"ł\", $tresc);
  17. $tresc = str_replace (&#092;"&amp;ntilde;\", \"ń\", $tresc);
  18. $tresc = str_replace (&#092;"&amp;iquest;\", \"ż\", $tresc);
  19. $temat = str_replace (&#092;"&amp;plusmn;\", \"&plusmn;\", $temat);
  20. $temat = str_replace (&#092;"&amp;para;\", \"&para;\", $temat);
  21. $temat = str_replace (&#092;"&amp;frac14;\", \"Ľ\", $temat);
  22. $temat = str_replace (&#092;"&amp;iexcl;\", \"ˇ\", $temat);
  23. $temat = str_replace (&#092;"&amp;brvbar;\", \"&brvbar;\", $temat);
  24. $temat = str_replace (&#092;"&amp;not;\", \"&not;\", $temat);
  25. $temat = str_replace (&#092;"&amp;aelig;\", \"ć\", $temat);
  26. $temat = str_replace (&#092;"&amp;ecirc;\", \"ę\", $temat);
  27. $temat = str_replace (&#092;"&amp;sup3;\", \"ł\", $temat);
  28. $temat = str_replace (&#092;"&amp;ntilde;\", \"ń\", $temat);
  29. $temat = str_replace (&#092;"&amp;iquest;\", \"ż\", $temat);
  30. $login=$userdata[&#092;"username\"];
  31. $data = date(&#092;"d-m-Y H:i:s\");}
  32. ?>


i teraz sama linijka dodająca do bazy:
  1. <?
  2. $zapytanie = &#092;"INSERT INTO artykuly SET temat='$temat', dodal='$login', tresc='$tresc', dzial='$dzial_nr',data='$data',komentarze='0',emotikony='$emotikony',bbcode='$bbcode',czytan='0'\";
  3. $result = mysql_query($zapytanie);
  4. ?>


lub

  1. <?
  2. $result= mysql_query(&#092;"INSERT INTO `artykuly` VALUES ('', '$temat', '$login', '$tresc', '$dzial_nr', '$data', '0','$emotikony','$bbcode','0')\"); 
  3. ?>
Go to the top of the page
+Quote Post
elessar
post
Post #10





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 12.05.2003
Skąd: Mikołów

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


Przepusc dane prze funkcje mysql do walidacji danych i wszystko bedzie ok.
Niestety z glowy nie umie sobie przypomniec jak ta funkcja sie nazywa.


--------------------
..::elessar::..
Go to the top of the page
+Quote Post
quex
post
Post #11





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


Cytat
Przepusc dane prze funkcje mysql do walidacji danych i wszystko bedzie ok.
Niestety z glowy nie umie sobie przypomniec jak ta funkcja sie nazywa.


może mnie ktoś naprowadzić na nazwe tej funkcji? Czy ta funkcja tylko sprawdza poprawność, czy zamienia to co jest źle?
Go to the top of the page
+Quote Post
Ive
post
Post #12





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


hm... jakbym nie patrzyl na ten skrypt to i tak nie moge sie dopatrzyc bys urzyl tablic $_POST .... na poczatku tuz po if($akcja=="dodaj") { daj $temat = $_POST['temat']; itd.....
Go to the top of the page
+Quote Post
quex
post
Post #13





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


wszystkie zmienne są przypisane w indeksie (przed inkludowaniem)...

POMOCY!!!!!!!!!!!!!!!!!!!!!!


Dziwne jest jeszcze to, że jak dodaje ten tekst (co mi go niechce dodawać przez formularz) w phpMyAdmin'ie to wszysto działa....


POMOCY!!!!!!!!!!!!!!!!!!!!!!

Ten post edytował quex 18.01.2005, 21:06:57
Go to the top of the page
+Quote Post
jmpdead
post
Post #14





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.01.2005

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


witka

apostrofy pozamieniaj na cudzusłowy
Go to the top of the page
+Quote Post
Ive
post
Post #15





Grupa: Zarejestrowani
Postów: 352
Pomógł: 1
Dołączył: 17.07.2003
Skąd: Kazanów

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


em... a co to mu da? przeciez to na jedno wyjdzie... no chyba ze to jest jakis ewenement ostatnio wprowadzony ... bo zawsze wszewdzie czytalem ze mozna uzywac zamiennie apostrofow i cudzyslowow ...
Go to the top of the page
+Quote Post
jmpdead
post
Post #16





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.01.2005

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


podręcznik php: http://www.php.net/manual/pl/language.variables.php, zwróć uwagę na notkę użytkownika:

Cytat
webmaster at daersys dot net
20-Jan-2004 11:15
In reference to "remco at clickbizz dot nl"'s note I would like to add that you don't necessarily have to escape the dollar-sign before a variable if you want to output it's name.

You can use single quotes instead of double quotes, too.

For instance:
Kod
<?php
$var = "test";

echo "$var"; // Will output the string "test"

echo "\$var"; // Will output the string "$var"

echo '$var'; // Will do the exact same thing as the previous line
?>

Why?
Well, the reason for this is that the php Parser will not attempt to parse strings encapsulated in single quotes (as opposed to strings within double quotes) and therefore outputs exactly what it's being fed with smile.gif

To output the value of a variable within a single-quote-encapsulated string you'll have to use something along the lines of the following code:
Kod
<?php
$var = 'test';
/*
Using single quotes here seeing as I don't need the parser to actually parse the content of this variable but merely treat it as an ordinary string
*/

echo '$var = "' . $var . '"';
/*
Will output:
$var = "test"
*/
?>

HTH
- Daerion



błąd był ewidentny

pozdr
Go to the top of the page
+Quote Post
Liko
post
Post #17





Grupa: Zarejestrowani
Postów: 436
Pomógł: 6
Dołączył: 8.11.2003
Skąd: Szczecin

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


Gdzie bo ja nie widze ? Może mi pokazać ? Ty sam chyba nie rozumiesz.
Cale zapytanie ma w cudzysłowach, tylko nazwy zmiennych ma ograniczone apostrofem. To jest zapytanie SQL i nie ma tu nic do rzeczy że tam są apostrofy skoro zmienne i tak się "wykonują". Pokaże Ci przykład:
  1. <?php
  2. /**
  3.  * Definicja wszystkich zmiennych
  4.  */
  5. $temat = 'Temat';
  6. $login = 'Login';
  7. $tresc = 'Tresc';
  8. $dzial_nr = 'Numer dzialu';
  9. $data = 'Data';
  10. $emotikony = 'Emotki';
  11. $bbcode = 'BBCode';
  12.  
  13. print $result = &#092;"INSERT INTO artykuly VALUES (NULL, '$temat', '$login', '$tresc', '$dzial_nr', '$data', '0','$emotikony','$bbcode','0')\";
  14. ?>

Zobacz co otrzymasz. Prawidłowe zapytanie do bazy. Jednak wydaję mi się, że on ma problem z czym innym. Spróbuj przynajmniej patrzeć czy baza wyrzuca Ci jakieś błędy dlatego polecam raczej taki zapis:
  1. <?php
  2. mysql_connect ( 'host', 'user', 'haslo' ) or die( mysql_error() ); // Zamien wartości na prawidlowe dane.
  3. mysql_select_db( 'baza' ) or die( mysql_error() ); // Tu też.
  4. mysql_query( &#092;"INSERT INTO artykuly VALUES (NULL, '$temat', '$login', '$tresc', '$dzial_nr', '$data', '0','$emotikony','$bbcode','0')\" ) or die( mysql_error() ); 
  5. ?>

Trudno mi powiedzieć czy to Ci zadziała. Może pomyliłeś tabele ? może pola ? i masz złe typy dlatego nie chce dodawać.
Go to the top of the page
+Quote Post
quex
post
Post #18





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 11.02.2004

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


Wielkie dzięki, nie pomyślełem o tym. Pokazało mi błąd:

Kod
Something is wrong in your syntax obok 'plik.ini');[br] plik_ini.WriteString('Sekcja1','Nazwa','War' w linii 1


Pozamieniałem znaczki i wszystko okej winksmiley.jpg
Wielkie dzięki!!!!!!!!!!!!!!!!!!!!!!!!!!
Go to the top of the page
+Quote Post
jmpdead
post
Post #19





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.01.2005

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


racja

pozdr
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: 20.08.2025 - 10:44