Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Funkcja trim(), niedziała
Forum PHP.pl > Forum > Przedszkole
DerekDX
Witam,
mam problem z funkcją trim(), z niewiadomych dla mnie przyczyn funkcja ta nie wycina białych znaków oto kod:
  1. <?php
  2. ini_set('display_errors','1');
  3. require("header.php");
  4. require("konfiguracja.php");
  5. $edytuj=$_GET['id'];
  6. $polaczenie=mysql_connect($host,$user,$haslo);
  7. mysql_select_db($baza,$polaczenie);
  8. $zapytanie="SELECT * FROM articles WHERE id=$edytuj";
  9. $wynik=mysql_query($zapytanie,$polaczenie);
  10. while ($tab=mysql_fetch_array($wynik))
  11. {
  12. $id=$tab['id'];
  13. $tytul=$tab['title'];
  14. $content=$tab['content'];
  15. $status=$tab['status'];
  16. $data=$tab['date'];
  17. $autor=$tab['author'];
  18. }
  19. ?>
  20. <a href="artykuly.php">Wróć</a>
  21. <form action="edytuj_artykul.php?id=
  22. <?php
  23. echo $id;
  24. ?>
  25. " method="post">
  26. <fieldset>
  27. <legend>Właściwości:</legend>
  28. <table>
  29. <tr>
  30. <td>Status</td>
  31. </tr>
  32. <tr>
  33. <td>Wyłączone</td>
  34. <td><input name="status" type="radio" value="0"
  35. <?php
  36. if($status=='0')
  37. {echo'checked="checked" />';}
  38. ?>
  39. </td>
  40. <td width="125"></td>
  41. <td>
  42. Data modyfikacji:
  43. <?php
  44. echo $data;
  45. ?>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td>Włączone</td>
  50. <td><input name="status" type="radio" value="1"
  51. <?php
  52. if($status=='1')
  53. {echo'checked="checked" />';}
  54. ?>
  55. </td>
  56. <td width="125"></td>
  57. <td>
  58. Autor:
  59. <?php
  60. echo $autor;
  61. ?>
  62. </td>
  63. </tr>
  64. </table>
  65.  
  66. </fieldset>
  67. <fieldset>
  68. <legend>Tytuł</legend>
  69. <input name="title" type="text" value="
  70. <?php
  71. echo $tytul;
  72. ?>"/>
  73. </fieldset>
  74. <fieldset>
  75. <legend>Artykuł</legend>
  76. <textarea name="article_content" rows="20" cols="103">
  77. <?php
  78. echo $content;
  79. ?>
  80. </textarea>
  81. </fieldset>
  82. <input type="submit" name="wyslij" value="Aktualizuj">
  83. </form>
  84. <?php
  85. require("footer.php");
  86. ?>
  87.  
  88. <?php
  89. ini_set('display_errors','1');
  90. $id=$_GET['id'];
  91. $tytul=trim($_POST['title']);
  92. $tresc=trim($_POST['article_content'],' ');
  93. $data = date("Y-m-d");
  94. require("konfiguracja.php");
  95. if($_POST['wyslij'])
  96. {
  97. $polaczenie=mysql_connect($host,$user,$haslo);
  98. mysql_select_db($baza,$polaczenie);
  99. $zapytanie=" UPDATE articles SET title=$tytul, content=$tresc, status='$_POST[status]', date=$data WHERE id=$id ";
  100. if (mysql_query($zapytanie))
  101. {
  102. header('location: artykuly.php');
  103. echo '<script type="text/javascript">
  104. alert("Artykuł pomyślnie zaktualizowany");
  105. </script>';
  106.  
  107. }
  108. else
  109. {
  110. header('location: artykuly.php');
  111. echo '<script type="text/javascript">
  112. alert("BŁĄD Artykuł nie został zaktualizowany");
  113. </script>';
  114. }
  115. }
  116. ?>


thek
Trim wycina białe znaki TYLKO z początku i końca tekstu. Jeśli chciałeś osiągnąć to gdzieś w środku tekstu to trim nie zadziała. Poza tym zwróć uwagę na fakt, że jak puszczasz w zapytanie zmienne:
  1. (...)SET title=$tytul, content=$tresc, STATUS='$_POST[status]', date=$data WHERE(...)
Gdzie zgubiłeś apostrofy? ogólnie do kodu można się w większej ilości miejsc przyczepić, bo niestety ale uwierz, że sypnie Ci on jeszcze masą błędów, ze sztandarowym "Headers already send" na czele.
DerekDX
Powstawiałem juz te apostrofy w zapytanie SQL i teraz wygląda to tak:
  1. if($_POST['wyslij'])
  2. { $data = date("Y-m-d");
  3. $tytul=trim($_POST['title']);
  4. $tresc=trim($_POST['article_content']);
  5. $polaczenie=mysql_connect($host,$user,$haslo);
  6. mysql_select_db($baza,$polaczenie);
  7. $zapytanie="insert into articles values ('','$data','Autor','$tytul','tresc','$_POST[status]')";
  8. if (mysql_query($zapytanie))
  9. {
  10. header('location: artykuly.php');
  11. echo '<script type="text/javascript">
  12. alert("Artykuł pomyślnie dodany");
  13. </script>';
  14.  
  15. }
  16. else
  17. {
  18. header('location: artykuly.php');
  19. echo '<script type="text/javascript">
  20. alert("BŁĄD Artykuł nie został dodany");
  21. </script>';
  22. }
  23. }
  24. ?>


I chciałbym wyciąć znaki białe przed i po tekscie nie w środku.
Jeżeli chodzi o header already send to niestety ale nie mam zielonego pojęcia z czego on sie bierze ale narazie chciałbym sie skupić na tych znakach białych.

BTW:Czy istnieje jakaś ogólna zasada gdzie należy stosować apostrofy a gdzie nie bo juz się w tym gubie?questionmark.gif
Atomic_Cookie`
  1. $zapytanie="insert into articles values ('','$data','Autor','$tytul','tresc','".$_POST['status']."')";

^
|
tak jest najlepiej
DerekDX
Tak tylko że ja chce zaktualizować już istniejące wartości a nie wpisać nowe
thek
I dopiero teraz to mówisz? Czy wiesz jaka jest różnica między UPDATE a INSERT? Jeśli nie to zajrzyj do słownika zanim zaczniesz programować winksmiley.jpg

Teraz INSERT wrzuca Ci ciągle nowe rekordy, a Ty sprawdzasz czy stare się pozbyły białych znaków. Po prostu logika po zbóju winksmiley.jpg
DerekDX
Tak tylko jakby sie przyjrzec skryprowi którego zamieściłem w pierwszym poście to zawiera on cześć gdzie jest wyciągany poszczególny rekord i wartości te wpisywane są w pola formularza a druga część zawiera skrypt który zamieszcza wartosci które obecnie są w polach po kliknieciu przycisku aktualizuj. Nigdzie ani w skrypcie ani w poście nie jest napisane że chce cokolwiek dodawać do tabeli.
Przy tworzeniu wpisu do bazy danych białe znaki przed i po nie występują dopiero po aktualizacji.
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.