Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php/mysql -> wrzucanie danych z bazy do formularza
Forum PHP.pl > Forum > PHP
snaiper
witam

mam maly problem

wprowadzam do bazy tekst przez jakis tam formualrz
w tekscie robie wciecia (TAB) zmieniam kolor, wielkosc czcionki itd i to potem wrzucam do bazy

w momencie kiedy pobieram dane z bazy i je wyswietlam je na stronie wszystko jest ok, tzn tekst jest sformatowany tak jak ja chcialem

problem jest gdy ten sam tekst chce wrzucic z powrotem do formularza np podczas edycji
wtedy brakuje kilka znacznikow .. najczescie nie robi tablulacji tam gdzie powinny byc
drugi problem to taki ze np gdy w polu <input type="text" ...> wpisze jakas nazwe ktora zawiera spacje np Jan Kowalski to potem gdy wrzucam z powrotem z bady do formularza wyswietla mi tylko Jan

nie wiem czemu tak sie dzieje .. w bazie jest wszsytko oki bo przy wyciaganiu danych jest tak jak powinno byc
Ja_Szczur
a może jakiś kod "zapodasz"? smile.gif
snaiper
funkcja dodajaca oferte

  1. function oferty_d() {
  2. ?>
  3. <p class="admin_naglowek">Dodaj oferte</p>
  4. <form name="formularz" method="post" action="#">
  5. <table class="wiadomosc">
  6. <tr><td>Tytuł: </td><td> <input type="text" name="oferta_tytul" size="67"></td></tr>
  7. <tr><td>Treść: </td><td> <textarea cols="50" rows="20" name="oferta_tresc"></textarea></td></tr>
  8. <tr><td colspan="2"><input type="submit" value="wyślij" name="wyslij"><input type="submit" value="podgląd" name="podglad"></td></tr>
  9. </table>
  10. </form>
  11. <?php
  12.  
  13. $oferta_tytul = $_POST['oferta_tytul'];
  14. $oferta_tresc = $_POST['oferta_tresc'];
  15.  
  16. //$tytul = htmlspecialchars($tytul);
  17. //$tresc = htmlspecialchars($tresc);
  18. $data = getdate();
  19.  
  20. if(($oferta_tytul == NULL) || ($oferta_tresc == NULL)) {
  21. echo "Nie wypałnione wszytkie pola";
  22. return false;
  23. }
  24. else
  25. if(isset($_POST['wyslij'])) {
  26. $this->zapytanie("INSERT INTO oferty VALUES('$oferta_tytul','$oferta_tresc',NULL)");
  27. echo "Oferta została dodana";
  28. }
  29.  
  30. elseif(!$this->wynik) { echo "Błąd przy wysyłaniu wiadomości"; }
  31. }


edycja oferty

  1. <?php
  2. function oferty_edycja() {
  3.  
  4.  $this->zapytanie("SELECT * FROM oferty");
  5. if(!$this->wynik) { return false ; }
  6. else {
  7.  echo "<p class='admin_naglowek'>Usuń wiadomość</p>";
  8.  echo "<table class='usunw'>";
  9.  echo "<th> Tytuł </th><th></th>";
  10. while ($pokaz = $this->pokaz($this->zapytanie)) {
  11.  echo "<tr><td>" . $pokaz['tytul'] . "</td>";
  12.  echo "<td>";
  13.  echo "<form action='../admin/edycja.php' target='_blanc' method='post'>";
  14.  echo '<input type='hidden' value='' . $pokaz['nr'] . '' name='nr'>';
  15.  echo "<input type='submit' name='edytuj' value='Edytuj'>";
  16.  echo "</form>";
  17.  echo "</td></tr>";
  18. }
  19.  echo "</table>";
  20.  if(isset($_POST['edytuj'])) {
  21.  $this->edycja();
  22.  }
  23. }
  24. }
  25. ?>



