Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP][MySQL] Update aktualizuje obraz, nie aktualizuje tytulu i tekstu

Napisany przez: ob1 31.10.2018, 09:02:18

Witam. Update wczytuje dane z tabeli mysql, jednak przy wykonywaniu update zmienia sie wyłącznie wczytane zdjęcie, nie zmieniają się tytul i tekst. Moje pytanie: gdzie jest błąd, co muszę poprawić aby tekst i tytul również się zmieniały.

  1. <?php
  2. require_once('connect.php');
  3. require_once('connect-screen.php');
  4. if (http://www.php.net/isset($_GET['id'])) {
  5. // Pobieranie danych z tablicy GET.
  6. $id=$_GET['id'];
  7. }
  8. elseif (http://www.php.net/isset($_POST['id'])) {
  9. // Pobieranie danych z tablicy POST.
  10. $id = $_POST['id'];
  11. }
  12. else {
  13. http://www.php.net/echo '<p class="er">Brak id</p>';
  14. }
  15.  
  16. ?>
  17.  
  18. <?php
  19. $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  20. $id=$_GET['id'];
  21. $select=mysqli_query($con,"select * from blog_jeden where id='$id'");
  22. $row=mysqli_fetch_assoc($select);
  23.  
  24.  
  25. ?>
  26.  
  27.  
  28. <form action="" method="post" enctype="multipart/form-data">
  29. <table>
  30. <tr>
  31. <th>Tytuł</th>
  32. <td>
  33. <input type="text" name="tytul" value="<?php http://www.php.net/echo $row['tytul']; ?>">
  34. </td>
  35. </tr>
  36. <th>Zdjęcie</th>
  37. <tr>
  38. <td>
  39. <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie'];?>" style="width:80px;height:80px;"><br/>
  40. <input type="file" name="zdjecie" /><br/><br/>
  41. <input type="submit" value="aktualizacja" name="aktualizacja">
  42. </td>
  43. </tr>
  44. <td>
  45. <textarea name="tekst"><?php http://www.php.net/echo $row['tekst']; ?></textarea>
  46. <script>
  47. CKEDITOR.replace( 'tekst' );
  48. </script>
  49. </td>
  50. </table>
  51.  
  52. </form>
  53.  
  54. <?php
  55. if(http://www.php.net/isset($_POST['aktualizacja'])) {
  56. $tytul=$_POST['tytul'];
  57. if(http://www.php.net/isset($_FILES['zdjecie']['tytul']) && ($_FILES['zdjecie']['tytul'] !="")) {
  58. $size=$_FILES['zdjecie']['size'];
  59. $temp=$_FILES['zdjecie']['tmp_name'];
  60. $zdjecie_tytul=$_FILES['zdjecie']['name'];
  61. http://www.php.net/unlink("../zdjecia_panel/$stare_zdjecie");
  62. http://www.php.net/move_uploaded_file($temp,"../zdjecia_panel/$zdjecie_tytul");
  63. }
  64. else {
  65. $zdjecie_tytul=$stare_zdjecie;
  66. }
  67. $update=mysqli_query($con,"update blog_jeden set id=$id, tytul=$tytul, data=NOW() , zdjecie=$zdjecie, tekst=$tekst");
  68.  
  69. if($update) {
  70. http://www.php.net/echo "<p>Zaktualizowano dane</p>";
  71. }
  72. else{
  73. http://www.php.net/echo "<p>Nie zaktualizowano danych</p>";
  74. }
  75.  
  76. }
  77.  
  78. ?>

Napisany przez: nospor 31.10.2018, 09:26:08

Nie mozliwe ze cokolwiek ci akutalizauje bo zapytanie sie w ogole nie wykonuje tylko rzuca bledem...

1) Teksty do zapytania wklada sie w apostrofach
2) Brak zmiennej $tekst
3) Brak WHERE przez co jakby ci dzialalo to by ci zmienialo wszyskie rekordy a nie wybrany

Napisany przez: ob1 31.10.2018, 10:17:16

