Podczas "wykonywania" update-tu danych może zajść taka sytuacja w momencie wysłania formularza, że
- nie zostały wysłane żadne dane (pusty formularz)
- zostały podane wszystkie pola
- zostały podane wybrane pola
proponuję w oparciu o to co "przyszło" z formularza budować dynamicznie zapytanie sql-owe, a mianowicie ten "kawałek"
pomiędzy UPDATE ... SET a WHERE ... na podstawie tablicy
przykład - Twój kod nieco zmodyfikowany (ważne: image[] => image1, image2)
<form action="code.php" method="POST" enctype="multipart/form-data">
<div class="col-md-6 mb-3">
<label for="name">Name</label>
<input type="text" id="name" name="name" class="form-control" max="30" value="<?= $post_row['name'] ?>" />
</div>
<div class="col-md-3 mb-3">
<label for="image1">Zdjęcie 1 na stronę sklepu</label>
<input type="hidden" name="old_image1" value="<?= $post_row['image1'] ?>" />
<input type="file" id="image1" name="image1" class="form-control" accept=".png, .jpeg, .jpg, .webp" />
</div>
<div class="col-md-1 mb-3 text-center">
<img src="../files/sklep/<?= $post_row['image1'] ?>" width="100px" height="100px" />
</div>
<div class="col-md-3 mb-3">
<label for="image2">Zdjęcie 2 na stronę sklepu</label>
<input type="hidden" name="old_image2" value="<?= $post_row['image2'] ?>" />
<input type="file" id="image2" name="image2" class="form-control" accept=".png, .jpeg, .jpg, .webp" />
</div>
<div class="col-md-1 mb-3 text-center">
<img src="../files/sklep/<?= $post_row['image2'] ?>" width="100px" height="100px" />
</div>
<input type="submit" name="post_update" value="Zapisz" />
</form>
if(isset($_POST['post_update']))
{
//var_dump($_POST, $_FILES);
$post_id = $_POST['post_id'];
$location = '../files/sklep/';
$sql_set = []; // inicjujemy pustą tablicę
$name = $_POST['name'] ?? null;
if ($name)
{
$sql_set[] = "name='$name'"; // dodajemy wpis do tablicy - pole dla zapytania sql
}
$image1 = $_FILES['image1']['name'] ?? null;
if ($image1)
{
$old_image1 = $_POST['old_image1'];
if (file_exists($location.$old_image1))
{
unlink($location.$old_image1);
}
if (in_array($_FILES['image1']['type'], ['image/png', 'image/jpeg', 'image/jpg', 'image/webp']))
{
$update_image1 = hrtime(true).'.'.pathinfo($image1, PATHINFO_EXTENSION);
move_uploaded_file($_FILES['image1']['tmp_name'], $location.$update_image1);
$sql_set[] = "image1='$update_image1'"; // dodajemy wpis do tablicy - pole dla zapytania sql
}
}
$image2 = $_FILES['image2']['name'] ?? null;
if ($image2)
{
$old_image2 = $_POST['old_image2'];
if (file_exists($location.$old_image2))
{
unlink($location.$old_image2);
}
if (in_array($_FILES['image2']['type'], ['image/png', 'image/jpeg', 'image/jpg', 'image/webp']))
{
$update_image2 = hrtime(true).'.'.pathinfo($image2, PATHINFO_EXTENSION);
move_uploaded_file($_FILES['image2']['tmp_name'], $location.$update_image2);
$sql_set[] = "image2='$update_image2'"; // dodajemy wpis do tablicy - pole dla zapytania sql
}
}
if ($sql_set) // tablica zawiera dane, tworzymy zapytanie
{
$query = 'UPDATE `post` SET '.join(', ', $sql_set)." WHERE id='$post_id'";
//var_dump($query);
if ($query_run = mysqli_query($con, $query))
{
$_SESSION['message'] = 'Edycja danych powiodła się';
header('location: post-view.php');
exit(0);
}
else
{
$_SESSION['message'] = 'Uaktualnienie danych nie powiodło się!';
header('location: post-edit.php?id='.$post_id);
exit(0);
}
}
else
{
$_SESSION['message'] = 'Formularz nie zawiera danych do uaktualnienia!'; // został przesłany pusty formularz, nic nie update-ujemy
header('location: post-edit.php?id='.$post_id);
exit(0);
}
}
?>
php dopuszcza taki zapis
$sql_set = [];
tworzymy pustą tablicę bez podawania jej rozmiaru
$sql_set[] = "jakieś dane";
tworzymy wpis do tablicy na pierwszym wolnym indeksie
$sql_set = [];
// ... kod
$sql_set[] = "jakieś dane"; // pierwsze przypisanie, więc indeks nadany to 0
// ... kod
$sql_set[] = "kolejne jakieś dane"; // kolejne przypisanie, w tym przypadku indeks nadany to 1
P.S Plus podgląd wybranego obrazka
<form action="code.php" id="post_edit" method="POST" enctype="multipart/form-data">
<div class="col-md-6 mb-3">
<label for="name">Name</label>
<input type="text" id="name" name="name" class="form-control" max="30" value="<?= $post_row['name'] ?>" />
</div>
<div class="col-md-3 mb-3">
<label for="image1">Zdjęcie 1 na stronę sklepu</label>
<input type="hidden" name="old_image1" value="<?= $post_row['image1'] ?>" />
<input type="file" id="image1" name="image1" class="form-control" accept="image/png, image/jpeg, image/jpg, image/webp" />
</div>
<div class="col-md-1 mb-3 text-center">
<label for="view_old_image1">Obecne zdjęcie</label>
<img src="../files/sklep/<?= $post_row['image1'] ?>" id="view_old_image1" width="100px" height="100px" />
<label for="view_new_image1">Nowe zdjęcie</label>
<img src="data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=" id="view_new_image1" width="100px" height="100px" />
</div>
<div class="col-md-3 mb-3">
<label for="image2">Zdjęcie 2 na stronę sklepu</label>
<input type="hidden" name="old_image2" value="<?= $post_row['image2'] ?>" />
<input type="file" id="image2" name="image2" class="form-control" accept="image/png, image/jpeg, image/jpg, image/webp" />
</div>
<div class="col-md-1 mb-3 text-center">
<label for="view_old_image2">Obecne zdjęcie</label>
<img src="../files/sklep/<?= $post_row['image2'] ?>" id="view_old_image2" width="100px" height="100px" />
<label for="view_new_image2">Nowe zdjęcie</label>
<img src="data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=" id="view_new_image2" width="100px" height="100px" />
</div>
<input type="submit" name="post_update" value="Zapisz" />
</form>
<style>
form#post_edit img[src^="data:"] {
box-shadow: inset 0 0 0 1px rgba(0,0,0,0.2);
}
form#post_edit img:not([src^="data:"]) {
cursor: zoom-in;
transition: transform 0.4s 0.2s;
}
form#post_edit img:not([src^="data:"]):hover {
transform: scale(2);
}
</style>
<script>
window.onload = newImagePreview;
function newImagePreview()
{
const EMPTY_SRC = "data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA="
const form_post_edit = document.querySelector('form#post_edit');
form_post_edit.onchange = newImageShow;
function newImageShow(e)
{
if (e.target.nodeName == 'INPUT' && e.target.type == 'file')
{
const img_view_new = form_post_edit.querySelector('img#view_new_' + e.target.id);
try
{
const file = e.target.files[0];
if (['image/png', 'image/jpeg', 'image/jpg', 'image/webp'].includes(file.type))
{
img_view_new.src = URL.createObjectURL(file);
}
}
catch(err)
{
img_view_new.src = EMPTY_SRC;
}
}
}
}
</script>