fragment pliku edycja.php (reszta pliku to naglowki html)

  1. <?php
  2. $nr = $_POST['nr'];
  3. $strona->zapytanie('SELECT * FROM oferty WHERE nr = ' . $nr . '');
  4. if(!$strona->wynik) { return false ; }
  5. else {
  6.  while ($pokaz = $strona->pokaz($strona->zapytanie)) {
  7. $stary_tytul = $polaz['tytul'];
  8. echo "<p class='admin_naglowek'>Edycja oferty</p>";
  9. echo "<form name='formularz' method='post' action='#'>";
  10. echo "<table class='wiadomosc'>";
  11. echo "<tr><td>Tytuł: </td><td> <input type='text' value=" . $pokaz['tytul'] . " name='oferta_tytul' size='70'></td></tr>";
  12. echo "<tr><td>Treść: </td><td> <textarea cols='70' rows='40' value=" . $pokaz['tekst'] . " name='oferta_tresc'></textarea></td></tr>";
  13. echo "<tr><td colspan='2'><input type='submit' value='wyślij' name='ok'></td></tr>";
  14. echo "</table>";
  15. echo "</form>";
  16.  }
  17.  $tytul = $_POST['oferta_tytul'];
  18.  $tresc = $_POST['oferta_tresc'];
  19.  
  20.  if(isset($_POST['ok'])) { 
  21.  echo $stary_tytul; 
  22.  $strona->zapytanie("UPDATE oferty SET tytul = '$tytul', tekst = '$tresc', nr = '$nr' WHERE tytul = '$staty_tytul' ");
  23. echo "<p>Oferta została zmieniona</p>";
  24. if(!$strona->wynik) { echo "<p>Nieudana zmiana oferty</p>"; }
  25. }
  26. }
  27. ?>


(UPDATE cos nie chce dzialac ale narazie chce rozwiazac poprzedni problem)
nospor
1) nie mozesz danych do inputa wstawiac tak: .... value=jakasdana....
bo jesli te dane beda mialy spacje to bedziesz mial tak:
.... value=jakas dana....
czyli do value przypisze sie tylko jakas
wszystkie atrybuty html są w ciapkach:
.... value="jakas dana"....

2) a gdy bedziesz mial w tytlu znak " to tez bedziesz mial problem. przed wlozeniem danych do inputa musisz je potraktowac chocby funkcją htmlspecialchars()
Ja_Szczur
1) możesz ustalić, że w tutule mogą być tylko znaki ", czyli przed zapisaniem zamieniać wszystkie ' na "
2) możesz też zamnieniać " na &quote;

potem umieścić <input value='...'> [pojedyncze cudzysłowia]
snaiper
no dobra ...
a co z ulozeniem tekstu (do lewej,do srodka,do prawej), tabulacjami i spacjami w tresci na poczatku linii questionmark.gif

do formualrza mam dolaczony edytor tekstu
http://tinymce.moxiecode.com/
nospor
1) htmlspecialchars - to juz mowilem
2) do textarea to sie nie wklada wartosco do value: ...value="wartosc".... tylko miedzy znaczniki:
<textarea ....>wartosc</textarea>

ps: i popraw tytul na mowiacy cos o tresci a nie php.mysql
snaiper
dzieki , wszystko smiga smile.gif


ehh

mam dwa identycznie srkypty tylko z innymi formualrzami i z danymi
jeden chodzi bez problemow a drugi nie sad.gif

