有人可以帮助我吗? 我正在制作带有图像的编辑帖子,这段代码可以工作,但是如果我选择另一张图片,旧版本仍在我的文件夹中。
第二个问题是如果我不选择任何图像,数据库中的图像名称会发生变化。就像我选择图像,但只输入$ 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>";}}
抱歉,如果说错了,我真的不擅长英语!
答案 0 :(得分:0)
在进入上传之前或使用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'>";
答案 1 :(得分:0)
回答第一个问题:
在你的代码中,变量$ randomedit = time('YmdHis');造成了这个问题。因为它使用的是当前时间,所以在任何时候你都找不到具有相同唯一名称的文件,因此不会有覆盖文件的问题。此外,您尚未使用unlink()函数显式删除该文件。
回答第二个问题:
数据库中的图像名称发生更改,因为您没有检查文件是否正在上载。检查$ _FILES数组是否包含任何值。如果它包含值,则只将新文件名发送到更新查询,否则不要更新数据库中的文件名。
希望这会对你有所帮助。