Tak, teraz poprawione i teraz zdjęcie zmienia (sorry, skopiowałem inną wersję). Nadal nie zmienia tytułu oraz tekstu

  1. <?php
  2.  
  3. require_once('connect-screen.php');
  4. require_once('connect.php');
  5. if (http://www.php.net/isset($_GET['id'])) {
  6. // Pobieranie danych z tablicy GET.
  7. $id=$_GET['id'];
  8. $tytul=$_GET['tytul'];
  9. }
  10. elseif (http://www.php.net/isset($_POST['id'])) {
  11. // Pobieranie danych z tablicy POST.
  12. $id = $_POST['id'];
  13. $tytul = $_POST['tytul'];
  14. }
  15. else {
  16. http://www.php.net/echo '<p class="er">Brak id</p>';
  17. }
  18.  
  19. ?>
  20.  
  21.  
  22. <?
  23. $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  24. $query = "SELECT * FROM blog_jeden WHERE id='$id'";
  25. $datadwa = mysqli_query($dbc, $query);
  26. http://www.php.net/echo '<div class="">';
  27. while($row = mysqli_fetch_array($datadwa)) {
  28. $id=$row['id'];
  29. $tytul=$row['tytul'];
  30. $tekst=$row['tekst'];
  31. $zdjecie=$row['zdjecie'];
  32. ?>
  33.  
  34. </div>
  35. <hr/>
  36. <form method="post" action="<?php http://www.php.net/echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
  37. <label for="tytul">Tytul:</label><br /><br/>
  38. <input type="text" id="tytul" name="tytul" size="50" value="<?php http://www.php.net/echo $tytul; ?>" />
  39. <br /><br/>
  40. <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie']; ?>" style="width:80px;height:80px;" /><br/>
  41. <input type="file" name="zdjecie"><br/><br/>
  42. <input type="hidden" name= "id" value="<?php http://www.php.net/echo $id; ?>" />
  43. <textarea name="tekst"><?php http://www.php.net/echo $tekst; ?></textarea>
  44. <script>
  45. CKEDITOR.replace( 'tekst' );
  46. </script>
  47. <span id="submit">
  48. <input type="submit" value="Aktualizuj" name="submit" />
  49. </span>
  50. </form>
  51. <?php
  52. if(http://www.php.net/isset($_POST['submit'])) {
  53. $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie);
  54. $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  55. $zdjecie=$row['zdjecie'];
  56. http://www.php.net/echo $tekst;
  57. $querytrzy = "UPDATE blog_jeden SET id='$id', data=NOW(), zdjecie='$zdjecie', tytul='$tytul', tekst='$tekst' WHERE id = $id LIMIT 1";
  58. mysqli_query($db, $querytrzy);
  59. http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>';
  60. }
  61. ?>
  62. <?php
  63. }
  64. ?>

Napisany przez: nospor 31.10.2018, 12:45:59

Nigdzie nie pobierasz tytulu oraz zdjecia z formularza, czyli z tego co user wpisal, wiec niby jakim cudem ma ci zmieniac?

ps: ten SET id=id jest totalnie zbedny. Id przeciez nie chcesz zmieniac na to samo.

Napisany przez: ob1 31.10.2018, 13:02:33

Czyli w którym miejscu powinno nastąpić pobranie ? Rozumiem, że rozchodzi się o część if(isset($_POST['submit'])) {...?

Według mnie powinien czytać pobrane dane, bo po if(isset($_POST['submit'])) dopiero kończy się górny while.

Napisany przez: nospor 31.10.2018, 13:30:21

Dane masz pobrac z $_POST przed wykonaniem zapytania. Dosc logiczne.

Napisany przez: ob1 31.10.2018, 14:41:35

nic nie działa. postem pobiera z poprzedniej strony id i naglowek.

Naglowek oraz tekst pobieram przed if submit i po echo sie wyswietlaja, ale nic sie nie aktualizuje.

  1. <?php
  2.  
  3.  
  4. $querysto = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'";
  5. $datasto = mysqli_query($dbc, $querysto);
  6. while ($row = mysqli_fetch_array($datasto)) {
  7. http://www.php.net/echo $naglowek;
  8. http://www.php.net/echo $tekst;
  9.  
  10. if(http://www.php.net/isset($_POST['submit'])) {
  11. $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie);
  12. $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  13. $zdjecie=$row['zdjecie'];
  14. http://www.php.net/echo $tekst;
  15. $querytrzy = "UPDATE dodaj_informacje_blog SET id='$id', data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id = $id LIMIT 1";
  16. mysqli_query($db, $querytrzy);
  17. http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>';
  18. }
  19.  
  20.  
  21. } // zamkniecie while
  22.  
  23. ?>

