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.
<?php require_once('connect.php'); require_once('connect-screen.php'); if (http://www.php.net/isset($_GET['id'])) { // Pobieranie danych z tablicy GET. $id=$_GET['id']; } elseif (http://www.php.net/isset($_POST['id'])) { // Pobieranie danych z tablicy POST. $id = $_POST['id']; } else { http://www.php.net/echo '<p class="er">Brak id</p>'; } ?> <?php $con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $id=$_GET['id']; $select=mysqli_query($con,"select * from blog_jeden where id='$id'"); $row=mysqli_fetch_assoc($select); ?> <form action="" method="post" enctype="multipart/form-data"> <table> <tr> <th>Tytuł</th> <td> <input type="text" name="tytul" value="<?php http://www.php.net/echo $row['tytul']; ?>"> </td> </tr> <th>Zdjęcie</th> <tr> <td> <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie'];?>" style="width:80px;height:80px;"><br/> <input type="file" name="zdjecie" /><br/><br/> <input type="submit" value="aktualizacja" name="aktualizacja"> </td> </tr> <td> <textarea name="tekst"><?php http://www.php.net/echo $row['tekst']; ?></textarea> <script> CKEDITOR.replace( 'tekst' ); </script> </td> </table> </form> <?php if(http://www.php.net/isset($_POST['aktualizacja'])) { $tytul=$_POST['tytul']; if(http://www.php.net/isset($_FILES['zdjecie']['tytul']) && ($_FILES['zdjecie']['tytul'] !="")) { $size=$_FILES['zdjecie']['size']; $temp=$_FILES['zdjecie']['tmp_name']; $zdjecie_tytul=$_FILES['zdjecie']['name']; http://www.php.net/unlink("../zdjecia_panel/$stare_zdjecie"); http://www.php.net/move_uploaded_file($temp,"../zdjecia_panel/$zdjecie_tytul"); } else { $zdjecie_tytul=$stare_zdjecie; } $update=mysqli_query($con,"update blog_jeden set id=$id, tytul=$tytul, data=NOW() , zdjecie=$zdjecie, tekst=$tekst"); if($update) { http://www.php.net/echo "<p>Zaktualizowano dane</p>"; } else{ http://www.php.net/echo "<p>Nie zaktualizowano danych</p>"; } } ?>
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
Tak, teraz poprawione i teraz zdjęcie zmienia (sorry, skopiowałem inną wersję). Nadal nie zmienia tytułu oraz tekstu
<?php require_once('connect-screen.php'); require_once('connect.php'); if (http://www.php.net/isset($_GET['id'])) { // Pobieranie danych z tablicy GET. $id=$_GET['id']; $tytul=$_GET['tytul']; } elseif (http://www.php.net/isset($_POST['id'])) { // Pobieranie danych z tablicy POST. $id = $_POST['id']; $tytul = $_POST['tytul']; } else { http://www.php.net/echo '<p class="er">Brak id</p>'; } ?> <? $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $query = "SELECT * FROM blog_jeden WHERE id='$id'"; $datadwa = mysqli_query($dbc, $query); http://www.php.net/echo '<div class="">'; while($row = mysqli_fetch_array($datadwa)) { $id=$row['id']; $tytul=$row['tytul']; $tekst=$row['tekst']; $zdjecie=$row['zdjecie']; ?> </div> <hr/> <form method="post" action="<?php http://www.php.net/echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data"> <label for="tytul">Tytul:</label><br /><br/> <input type="text" id="tytul" name="tytul" size="50" value="<?php http://www.php.net/echo $tytul; ?>" /> <br /><br/> <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie']; ?>" style="width:80px;height:80px;" /><br/> <input type="file" name="zdjecie"><br/><br/> <input type="hidden" name= "id" value="<?php http://www.php.net/echo $id; ?>" /> <textarea name="tekst"><?php http://www.php.net/echo $tekst; ?></textarea> <script> CKEDITOR.replace( 'tekst' ); </script> <span id="submit"> <input type="submit" value="Aktualizuj" name="submit" /> </span> </form> <?php if(http://www.php.net/isset($_POST['submit'])) { $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $zdjecie=$row['zdjecie']; http://www.php.net/echo $tekst; $querytrzy = "UPDATE blog_jeden SET id='$id', data=NOW(), zdjecie='$zdjecie', tytul='$tytul', tekst='$tekst' WHERE id = $id LIMIT 1"; mysqli_query($db, $querytrzy); http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>'; } ?> <?php } ?>
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.
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.
Dane masz pobrac z $_POST przed wykonaniem zapytania. Dosc logiczne.
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.
<?php $querysto = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'"; $datasto = mysqli_query($dbc, $querysto); while ($row = mysqli_fetch_array($datasto)) { http://www.php.net/echo $naglowek; http://www.php.net/echo $tekst; if(http://www.php.net/isset($_POST['submit'])) { $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $zdjecie=$row['zdjecie']; http://www.php.net/echo $tekst; $querytrzy = "UPDATE dodaj_informacje_blog SET id='$id', data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id = $id LIMIT 1"; mysqli_query($db, $querytrzy); http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>'; } } // zamkniecie while ?>
A skąd pobierasz tekst i nagłówek?
przed tą stroną jest wybór tematu, gdzie przez get jest przekazywany id. Na podstawie tego parametru pobieram z bazy wyniki (where id='$id')
if (http://www.php.net/isset($_GET['id'])) { $id=$_GET['id']; $naglowek=$_GET['naglowek']; }...
<?php require_once('connect.php'); require_once('connect-screen.php'); if (http://www.php.net/isset($_GET['id'])) { // Pobieranie danych z tablicy GET. $id=$_GET['id']; $naglowek=$_GET['naglowek']; } elseif (http://www.php.net/isset($_POST['id']) && http://www.php.net/isset($_POST['naglowek'])) { // Pobieranie danych z tablicy POST. $id = $_POST['id']; $naglowek = $_POST['naglowek']; } else { http://www.php.net/echo '<p class="er">brak id </p>'; } ?> <?php require_once('connect.php'); require_once('connect-screen.php'); $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $query = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'"; $datadwa = mysqli_query($dbc, $query); http://www.php.net/echo '<div class="">'; while ($row = mysqli_fetch_array($datadwa)) { $id=$row['id']; $data=$row['data']; $tekst=$row['tekst']; $naglowek=$row['naglowek']; $zdjecie=$row['zdjecie']; ?> </div> <form method="POST" action="edytuj_informacje_blog_drugi_krok.php" enctype="multipart/form-data"> <input type="text" id="data" name="data" size="50" value="<?php http://www.php.net/echo $data; ?>" /><br/><br/> <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie']; ?>" style="width:80px;height:80px;" /><br/> <input type="file" name="zdjecie"><br/><br/> <p>Nagłówek:</p><br/> <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/> <input type="hidden" name= "id" value="<?php http://www.php.net/echo $id; ?>" /> <br /><br/><br/> <textarea name="tekst"><?php http://www.php.net/echo $tekst; ?></textarea> <script> CKEDITOR.replace( 'tekst' ); </script> <?php } ?> <input type="Submit" value="Aktualizuj"> </form> <?php $querysto = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'"; $datasto = mysqli_query($dbc, $querysto); while ($row = mysqli_fetch_array($datasto)) { http://www.php.net/echo $naglowek; http://www.php.net/echo $tekst; if(http://www.php.net/isset($_POST['submit'])) { $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $zdjecie=$row['zdjecie']; http://www.php.net/echo $tekst; $querytrzy = "UPDATE dodaj_informacje_blog SET id='$id', data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id = $id LIMIT 1"; mysqli_query($db, $querytrzy); http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>'; } } // zamkniecie while ?>
Mowilem ze
1) set ID=id jest zbedne totalnie
2) Mowilem bys dane z POST pobral bezposrednio przed zapytaniem. Co tu jest niezrozumialego?
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>';
}
Tak.
I nie miales wywalic ID z WHERE, tylko z SET....
SET id='$id', to id='$id', ma zniknac
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'";
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?
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źć.
<?php require_once('connect.php'); require_once('connect-screen.php'); if (http://www.php.net/isset($_GET['id'])) { // Pobieranie danych z tablicy GET. $id=$_GET['id']; $naglowek=$_GET['naglowek']; } elseif (http://www.php.net/isset($_POST['id']) && http://www.php.net/isset($_POST['naglowek'])) { // Pobieranie danych z tablicy POST. $id = $_POST['id']; $naglowek = $_POST['naglowek']; } else { http://www.php.net/echo '<p class="er">brak id</p>'; } ?> <?php require_once('connect.php'); require_once('connect-screen.php'); $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $query = "SELECT * FROM dodaj_informacje_blog WHERE id='$id'"; $datadwa = mysqli_query($dbc, $query); while ($row = mysqli_fetch_array($datadwa)) { $id=$row['id']; $data=$row['data']; $tekst=$row['tekst']; $naglowek=$row['naglowek']; $zdjecie=$row['zdjecie']; http://www.php.net/global $tekst; ?> </div> <form enctype="multipart/form-data" method="post" action="<?php http://www.php.net/echo $_SERVER['PHP_SELF']; ?>"> <input type="text" id="data" name="data" size="50" value="<?php http://www.php.net/echo $data; ?>" /><br/><br/> <img src="../zdjecia_panel/<?php http://www.php.net/echo $row['zdjecie']; ?>" style="width:80px;height:80px;" /><br/> <input type="file" name="zdjecie"><br/><br/> <p>Nagłówek:</p><br/> <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/> <input type="hidden" name= "id" value="<?php http://www.php.net/echo $id; ?>" /> <br /><br/><br/> <textarea name="tekst"><?php http://www.php.net/echo $tekst; ?></textarea> <script> CKEDITOR.replace( 'tekst' ); </script> <?php } // zamkniecie while ?> <input type="Submit" value="Aktualizuj" name="submit"> </form> <?php if(http://www.php.net/isset($_POST['submit'])) { $target="../zdjecia_panel/".http://www.php.net/basename($zdjecie); $data =http://www.php.net/trim($_POST['data']); $naglowek =http://www.php.net/trim($_POST['naglowek']); $zdjecie = $_FILES['zdjecie']['name']; $zdjecie_type = $_FILES['zdjecie']['type']; $zdjecie_size = $_FILES['zdjecie']['size']; $zdjecie = http://www.php.net/uniqid(http://www.php.net/rand(), true) . '.JPEG'; $tekst =http://www.php.net/trim($_POST['tekst']); http://www.php.net/echo$naglowek; http://www.php.net/echo$tekst; $querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'"; mysqli_query($dbc, $querytrzy); http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>'; } ?>
A niby gdzie w tym formularzu masz name=submit?
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:
<?php if(http://www.php.net/isset($_POST['submit'])) { $naglowek =http://www.php.net/trim($_POST['naglowek']); $zdjecie=$_FILES['zdjecie']['name']; $zdjecie = http://www.php.net/uniqid(http://www.php.net/rand(), true) . '.JPEG'; $tekst =http://www.php.net/trim($_POST['tekst']); $target = GWW . $zdjecie; http://www.php.net/move_uploaded_file($_FILES['zdjecie']['tmp_name'], $target); $querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'"; mysqli_query($dbc, $querytrzy); http://www.php.net/echo '<p class="info">Informacje zostały zaktualizowane.</p>'; } ?>
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
ok ale
1.
if(http://www.php.net/isset($zdjecie)) { $querytrzy }
if(http://www.php.net/empty($zdjecie)) { $querytrzy }
if(http://www.php.net/file_exists($zdjecie)) { $querytrzy }
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?
ok sprawdzę w tym miejscu
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)