有人能帮我吗?我用图片编辑帖子,这段代码有效,但如果我选择另一张图片,旧的图片仍然在我的文件夹里。
第二个问题是,如果我不选择任何图像,数据库中的图像名称就会更改。这就像我选择图像,但只输入$randomnewedit。
if (isset ($_POST['submitedit'])){
$uploads_dir = '../images';
$randomedit = time('YmdHis');
$randomnewedit = $randomedit."_";
$tipe_fileedit = $_FILES['filefotoedit']['type'];
$tmp_fileedit = $_FILES['filefotoedit']['tmp_name'];
$nama_fileedit = $_FILES['filefotoedit']['name'];
$new_nama_fileedit = $randomnewedit.$nama_fileedit;
move_uploaded_file($tmp_fileedit,"$uploads_dir/$new_nama_fileedit");
$namabankedit=trim($_POST['namabankedit']);
$cabangedit=trim($_POST['cabangedit']);
$norekeningedit=trim($_POST['norekeningedit']);
$namanasabahedit=trim($_POST['namanasabahedit']);
$kueri = "UPDATE trans SET namabank='" . $namabankedit. "', cabang='" . $cabangedit. "', rekeningbank='" . $norekeningedit. "', namanasabah='" . $namanasabahedit. "', logobank='" . $new_nama_fileedit. "' WHERE idtrans='" . $idedit . "'";
$hasil = mysql_query($kueri);
echo "<meta http-equiv='refresh' content='0; url=indexcuko.php?module=rekening'>";
}}}
这是我的编辑表格:
if (isset ($_GET['act']) ? $_GET['act']:0){
if ($_GET['act'] == 'edit') {
$idedit = $_GET['id'];
$resultedit = mysql_query("SELECT * FROM trans WHERE idtrans = $idedit;");
$rowedit = mysql_fetch_assoc($resultedit);
$titlenamabank = $rowedit['namabank'];
$titlecabang = $rowedit['cabang'];
$titlerekeningbank = $rowedit['rekeningbank'];
$titlenamanasabah = $rowedit['namanasabah'];
$titlelogobank = $rowedit['logobank'];
echo"
<h1>Edit Rekening</h1>
<form action='' method='"post'" onreset='"location.href=rekening.php'" name='"form2'" enctype='multipart/form-data'>
<table class='"tableb'">
<tr>
<td width=120 align=center>Nama Bank</td>
<td align=center>:</td>
<td width=120 align=center><input class='"inputz'" name='"namabankedit'" id='"namabank'" type='"text'" size='"50'" value='"$titlenamabank'" /></td>
</tr>
<tr>
<td width=120 align=center>Cabang</td>
<td align=center>:</td>
<td width=120 align=center><input class='"inputz'" name='"cabangedit'" id='"cabang'" type='"text'" size='"50'" value='"$titlecabang'" /></td>
</tr>
<tr>
<td width=120 align=center>No. Rekening</td>
<td align=center>:</td>
<td width=120 align=center><input class='"inputz'" name='"norekeningedit'" id='"norekening'" type='"text'" size='"50'" value='"$titlerekeningbank'" /></td>
</tr>
<tr>
<td width=120 align=center>Atas Nama</td>
<td align=center>:</td>
<td width=120 align=center><input class='"inputz'" name='"namanasabahedit'" id='"namanasabah'" type='"text'" size='"50'" value='"$titlenamanasabah'" /></td>
</tr>
<tr>
<td width=120 align=center>Logo Bank</td>
<td align=center>:</td>
<td width=120 align=center><input name='"filefotoedit'" id='"filefoto'" type='"file'" value='"$titlelogobank'" /></td>
</tr>
<tr>
<td colspan='"3'"><button class='"buttonz'" name='"submitedit'" type='"submit'" onClick='"return verify()'" value='"save'">Simpan</button></td>
</tr>
</table>
</form>";}}
对不起,如果说错了,我的英语不是很好!
在上传之前或使用php内置函数之后,您需要取消链接旧文件。
unlink("filepath/filename");
对于第二个问题:你需要检查文件是否存在,基于此,
$nama_fileedit = $_FILES['filefotoedit']['name'];
$new_nama_fileedit = $randomnewedit.$nama_fileedit;
$namabankedit=trim($_POST['namabankedit']);
$cabangedit=trim($_POST['cabangedit']);
$norekeningedit=trim($_POST['norekeningedit']);
$namanasabahedit=trim($_POST['namanasabahedit']);
if(isset($nama_fileedit){
move_uploaded_file($tmp_fileedit,"$uploads_dir/$new_nama_fileedit");
$kueri = "UPDATE trans SET namabank='" . $namabankedit. "', cabang='" . $cabangedit. "', rekeningbank='" . $norekeningedit. "', namanasabah='" . $namanasabahedit. "', logobank='" . $new_nama_fileedit. "' WHERE idtrans='" . $idedit . "'";
}else{
$kueri = "UPDATE trans SET namabank='" . $namabankedit. "', cabang='" . $cabangedit. "', rekeningbank='" . $norekeningedit. "', namanasabah='" . $namanasabahedit. "' WHERE idtrans='" . $idedit . "'";
}
$hasil = mysql_query($kueri);
echo "<meta http-equiv='refresh' content='0; url=indexcuko.php?module=rekening'>";
回答第一个问题:
在您的代码中,变量$randomedit=时间('YmdHis');是造成问题的原因。由于它使用当前时间,在任何时候你都找不到具有相同唯一名称的文件,因此不会有重写文件的问题。此外,您还没有使用unlink()函数显式删除文件。
回答第二个问题:
数据库中的图像名称发生更改,因为您没有检查文件是否正在上载。检查$_FILES数组中是否包含任何值。如果它包含值,则只将新文件名发送到更新查询,否则不更新数据库中的文件名。
希望这对你有帮助。