Napisany przez: trueblue 31.10.2018, 14:50:35

A skąd pobierasz tekst i nagłówek?

Napisany przez: ob1 31.10.2018, 15:00:15

przed tą stroną jest wybór tematu, gdzie przez get jest przekazywany id. Na podstawie tego parametru pobieram z bazy wyniki (where id='$id')

  1. if (http://www.php.net/isset($_GET['id'])) {
  2. $id=$_GET['id'];
  3. $naglowek=$_GET['naglowek'];
  4. }...


całość obecnie wygląda tak (echo przy querysto z naglowkiem i tekstem wyswietla prawidlowo, tylko dalej nie dziala update):

  1. <?php
  2. require_once('connect.php');
  3. require_once('connect-screen.php');
  4.  
  5. if (http://www.php.net/isset($_GET['id'])) {
  6. // Pobieranie danych z tablicy GET.
  7. $id=$_GET['id'];
  8. $naglowek=$_GET['naglowek'];
  9. }
  10. elseif (http://www.php.net/isset($_POST['id']) && http://www.php.net/isset($_POST['naglowek'])) {
  11. // Pobieranie danych z tablicy POST.
  12. $id = $_POST['id'];
  13. $naglowek = $_POST['naglowek'];
  14. }
  15. else {
  16. http://www.php.net/echo '<p class="er">brak id </p>';
  17. }
  18.  
  19. ?>
  20.  
  21.  
  22.  
  23. <?php
  24. require_once('connect.php');
  25. require_once('connect-screen.php');
  26. $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  27. $query = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'";
  28. $datadwa = mysqli_query($dbc, $query);
  29. http://www.php.net/echo '<div class="">';
  30. while ($row = mysqli_fetch_array($datadwa)) {
  31. $id=$row['id'];
  32. $data=$row['data'];
  33. $tekst=$row['tekst'];
  34. $naglowek=$row['naglowek'];
  35. $zdjecie=$row['zdjecie'];
  36.  
  37. ?>
  38.  
  39. </div>
  40. <form method="POST" action="edytuj_informacje_blog_drugi_krok.php" enctype="multipart/form-data">
  41. <input type="text" id="data" name="data" size="50" value="<?php http://www.php.net/echo $data; ?>" /><br/><br/>
  42. <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie']; ?>" style="width:80px;height:80px;" /><br/>
  43. <input type="file" name="zdjecie"><br/><br/>
  44. <p>Nagłówek:</p><br/>
  45. <input type="text" id="naglowek" name="naglowek" size="150" value="<?php if(!http://www.php.net/empty($naglowek)) http://www.php.net/echo $naglowek; ?>" /><br /><br/>
  46. <input type="hidden" name= "id" value="<?php http://www.php.net/echo $id; ?>" />
  47. <br /><br/><br/>
  48. <textarea name="tekst"><?php http://www.php.net/echo $tekst; ?></textarea>
  49. <script>
  50. CKEDITOR.replace( 'tekst' );
  51. </script>
  52. <?php
  53. }
  54. ?>
  55. <input type="Submit" value="Aktualizuj">
  56. </form>
  57. <?php
  58.  
  59.  
  60. $querysto = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'";
  61. $datasto = mysqli_query($dbc, $querysto);
  62. while ($row = mysqli_fetch_array($datasto)) {
  63. http://www.php.net/echo $naglowek;
  64. http://www.php.net/echo $tekst;
  65.  
  66. if(http://www.php.net/isset($_POST['submit'])) {
  67. $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie);
  68. $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  69. $zdjecie=$row['zdjecie'];
  70. http://www.php.net/echo $tekst;
  71. $querytrzy = "UPDATE dodaj_informacje_blog SET id='$id', data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id = $id LIMIT 1";
  72. mysqli_query($db, $querytrzy);
  73. http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>';
  74. }
  75.  
  76.  
  77. } // zamkniecie while
  78.  
  79. ?>

