Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularze i MySQL
Forum PHP.pl > Forum > PHP
quex
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.
Ive
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 ...
quex
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.
shima
Skąd wklejasz, czy kodowanie jest zgodne i (gdy niekoniecznie zgodne) czy jedno z nich to UTF?
quex
wklejam z notatnika/worda
Ive
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
ARJ
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.
Ive
@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 ...
quex
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. ?>
elessar
Przepusc dane prze funkcje mysql do walidacji danych i wszystko bedzie ok.
Niestety z glowy nie umie sobie przypomniec jak ta funkcja sie nazywa.
quex
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?
Ive
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.....
quex
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!!!!!!!!!!!!!!!!!!!!!!
jmpdead
witka

apostrofy pozamieniaj na cudzusłowy
Ive
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 ...
jmpdead
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
Liko
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ć.
quex
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!!!!!!!!!!!!!!!!!!!!!!!!!!
jmpdead
racja

pozdr
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.