pierwszy co dziala
  1. <?php
  2. function firma() {
  3.  
  4. $this->zapytanie("SELECT * FROM firma");
  5. if(!$this->wynik) { return false ; }
  6.  else {
  7.  while ($pokaz = $this->pokaz($this->zapytanie)) {
  8. $nazwa = $pokaz['nazwa'];
  9. $ulica = $pokaz['ulica'];
  10. $miejscowosc = $pokaz['miejscowosc'];
  11. $kod_a = $pokaz['kod_a'];
  12. $kod_b = $pokaz['kod_b'];
  13. $tel_a = $pokaz['tel_a'];
  14. $tel_b = $pokaz['tel_b'];
  15. $fax = $pokaz['fax'];
  16. $nip = $pokaz['nip'];
  17. $krs = $pokaz['KRS'];
  18. $mail = $pokaz['mail'];
  19. $www = $pokaz['www'];
  20.  }
  21. }
  22.  
  23. echo "<p class='admin_naglowek'>Dane firmy</p>";
  24. echo "<form name='formularz' method='post' action='#'>";
  25. echo "<table class='firma'>";
  26. echo '<tr><td>Nazwa firmy: </td><td> <input type="text" value = "' . $nazwa . '" name="nazwa" size="50"></td></tr>';
  27. echo '<tr><td>Ulica: </td><td> <input type="text" value = "' . $ulica . '" name="ulica" size="50"></td></tr>';
  28. echo "<tr><td>Miejscowość: </td><td> <input type='text' value = " . $miejscowosc . " name='miejscowosc' size='50'></td></tr>";
  29. echo "<tr><td>Kod pocztowy: </td><td> <input type='text' value = " . $kod_a . " name='kod_a' size='1'>-<input type='text' value = " . $kod_b . " name='kod_b' size='2'></td></tr>";
  30. echo "<tr><td>Tel: </td><td> <input type='text' value = " . $tel_a . " name='tel_a' size='50'></td></tr>";
  31. echo "<tr><td>Tel: </td><td> <input type='text' value = " . $tel_b . " name='tel_b' size='50'></td></tr>";
  32. echo "<tr><td>FAX: </td><td> <input type='text' value = " . $fax . " name='fax' size='50'></td></tr>";
  33. echo "<tr><td>NIP: </td><td> <input type='text' value = " . $nip . " name='nip' size='50'></td></tr>";
  34. echo "<tr><td>KRS: </td><td> <input type='text' value = " . $krs . " name='krs' size='50'></td></tr>";
  35. echo "<tr><td>Mail: </td><td> <input type='text' value = " . $mail . " name='mail' size='50'></td></tr>";
  36. echo "<tr><td>WWW: </td><td> <input type='text' value = " . $www . " name='www' size='50'></td></tr>";
  37. echo "<tr><td><input type='submit' value='wyślij' name='wyslij'></td></tr>";
  38. echo "</table>";
  39. echo "</form>";
  40.  
  41.  
  42. $nazwa = $_POST['nazwa'];
  43. $ulica = $_POST['ulica'];
  44. $miejscowosc = $_POST['miejscowosc'];
  45. $kod_a = $_POST['kod_a'];
  46. $kod_b = $_POST['kod_b'];
  47. $tel_a = $_POST['tel_a'];
  48. $tel_b = $_POST['tel_b'];
  49. $fax = $_POST['fax'];
  50. $nip = $_POST['nip'];
  51. $krs = $_POST['krs'];
  52. $mail = $_POST['mail'];
  53. $www = $_POST['www'];
  54.  
  55. $nazwa = htmlspecialchars($nazwa);
  56. $ulica = htmlspecialchars($ulica);
  57. $miejscowosc = htmlspecialchars($miejscowosc);
  58. $kod_a = htmlspecialchars($kod_a);
  59. $kod_b = htmlspecialchars($kod_b);
  60. $tel_a = htmlspecialchars($tel_a);
  61. $tel_b = htmlspecialchars($tel_b);
  62. $fax = htmlspecialchars($fax);
  63. $nip = htmlspecialchars($nip);
  64. $krs = htmlspecialchars($krs);
  65. $mail = htmlspecialchars($mail);
  66. $www = htmlspecialchars($www);
  67.  
  68. if(($nazwa == NULL) || ($ulica == NULL) || ($miejscowosc == NULL) || ($tel_a == NULL) || ($nip == NULL) || ($mail == NULL)) {
  69. echo "Nie wypałnione wszytkie pola";
  70. return false;
  71. }
  72. else
  73. $this->zapytanie("UPDATE firma SET id = '1', nazwa = '$nazwa', ulica = '$ulica', miejscowosc = '$miejscowosc', kod_a = '$kod_a', kod_b = '$kod_b', tel_a = '$tel_a', tel_b = '$tel_b', fax = '$fax', nip = '$nip', krs = '$krs', mail = '$mail', www = '$www' WHERE id = '1'");
  74.  
  75. if(!$this->wynik) { echo "Błąd przy wysyłaniu danych"; }
  76. else { echo "Dane zostały wysłane"; }
  77. }
  78. ?>