Napisany przez: nospor 31.10.2018, 15:07:36

Mowilem ze
1) set ID=id jest zbedne totalnie
2) Mowilem bys dane z POST pobral bezposrednio przed zapytaniem. Co tu jest niezrozumialego?

Napisany przez: ob1 31.10.2018, 15:25:26

2 w którym dokładnie miejscu? Przed $querytrzy ?

tak ma to wyglądać?

if(isset($_POST['submit'])) {
$target="../zdjecia_panel/".basename($zdjecie);
$naglowek = $_POST['naglowek'];
$tekst = $_POST['tekst'];
echo$naglowek;
$querytrzy = "UPDATE dodaj_informacje_blog SET id='$id', data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst'";
mysqli_query($db, $querytrzy);
echo '<p class="info">Informacje zostały zaktualizowane.</p>';
}

Napisany przez: nospor 31.10.2018, 15:51:08

Tak.
I nie miales wywalic ID z WHERE, tylko z SET....
SET id='$id', to id='$id', ma zniknac

Napisany przez: ob1 31.10.2018, 15:55:22

ok, data też jest z automatu, więc ją też wywalić?

$querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'";

czy


$querytrzy = "UPDATE dodaj_informacje_blog SET 0,0, naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'";


Napisany przez: nospor 31.10.2018, 17:36:02

Pierwsza wersja powinna zostac.

A czy tekst

nformacje zostały zaktualizowane.<

wyswietla ci sie w ogole? Bo moze w ogole nie wchodzi do tego bloku?

Napisany przez: ob1 31.10.2018, 19:50:08

Niestety nadal nie zmienia danych, tzn nie wstawia ich do bazy

Obecnie wygląda to tak. Nie wstawia żadnych wartości, bo nie pobiera nawet z echo w if submit. Nie mam pojęcia jak to ugryźć.

  1. <?php
  2. require_once('connect.php');
  3. require_once('connect-screen.php');
  4.  
  5. if (http://www.php.net/isset($_GET['id'])) {
  6. // Pobieranie danych z tablicy GET.
  7. $id=$_GET['id'];
  8. $naglowek=$_GET['naglowek'];
  9. }
  10. elseif (http://www.php.net/isset($_POST['id']) && http://www.php.net/isset($_POST['naglowek'])) {
  11. // Pobieranie danych z tablicy POST.
  12. $id = $_POST['id'];
  13. $naglowek = $_POST['naglowek'];
  14. }
  15. else {
  16. http://www.php.net/echo '<p class="er">brak id</p>';
  17. }
  18.  
  19. ?>
  20.  
  21.  
  22.  
  23. <?php
  24. require_once('connect.php');
  25. require_once('connect-screen.php');
  26. $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  27. $query = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'";
  28. $datadwa = mysqli_query($dbc, $query);
  29. while ($row = mysqli_fetch_array($datadwa)) {
  30. $id=$row['id'];
  31. $data=$row['data'];
  32. $tekst=$row['tekst'];
  33. $naglowek=$row['naglowek'];
  34. $zdjecie=$row['zdjecie'];
  35. http://www.php.net/global $tekst;
  36.  
  37. ?>
  38.  
  39. </div>
  40. <form enctype="multipart/form-data" method="post" action="<?php http://www.php.net/echo $_SERVER['PHP_SELF']; ?>">
  41. <input type="text" id="data" name="data" size="50" value="<?php http://www.php.net/echo $data; ?>" /><br/><br/>
  42. <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie']; ?>" style="width:80px;height:80px;" /><br/>
  43. <input type="file" name="zdjecie"><br/><br/>
  44. <p>Nagłówek:</p><br/>
  45. <input type="text" id="naglowek" name="naglowek" size="150" value="<?php if(!http://www.php.net/empty($naglowek)) http://www.php.net/echo $naglowek; ?>" /><br /><br/>
  46. <input type="hidden" name= "id" value="<?php http://www.php.net/echo $id; ?>" />
  47. <br /><br/><br/>
  48. <textarea name="tekst"><?php http://www.php.net/echo $tekst; ?></textarea>
  49. <script>
  50. CKEDITOR.replace( 'tekst' );
  51. </script>
  52. <?php
  53. } // zamkniecie while
  54. ?>
  55. <input type="Submit" value="Aktualizuj" name="submit">
  56. </form>
  57. <?php
  58.  
  59.  
  60.  
  61.  
  62. if(http://www.php.net/isset($_POST['submit'])) {
  63. $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie);
  64. $data =http://www.php.net/trim($_POST['data']);
  65. $naglowek =http://www.php.net/trim($_POST['naglowek']);
  66. $zdjecie = $_FILES['zdjecie']['name'];
  67. $zdjecie_type = $_FILES['zdjecie']['type'];
  68. $zdjecie_size = $_FILES['zdjecie']['size'];
  69. $zdjecie = http://www.php.net/uniqid(http://www.php.net/rand(), true) . '.JPEG';
  70. $tekst =http://www.php.net/trim($_POST['tekst']);
  71. http://www.php.net/echo$naglowek;
  72. http://www.php.net/echo$tekst;
  73. $querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'";
  74. mysqli_query($dbc, $querytrzy);
  75. http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>';
  76. }
  77.  
  78.  
  79.  
  80.  
  81. ?>

