Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z UPDATE
Forum PHP.pl > Forum > Przedszkole
bigbadcompany
Witam,

piszę sobie skrypt już od dłuższego czasu i w trakcie walki natknąłem się na problem (związany raczej z moją niewiedzą). Gdy dodaję do bazy nowego posta łamanie linii jest. Natomiast gdy go edytuję to zamienia mi pociachaną całość w jeden ciąg znaków.

  1. case 'demotywatory':
  2. // konfiguracja tematow
  3. if($_GET['akcja']=='nowy' && isset($_POST['f_temat_tytul']) )
  4. {
  5.  
  6. $_POST['f_temat_tytul']=trim($_POST['f_temat_tytul']);
  7. $_POST['f_temat_krotki']=trim($_POST['f_temat_krotki']);
  8. $_POST['f_temat_tresc']=trim($_POST['f_temat_tresc']);
  9. $_POST['f_kategoria']=trim($_POST['f_kategoria']);
  10.  
  11. if(strlen(trim($_POST['f_temat_tytul']))>5)
  12. {
  13. mysql_query("INSERT INTO `demotywatory` (`demotywatory_id`, `demotywatory_title`, `demotywatory_short`, `demotywatory_content`, `id_cat`, `topic_akt`) VALUES (NULL, '".$_POST['f_temat_tytul']."', '".$_POST['f_temat_krotki']."', '".$_POST['f_temat_tresc']."', '".$_POST['f_kategoria']."', '1')");
  14. header("location: index.php?s=demotywatory&ok=1");
  15. }
  16. else header("location: index.php?s=demotywatory&err=2");
  17. }


  1. //listuj tematy
  2. $sq_tematy='select * from `demotywatory`';
  3. $sql_tematy=mysql_query($sq_tematy);
  4. while($list_temat=mysql_fetch_assoc($sql_tematy))
  5. {
  6. $id_temat=$list_temat['demotywatory_id'];
  7.  
  8. $temat_id[$id_temat]=$list_temat['demotywatory_id'];
  9. $temat_tytul[$id_temat]=$list_temat['demotywatory_title'];
  10. $temat_krotki[$id_temat]=$list_temat['demotywatory_short'];
  11. $temat_tresc[$id_temat]=$list_temat['demotywatory_content'];
  12. $temat_kategoria[$id_temat]=$list_temat['id_cat'];
  13. }
  14. if($_GET['akcja']=='zapisz' && is_numeric($_GET['id']))
  15. {
  16. $_POST['f_temat_tytul'] = safe($_POST['f_temat_tytul']);
  17. $_POST['f_temat_krotki'] = safe($_POST['f_temat_krotki']);
  18. $_POST['f_temat_tresc'] = safe($_POST['f_temat_tresc']);
  19. $_POST['f_kategoria'] = safe($_POST['f_kategoria']);
  20.  
  21. $sq_save="UPDATE `demotywatory` SET
  22. `demotywatory_title` = '".$_POST['f_temat_tytul']."',
  23. `demotywatory_short` = '".$_POST['f_temat_krotki']."',
  24. `demotywatory_content` = '".$_POST['f_temat_tresc']."',
  25. `id_cat` = '".$_POST['f_kategoria']."'
  26. WHERE `demotywatory_id` =".$_GET['id']." LIMIT 1";
  27. mysql_query($sq_save);
  28. header("Location: index.php?s=demotywatory");
  29. break;
  30. }


  1. // usun artykul
  2. if($_GET['akcja']=='usun' && is_numeric($_GET['id']))
  3. {
  4. mysql_query("DELETE FROM `demotywatory` WHERE `demotywatory_id` = ".$_GET['id']." LIMIT 1");
  5. header("Location: index.php?s=demotywatory");
  6. break;
  7. }


Jak widać korzystam z UPDATE czy przy muszę gdzieś tam coś jeszcze dodać ? Czy ma to jakiś związek z nl2br ? Jeśli tak to czemu w momencie dodawania posta łamanie linii jest, a przy edycji już nie. Dziękuję z góry za pomoc.
tehaha
dodając do bazy przepuszczasz przez funkcję nl2br(), ponieważ ona zmienia na html'owy tag <br/>, natomiast przy edycji jeżeli chcesz, żeby znak nowej linii został zachowany musisz użyć funkcji odwrotnej czyli jakieś br2nl() którą znajdziesz w manualu w komentarzach http://php.net/manual/en/function.nl2br.php
bigbadcompany
Dzięki za namiary poczytałem sobie troszkę i znalazłem coś takiego

  1. /* br2nl for use with HTML forms, etc. */
  2. function br2nl($text)
  3. {
  4. /* Remove XHTML linebreak tags. */
  5. $text = str_replace("<br />","",$text);
  6. /* Remove HTML 4.01 linebreak tags. */
  7. $text = str_replace("<br>","",$text);
  8. /* Return the result. */
  9. return $text;
  10. }


Tyle, że jak ją zahaczyć o to co już w chwili obecnej mam ?
$temat_tresc jest zmienną która wyświetla mi całość mojego posta i tym samym jest to zmienna którą chce przeprowadzić przez UPDATE

Zatem zrobiłem tak:

  1. function br2nl($temat_tresc)
  2. {
  3. $temat_tresc = str_replace("<br />","",$temat_tresc);
  4. $temat_tresc = str_replace("<br>","",$temat_tresc);
  5. return $temat_tresc;
  6. }


Nadal nie działa, nie zwraca żadnego komunikatu błędu. Wstyd się przyznać ale nie wiem co robię źle.
sazian
przecież ty nie zmieniłeś nic poza nazwą parametru funkcji
wiesz w ogóle jak się korzysta z funkcji questionmark.gif
$temat_tresc=br2nl($temat_tresc);
bigbadcompany
Cytat(sazian @ 5.01.2011, 14:32:47 ) *
przecież ty nie zmieniłeś nic poza nazwą parametru funkcji
wiesz w ogóle jak się korzysta z funkcji questionmark.gif
$temat_tresc=br2nl($temat_tresc);


Sora miałem wkleić to:

  1. $temat_tresc = br2nl($temat_tresc, true);


Dobra poradziłem sobie. Jednak teraz jak już te posty wyedytuje wcina mi się znacznik </ br> który traktuje jako zwykły tekst również. Każde załamanie linii poprzedzone jest tym znacznikiem
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.