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 (isset($_GET['id'])) { // Pobieranie danych z tablicy GET.
$id=$_GET['id'];
}
elseif (isset($_POST['id'])) { // Pobieranie danych z tablicy POST.
$id = $_POST['id'];
}
else {
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 echo $row['tytul']; ?>">
</td>
</tr>
<th>Zdjęcie</th>
<tr>
<td>
<img src="../zdjecia_panel/
<?php 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 echo $row['tekst']; ?></textarea>
<script>
CKEDITOR.replace( 'tekst' );
</script>
</td>
</table>
</form>
<?php
if(isset($_POST['aktualizacja'])) { $tytul=$_POST['tytul'];
if(isset($_FILES['zdjecie']['tytul']) && ($_FILES['zdjecie']['tytul'] !="")) { $size=$_FILES['zdjecie']['size'];
$temp=$_FILES['zdjecie']['tmp_name'];
$zdjecie_tytul=$_FILES['zdjecie']['name'];
unlink("../zdjecia_panel/$stare_zdjecie"); }
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) {
echo "<p>Zaktualizowano dane</p>"; }
else{
echo "<p>Nie zaktualizowano danych</p>"; }
}
?>
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
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 (isset($_GET['id'])) { // Pobieranie danych z tablicy GET.
$id=$_GET['id'];
$tytul=$_GET['tytul'];
}
elseif (isset($_POST['id'])) { // Pobieranie danych z tablicy POST.
$id = $_POST['id'];
$tytul = $_POST['tytul'];
}
else {
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);
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 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 echo $tytul; ?>" />
<br /><br/>
<img src="../zdjecia_panel/
<?php echo $row['zdjecie']; ?>" style="width:80px;height:80px;" /><br/>
<input type="file" name="zdjecie"><br/><br/>
<input type="hidden" name= "id" value="
<?php echo $id; ?>" />
<textarea name="tekst">
<?php echo $tekst; ?></textarea>
<script>
CKEDITOR.replace( 'tekst' );
</script>
<span id="submit">
<input type="submit" value="Aktualizuj" name="submit" />
</span>
</form>
<?php
if(isset($_POST['submit'])) { $target="../zdjecia_panel/".basename($zdjecie); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$zdjecie=$row['zdjecie'];
$querytrzy = "UPDATE blog_jeden SET id='$id', data=NOW(), zdjecie='$zdjecie', tytul='$tytul', tekst='$tekst' WHERE id = $id LIMIT 1";
mysqli_query($db, $querytrzy);
echo '<p class="info">Informacje zostały zaktualizowane.</p>'; }
?>
<?php
}
?>
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.
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.
nospor
31.10.2018, 13:30:21
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)) {
if(isset($_POST['submit'])) { $target="../zdjecia_panel/".basename($zdjecie); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$zdjecie=$row['zdjecie'];
$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);
echo '<p class="info">Informacje zostały zaktualizowane.</p>'; }
} // zamkniecie while
?>
trueblue
31.10.2018, 14:50:35
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 (isset($_GET['id'])) { $id=$_GET['id'];
$naglowek=$_GET['naglowek'];
}...
całość obecnie wygląda tak (echo przy querysto z naglowkiem i tekstem wyswietla prawidlowo, tylko dalej nie dziala update):
<?php
require_once('connect.php');
require_once('connect-screen.php');
if (isset($_GET['id'])) { // Pobieranie danych z tablicy GET.
$id=$_GET['id'];
$naglowek=$_GET['naglowek'];
}
elseif (isset($_POST['id']) && isset($_POST['naglowek'])) { // Pobieranie danych z tablicy POST.
$id = $_POST['id'];
$naglowek = $_POST['naglowek'];
}
else {
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'];
?>
</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 echo $data; ?>" /><br/><br/>
<img src="../zdjecia_panel/
<?php 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(!empty($naglowek)) echo $naglowek; ?>" /><br /><br/>
<input type="hidden" name= "id" value="
<?php echo $id; ?>" />
<br /><br/><br/>
<textarea name="tekst">
<?php 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)) {
if(isset($_POST['submit'])) { $target="../zdjecia_panel/".basename($zdjecie); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$zdjecie=$row['zdjecie'];
$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);
echo '<p class="info">Informacje zostały zaktualizowane.</p>'; }
} // zamkniecie while
?>
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?
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>';
}
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
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'";
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?
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 (isset($_GET['id'])) { // Pobieranie danych z tablicy GET.
$id=$_GET['id'];
$naglowek=$_GET['naglowek'];
}
elseif (isset($_POST['id']) && isset($_POST['naglowek'])) { // Pobieranie danych z tablicy POST.
$id = $_POST['id'];
$naglowek = $_POST['naglowek'];
}
else {
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'];
?>
</div>
<form enctype="multipart/form-data" method="post" action="
<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" id="data" name="data" size="50" value="
<?php echo $data; ?>" /><br/><br/>
<img src="../zdjecia_panel/
<?php 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(!empty($naglowek)) echo $naglowek; ?>" /><br /><br/>
<input type="hidden" name= "id" value="
<?php echo $id; ?>" />
<br /><br/><br/>
<textarea name="tekst">
<?php echo $tekst; ?></textarea>
<script>
CKEDITOR.replace( 'tekst' );
</script>
<?php
} // zamkniecie while
?>
<input type="Submit" value="Aktualizuj" name="submit">
</form>
<?php
if(isset($_POST['submit'])) { $target="../zdjecia_panel/".basename($zdjecie); $data =trim($_POST['data']); $naglowek =trim($_POST['naglowek']); $zdjecie = $_FILES['zdjecie']['name'];
$zdjecie_type = $_FILES['zdjecie']['type'];
$zdjecie_size = $_FILES['zdjecie']['size'];
$tekst =trim($_POST['tekst']); $querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'";
mysqli_query($dbc, $querytrzy);
echo '<p class="info">Informacje zostały zaktualizowane.</p>'; }
?>
viking
31.10.2018, 20:06:16
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(isset($_POST['submit'])) { $naglowek =trim($_POST['naglowek']); $zdjecie=$_FILES['zdjecie']['name'];
$tekst =trim($_POST['tekst']); $target = GWW . $zdjecie;
$querytrzy = "UPDATE dodaj_informacje_blog SET data=NOW(), naglowek='$naglowek', zdjecie='$zdjecie', tekst='$tekst' WHERE id='$id'";
mysqli_query($dbc, $querytrzy);
echo '<p class="info">Informacje zostały zaktualizowane.</p>'; }
?>
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
ok ale
1.
$querytrzy
}
czy
2
$querytrzy
}
czy
3
$querytrzy
}
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?
ok sprawdzę w tym miejscu
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.