Napisany przez: viking 31.10.2018, 20:06:16

A niby gdzie w tym formularzu masz name=submit?

Napisany przez: ob1 31.10.2018, 20:48:54

Wszystko ok, tytul i naglowek dodaja sie, tylko potrzebuje jeszcze czegoś w stylu "gdy zdjęcie nie zostało zmienione, zostaw aktualne".

Jest tak, że gdy zmieniam tytul, naglowek i zdjecie to wszystko jest ok i wszystko sie zmienia. Gdy zmieniam tytul i naglowek, wtedy przesylane zdjecie jest puste, pusty plik z losowa sciezka

Potrzebuję czegoś w stylu:
if(!isset($_FILES['zdjecie'])) {
$target = GWP . $zdjecie;
move_uploaded_file($_FILES['zdjecie']['tmp_name'], $target);
}

Obecnie wygląda to tak:

  1. <?php
  2. if(http://www.php.net/isset($_POST['submit'])) {
  3. $naglowek =http://www.php.net/trim($_POST['naglowek']);
  4. $zdjecie=$_FILES['zdjecie']['name'];
  5. $zdjecie = http://www.php.net/uniqid(http://www.php.net/rand(), true) . '.JPEG';
  6. $tekst =http://www.php.net/trim($_POST['tekst']);
  7. $target = GWW . $zdjecie;
  8. http://www.php.net/move_uploaded_file($_FILES['zdjecie']['tmp_name'], $target);
  9. $querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'";
  10. mysqli_query($dbc, $querytrzy);
  11. http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>';
  12. }
  13. ?>

Napisany przez: nospor 1.11.2018, 14:39:10

No to jesli zdjecie nie bylo wyslane to nie;
$querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'";
a
$querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', tekst='$tekst' WHERE id='$id'";

prosty IF na wykonanie albo pierwszego zapytania albo drugiego

Napisany przez: ob1 1.11.2018, 19:47:12

ok ale

1.

  1. if(http://www.php.net/isset($zdjecie)) {
  2. $querytrzy
  3. }


czy

2
  1. if(http://www.php.net/empty($zdjecie)) {
  2. $querytrzy
  3. }


czy

3
  1. if(http://www.php.net/file_exists($zdjecie)) {
  2. $querytrzy
  3. }

Napisany przez: nospor 2.11.2018, 10:04:19

To zalezy gdzie te IFy wstawisz, bo widze $zdjecie tworzysz w paru miejscach

A nie mozesz poprostu PUSTOSC sprawdzac od razu na tym $_FILES['zdjecie']['name']? Po co sobie komplikujesz zycie?

Napisany przez: ob1 2.11.2018, 10:24:28

ok sprawdzę w tym miejscu

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)