drugi co nie dziala
  1. <?php
  2. ?>
  3. <!DOCTYPE html
  4.  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  5.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6. <?php
  7.  
  8. include "../klasy/admin.php";
  9. $strona = new strona();
  10. $strona -> polacz();
  11.  
  12. if(isset($_SESSION['dobry_login']) && ($_SESSION['dobre_haslo'])) {
  13.  
  14. ?>
  15. <html>
  16.  
  17. <body>
  18.  
  19.  
  20. <div id="admin_strona">
  21.  
  22.  
  23.  <div>
  24. <?php
  25.  
  26. $nr = $_POST['nr'];
  27. $strona->zapytanie('SELECT * FROM oferty WHERE nr = ' . $nr . '');
  28. if(!$strona->wynik) { return false ; }
  29. else {
  30.  while ($pokaz = $strona->pokaz($strona->zapytanie)) {
  31. $stary_tytul = $pokaz['tytul'];
  32. $stara_tresc = $pokaz['tekst'];
  33.  }
  34.  }
  35. echo "<p class='admin_naglowek'>Edycja oferty</p>";
  36. echo "<form name='formularz' method='post' action='#'>";
  37. echo "<table class='wiadomosc'>";
  38. echo '<tr><td>Tytuł: </td><td> <input type="text" value="' . $stary_tytul . '" name="tytul" size="70"></td></tr>';
  39. echo '<tr><td>Treść: </td><td> <textarea cols="70" rows="40" name="tresc">'.$stara_tresc.'</textarea></td></tr>';
  40. echo "<tr><td colspan='2'><input type='submit' value='wyślij' name='ok'></td></tr>";
  41. echo "</table>";
  42. echo "</form>";
  43.  
  44.  
  45.  $tytul = $_POST['tytul'];
  46.  $tresc = $_POST['tresc'];
  47. echo $stary_tytul;
  48. echo $tytul;
  49.  
  50.  echo $nr;
  51.  
  52. if(isset($_POST['ok'])){
  53.  $strona->zapytanie("UPDATE oferty SET tytul = '$tytul', tekst = '$tresc', WHERE nr = '$nr' ");
  54. if(!$strona->wynik) { echo "Błąd przy wysyłaniu danych"; }
  55. else { echo "Dane zostały wysłane"; }
  56. echo $tytul;
  57. echo $tresc;
  58. }
  59.  
  60. ?>
  61.  
  62.  </div>
  63. </div>
  64. <?php
  65. }
  66. else {
  67. echo "Najpierw się zaloguj ;-)";
  68. Header("Refresh: 3; URL='logowanie.html'");
  69. }
  70. ?>
  71. </body>
  72. </html>


gdy wpisz (w tym drugim) echo $stary_tytul to pokazuje ale jak juz odbiore z formularza nowy tytul $tytul = $_POST['tytul'] to juz go nie odbiera i w echo $tytul nic nie ma

pozatym nie pokazuj komunikatu czy byl update czy wystapil blad przy updacie
thornag
Jesli sa identyczne to posprawdzaj czy napewno dobrze je spokopiowales i napewno dobrze pozmieniales nazwy zmiennych itp itp. Ja w takich rpzypadkach przeklaejam linijka po linijce albo nawet pisze na nowo. Juz sie przekonalem ze szybciej mi pojdzie napisanie malego fragmentu raz jeszcze niz szukanie bledu przez pol dnia gdy debuggowanie nic nire daje. Aha i debuguj !
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.