php 更新我网站上的任务会删除该项目包含的图片-如何修复此问题?

ldioqlga  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(225)

PHP:

<?php

require "../konekcija/konekcija.php";
require "../modeli/zadatak.php";
require "../modeli/kategorija.php";

session_start();
if (!isset($_SESSION["korisnik"])) {
    header('Location: index.php');
    exit();
}

if (isset($_COOKIE["korisnik"])) {
    $korisnik = $_COOKIE["korisnik"];
}

if (isset($_POST["button2"])) {
    $zadatak = trim($_POST["zadatak"]);

    $podaci = Zadatak::vratiPodatke($zadatak, $konekcija);
    if ($podaci->slika != "") {
    unlink("../slike/".$podaci->slika);
    }
    Zadatak::obrisi($zadatak, $konekcija);
} else if (isset($_POST["button"])) {
    $zadatak = trim($_POST["zadatak"]);
    $naziv = trim($_POST["naziv"]);
    $kategorija = trim($_POST["kategorija"]);
    $opis = trim($_POST["opis"]);
    $izvrsen = trim($_POST["status"]);

    $provera = trim($_POST["provera"]);
    $obrisi = trim($_POST["obrisi"]);

    if ($provera != "") {
        $ime = "";
    }

    if ($_FILES["real_file"]["name"] != "") {
        $ime = time()."_".$_FILES["real_file"]["name"];
        $target = "../slike/".$ime;
        move_uploaded_file($_FILES["real_file"]["tmp_name"], $target);
    }
    
    Zadatak::izmeni($zadatak, $naziv, $kategorija, $opis, $izvrsen, $ime, $konekcija);
}

?>

更新功能:

public static function izmeni($zadatak, $naziv, $kategorija, $opis, $izvrsen, $slika, mysqli $konekcija) {
        $datumZavrsetka = null;

        if ($izvrsen == "1") {
            $datumZavrsetka = date('Y-m-d H:i:s');
        }

        if ($slika != "") {
            $dodaj = $konekcija->prepare("UPDATE zadatak SET naziv = ?, kategorija = ?, opis = ?, izvrsen = ?, datumZavrsetka = ?, slika = ? WHERE zadatakID = ?");
            $dodaj->bind_param("sisissi", $naziv, $kategorija, $opis, $izvrsen, $datumZavrsetka, $slika, $zadatak);
            $dodaj->execute();
        } else {
            $dodaj = $konekcija->prepare("UPDATE zadatak SET naziv = ?, kategorija = ?, opis = ?, izvrsen = ?, datumZavrsetka = ?, slika = NULL WHERE zadatakID = ?");
            $dodaj->bind_param("sisisi", $naziv, $kategorija, $opis, $izvrsen, $datumZavrsetka, $zadatak);
            $dodaj->execute();
        }
        return $dodaj;
    }

HTML和jQuery:

<div class="datadeo">
   <h4>Naziv</h4>
   <input type="text" id="naziv" name="naziv" value ="<?=$podaci->naziv?>">

<h4>Kategorija</h4>
<select id="kategorija" name="kategorija"></select>

<h4>Opis</h4>
<textarea name="opis" id="opis"><?=$podaci->opis?></textarea>
</div>

<div class="datadeo1">
    <h4>Slika</h4>
    <?php if($podaci->slika == "") { ?>
        <div id="slikadiv">
            <input type="file" name="real_file" id="real_file" accept=".jpg, .jpeg, .png" value="" hidden="hidden">
            <button type="button" id="custom_button" class="inputslika">Izaberi sliku</button>
        </div>
    <?php } else { ?>
        <div id = "slikawrapnad" class="slikawrapnad">
            <div class="slikawrap1">
                <img id="slicica" src="../slike/<?=$podaci->slika?>"/>
            </div>
            <input type="file" name="real_file" id="real_file" accept=".jpg, .jpeg, .png" value="" hidden="hidden">
            <button type="button" id="custom_button" class="inputslika1"><span class="puntekst">Izmeni sliku</span><span class="krataktekst">Izmeni</span></button>
            <button type="button" id="custom_button1" class="inputslika2" onclick="resetujFormu();"><span class="puntekst">Obriši sliku</span><span class="krataktekst">Obriši</span></button>
        </div>
    <?php } ?>

    <h4>Status</h4>
    <div class = "status">
        <input type="radio" id="neizvrsen" name="status" class="opcija" value="0">
        <label for="neizvrsen">Neizvršen</label>
        <input type="radio" id="izvrsen" name="status" class="opcija" value="1">
        <label for="izvrsen">Izvršen</label>
    </div>

    <div id="buttonwrapperizmena">
        <div class="buttoncontainerizmena">
            <button type="submit" class="buttonizmena" name="button" onclick="izmeniZadatak();"><span class="puntekst">Izmeni zadatak</span><span class="krataktekst">Izmeni</span></button>
        </div>
        <div class="buttoncontainerizmena">
            <button type="submit" class="button2izmena" name="button2" onclick="obrisiSliku(); obrisiZadatak();"><span class="puntekst">Obriši zadatak</span><span class="krataktekst">Obriši</span></button>
        </div>
    </div>

<input type="text" value="" id="provera" name="provera" hidden="hidden">
                <input type="text" value="" id="obrisi" name="obrisi" hidden="hidden">

</div>

<script>
function izmeniZadatak() {
    $("#formaizmena").ajaxForm(function() {
        $("#prikaziizmeni").css("display", "flex");
        popuniZadatke();
        $("#skriveno").css('display', 'none');
    })
}

</script>

表单在删除任务时工作正常-如果它有图像,它将删除任务和图像,如果没有,它只会删除图像。当它必须上传一张新图片、更改一张现有图片或删除一张现有图片时,该表单工作正常。但是当我试图更新它而不对任务中的图片做任何事情时,问题就发生了。不管我做什么,它总是消失(数据库字段显示为NULL),我似乎无法弄清楚它。有人能帮帮我吗?

lp0sw83n

lp0sw83n1#

你得换衣服了

UPDATE zadatak SET naziv = ?, kategorija = ?, opis = ?, izvrsen = ?, datumZavrsetka = ?, slika = NULL WHERE zadatakID = ?

UPDATE zadatak SET naziv = ?, kategorija = ?, opis = ?, izvrsen = ?, datumZavrsetka = ? WHERE zadatakID = ?

即,您必须删除

slika = NULL

部分,以便当没有新的上传时,它不会用NULL覆盖图像数据。如果只是从UPDATE查询中删除它,则该列中的现有值将保持不变。

相关问题