Mam pewien problem z dodaniem pliku na serwer przez użytkownika.w Skrócie robię to w taki sposób, że:
1. Najpierw wyświetla mi się główne Menu, z którego wybieram taką możliwość jak "Dodaj Przedmiot";
2. Następnie skrypt AJAX pod menu wyświetla mi się formularz, w którym mam pola typu file, text, i button z akcją onclick="UploadujPlik()";
3. funkcja ma wysłać plik wraz z jego nazwą przedmiotu do skryptu przedmiot.php, w którym jest zapisywany plik na serverze, dodawane informacje do Bazy Danych i aktualizowana lista wyświetlających się przedmiotów.
Wydaje mi się, że problem leży między 2. i 3. punktem. Śledząc plik przedmiot.php <?php ... print_r($_FILES); print_r($_POST); ... ?> pierwsza tablica FILES jest pusta a druga, POST posiada pole plik, w której jest tylko tekst (nazwa pliku z dysku), a nie plik;
Proszę Was, abyście spojrzeli trochę na kod i powiedzieli mi, jak to mógłbym przerobić, żeby działało. Nie chcę kodu, ale jedynie co zmienić w funkcji itp.
Oto kod pliku start.php:
<html> <head> <script type="text/javascript" language="javascript"> var XMLHttpRequestObject = false; if (window.XMLHttpRequest){ XMLHttpRequestObject = new XMLHttpRequest(); }else if (window.ActiveXObject){ XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } function PobierzPlik(cel,zrodlo){ if(XMLHttpRequestObject){ var p = document.getElementById(cel); XMLHttpRequestObject.open('GET',zrodlo,'true'); XMLHttpRequestObject.onreadystatechange = function(){ if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { p.innerHTML = XMLHttpRequestObject.responseText; } } XMLHttpRequestObject.send(null); } } function UploadujPlik(){ if (XMLHttpRequestObject){ var w = document.getElementById('k1'); var nazwa = document.getElementById('nazwa').value; var plik = document.getElementById('plik').value; var header="nazwa="+nazwa+"&plik="+plik; XMLHttpRequestObject.open('POST','http://localhost/przedmiot.php','true'); XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); XMLHttpRequestObject.onreadystatechange = function (){ if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){ w.innerHTML = XMLHttpRequestObject.responseText; } } XMLHttpRequestObject.send(header); } } function Usun(value,url,cel){ if (XMLHttpRequestObject){ var w = document.getElementById(cel); var id = value XMLHttpRequestObject.open('POST',url,'true'); XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); XMLHttpRequestObject.onreadystatechange = function (){ if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200){ w.innerHTML = XMLHttpRequestObject.responseText; } } XMLHttpRequestObject.send("id="+id); } } </script> </head> <body> <center> <input type="button" onclick="PobierzPlik('pt1','http://localhost/dodajklase.php');" value="Klasy" /> <input type="button" onclick="PobierzPlik('pt1','http://localhost/dodajnauczyciela.php');" value="Nauczyciel" /> <input type="button" onclick="PobierzPlik('pt1','http://localhost/nadajwychowawstwo.php');" value="Wychowawstwo" /> <input type="button" onclick="PobierzPlik('pt1','http://localhost/dodajdzwonek.php');" value="Dzwonki" /> <input type="button" onclick="PobierzPlik('pt1','http://localhost/dodajsale.php');" value="Dodaj Sale" /> <input type="button" onclick="PobierzPlik('pt1','http://localhost/dodajprzedmiot.php');" value="Dodaj Przedmiot" /> <input type="button" onclick="PobierzPlik('pt1','http://localhost/dodajgrupe.php');" value="Dodaj Grupe" /> <input type="button" onclick="PobierzPlik('pt1','http://localhost/wprowadzplan.php');" value="Plan lekcji" /> </center> <center> <div id="pt1"> Wybierz akcje </div> </center> </body> </html>
Plik dodajprzedmiot.php:
<?php $dodaj=<<<EDO <table border="0" width="80%"> <tr> <td>Nazwa:</td> <td><input type="text" id="nazwa" /> </td> <td>Sylabus: </td> <td><input enctype="multipart/form-data" type="file" id="plik" accept="application/msword,application/pdf" /></td> <td><input type="button" value="Dodaj" onclick="UploadujPlik();"/></td> </tr> </table> <br><br> EDO; include "przedmiot.php"; ?>
Plik przedmiot.php:
<?php if (($_FILES['file']['type'] == "application/msword") || ($_FILES['file']['type'] == "application/pdf")){ if ($_FILES['file']['error'] == 0){ }else{ include "connect.php"; if($_POST['nazwa']==""){ $plik="sylabus/" . $_FILES['file']['name']; $nazwa=$_POST['nazwa']; $query="INSERT INTO przedmiot('$nazwa','$plik')"; } } } } include "connect.php"; $query="SELECT id_przedmiot,nazwa,sylabus FROM przedmiot"; $body=<<<EDO <table border="0"> <tr> <td>Nazwa</td><td>Plik</td> </tr> EDO; $id=$row['id_przedmiot']; $nazwa=$row['nazwa']; $plik=$row['plik']; $body.=<<<EDO <tr> <td>$nazwa</td> <td><a href="sylabus/$plik">Pobierz</a></td> <td><input type="button" onclick="Usun($id,'usunprzedmiot.php','k1');" value="Usun" /><td> </tr> EDO; } $body.=<<<EDO </table> EDO; ?>
Z góry dziękuję za wszystkie odpowiedzi. Pozdrawiam