Mam plik formularza ( zrobiłem to na szybko na potrzeby wątku na forum).
Można w nim dodawać informacje wraz z plikiem ( np. doc, pdf). To działa bez problemu. Wszystko ładnie się wyświetla w dalszej części pliku.
Jest też opcja edycji, która zaczytuje dane z bazy i pozwala zmodyfikować.
Plik formularza wygląda jak poniżej:
<h2>Dodawanie</h2> <table> <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data"> <tr><td>Imię:</td><td><input type="text" name="imie" /></td></tr> <tr><td>Nazwisko:</td><td><input type="text" name="nazwisko" /></td></tr> <tr><td>Dołącz plik:</td><td><input type="file" name="file"/></td></tr> <tr><td></td><td><input type="submit" name="add" style="background-color:yellow" value="Dodaj"/></tr> </form></table> <hr> <?php $get = $test->load_all(); ?> <table width="50%" border="1"> <tr bgcolor="yellow"> <td width="20%"><b>Imie</b></td> <td width="20%"><b>Nazwisko</b></td> <td width="20%"><b>Plik</b></td> <td width="10%"><b>Zarządzaj</b></td></tr> <?php <td width="20%">'.$set['nazwisko'].'</td> <td width="20%">'.$set['plik'].'</td> <td width="2%"><a href="panel.php?get=testowy&set=edit&id='.$set['Id'].'" alt="Edytuj" title="Edytuj miasto"><img src="../images/edit.png" width="20" height="20" ></a></td>'; } ?> </table> <?php ?> <hr> <table> <h3>Edytuj</h3> <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST" > <tr><td>Imię:</td><td><input type="text" name="imie" value="<?php echo $set['imie']; ?>"/></td></tr> <tr><td>Nazwisko:</td><td><input type="text" name="nazwisko" value="<?php echo $set['nazwisko']; ?>"/></td></tr> <tr><td>Dołącz plik:</td><td><input type="file" name="file"/></td></tr> <tr><td></td><td><input type="submit" name="edit" style="background-color:yellow" value="Edytuj"/></tr> </form> </table> <?php }?>
Drugi plik zawiera zapytania do bazy:
<?php class Testowy{ public $imie; public $nazwisko; public $file; public function add(){ $query = mysql_query("INSERT INTO `test1` (`id`,`imie`, `nazwisko`, `plik`) VALUES (NULL,'$this->imie', '$this->nazwisko', '$this->file')") ;} public function edit( $id){ $query = mysql_query("UPDATE `test1` SET `imie` = '$this->imie', `nazwisko` = '$this->nazwisko', `plik` = '$this->file' WHERE `id` = '$id'") ;} public function get( $id){ public function load_all(){ }?>
W trzecim najważniejszym pliku wszystko się wykonuje:
if ($_SESSION['upr_test']=='1'){ require_once('../class/class.SQL.php'); require_once('../class/class.User.php'); require_once('../class/class.Testowy.php'); $sql = new SQL; $sql->connection(); $user = new User; $test = new Testowy; if( $user->checkSession() == false){ if( !empty( $_POST['imie']) && !empty( $_POST['nazwisko']) && is_uploaded_file( $_FILES['file']['tmp_name'])){ if( $_FILES['file']['type'] == 'application/pdf' or $_FILES['file']['type'] == 'application/msword' or $_FILES['file']['type'] == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' or $_FILES['file']['type'] == 'application/vnd.ms-excel' or $_FILES['file']['type'] == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { $test->file = $file_name; } $test->add(); }} if( !empty( $_POST['imie']) && !empty( $_POST['nazwisko']) && is_uploaded_file( $_FILES['file']['tmp_name'])){ if( $_FILES['file']['type'] == 'application/pdf' or $_FILES['file']['type'] == 'application/msword' or $_FILES['file']['type'] == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' or $_FILES['file']['type'] == 'application/vnd.ms-excel' or $_FILES['file']['type'] == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { $test->file = $file_name; } $test->edit( $id); }} $title = 'Zarządzaj'; require_once('../themes/header.php'); require_once('../admin/menu_slownik.php'); require_once('../themes/admin/testowy.php'); }
Dodawanie danych wraz w nową nazwą pliku do bazy, a także umieszczeniem pliku np. doc w odpowiednim folderze na serwerze działa dobrze.
Problem pojawia się w sytuacji edycji. Oczywiście problem dotyczy pliku.
Zrobiłem wszystko analogicznie jak w przypadku dodawania, ale efektu nie ma.
Chciałbym by nazwa pliku w bazie podmieniła się na nową nazwę pliku z edycji i by nowy plik dodał się do folderu na serwerze. Stary plik na serwerze zostaje.
Jak to można zrobić, skoro robiąc identycznie jak przy dodawaniu, w edycji to nie działa?