我有一本只能有两个记录的餐桌书。该表将始终仅存储两个PDF。
一个PDF对应于一等PDF书。其他PDF对应于2º和3º级的PDF书籍。我有一个管理面板,可以在其中更新这两个PDF。
要更新这些PDF,我需要在下拉列表中选择一个类别(1º类别或2º和3º类别),并且我还需要在输入文件中选择与所选类别的书相对应的PDF。
如果尚不存在所选班级的记录,我将进行插入,否则将进行更新。(基本上只是我第一次插入)
我遇到的问题是:
我将PDFS成功上传到我的Books文件夹中,当我在books文件夹中打开PDF时,可以访问正确的PDF。
但是然后我的输入文件下面有两个指向我当前两个PDF的链接,当我单击以获取每个pdf时,我没有得到正确的pdf,我得到的是我主要用于测试的旧PDF,现在我什至没有在我的项目目录中。
真的很奇怪,我不了解这种情况,似乎我总是在访问保存在缓存或其他内容中的PDF文件,但是当我打开上载的PDF时在我的书本文件夹中,它们始终是正确的PDF。
当我使用开发人员工具时,我的PDF链接将具有正确的路径: <a style="margin-right:10px;" href="../../uploads/books/2014/07/1_class.pdf" title="Pdf of book of 1st class">Se current book of 1st class.</a>
您知道为什么会发生这种情况吗?这是我的电子书文件中的代码:
<div>
<?php
//First I see if user submit my form
if(isset($_POST['sendForm'])){
//I store class that users chooses (can be 1º class or 2º and 3º class)
$f['class'] = $_POST['class'];
//I get a title depending of each selected class
$title = ($f['class'] == '1' ? '1º class' : '2º and 3º class');
//I see if there are empty fields
if(in_array('',$f) || empty($_FILES['pdf']['tmp_name'])){
echo 'Please fill all fields';
}
//If all fields were submited I Will upload selected pdf
else{
if(!empty($_FILES['pdf']['tmp_name'])){
$folder = '../../uploads/books/';
$year = date('Y');
$month = date('m');
if(!file_exists($folder.$year)){
mkdir($folder.$year,0755);
}
if(!file_exists($folder.$year.'/'.$month)){
mkdir($folder.$year.'/'.$month,0755);
}
$f['class'] = ($f['class'] == '1' ? '1_class' : '2_3_classs');
$pdf = $_FILES['pdf'];
$ext = substr($pdf['name'],-3);
$name = $f['class'];
$f['pdf'] = $year.'/'.$month.'/'.$name.'.'.$ext;
move_uploaded_file($pdf['tmp_name'], $folder.$f['pdf']);
}
//If already exist a pdf book for selected class I will do an update with last selected pdf
$readBooks = $pdo->prepare("SELECT * FROM books WHERE class = ?");
$readBooks->bindParam(1,$f['class'],PDO::PARAM_STR);
$readBooks->execute();
$resultBooks = $readBooks->fetch(PDO::FETCH_ASSOC);
if($readBooks->rowCount() >=1){
$updEmt = $pdo->prepare("UPDATE books set title = ?, pdf =?, class=?, WHERE class = ?");
$updBook->bindParam(1,$title);
$updBook->bindParam(2,$f['pdf']);
$updBook->bindParam(3,$f['class']);
$updBook->bindParam(4,$f['class']);
$updBook->execute();
echo 'Book inserted with sucess';
}
//If dont exist a pdf book for selected class I will do an insert with last selected pdf
else{
$insEmt = $pdo->prepare("INSERT INTO books (title, pdf, class) VALUES (?,?,?)");
$insEmt->bindParam(1,$title);
$insEmt->bindParam(2,$f['pdf']);
$insEmt->bindParam(3,$f['class']);
$insEmt->execute();
echo 'Book inserted with sucess';
}
}
}
?>
<form name="editpost" method="post" enctype="multipart/form-data">
<!--I have a field to select class-->
<!--And then I have a field to select my book pdf:-->
<div class="label">
<span class="field">Book pdf:</span>
<input type="file" name="pdf" accept="application/pdf" />
<?php
$readB = $pdo->prepare("SELECT * from books");
$readB->execute();
//below this field I want to show the current book for 1st class and for 2nd and 3rd class
echo '<div class="viewcapa">';
while($resultBook = $readB->fetch(PDO::FETCH_ASSOC)){
echo '<a style="margin-right:10px;" href="../../uploads/books/'.$resultBook['pdf'].'"';
echo 'title="Pdf book of '.$resultBook['title'].'">';
echo 'See current book '.$resultBook['title'].'';
echo '</a>';
}
echo '</div>';
?>
</div>
<input type="submit" value="Insert" name="sendForm"/>
</form>
</div>
您的“新”文件与“旧”文件具有相同的文件名吗?如果是这样,则可能是您建议的缓存问题。您是否尝试清除浏览器缓存?
解决此问题的方法可能是以某种方式给文件名加上时间戳。
(以前的答案成为评论了吗?)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句