Premetto che sono un principiante di Javascript e Ajax.
Quindi abbiate pazienza.
Questo è il codice js.
codice:
function assegnaXMLHttpRequest() {
// lista delle variabili locali
// variabile di ritorno, nulla di default
var XHR = null;
// informazioni sul nome del browser
var browserUtente = navigator.userAgent.toUpperCase();
// browser standard con supporto nativo
// non importa il tipo di browser
if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
XHR = new XMLHttpRequest();
// browser Internet Explorer
// è necessario filtrare la versione 4
else if(
window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0
) {
// la versione 6 di IE ha un nome differente
// per il tipo di oggetto ActiveX
if(browserUtente.indexOf("MSIE 5") < 0)
XHR = new ActiveXObject("Msxml2.XMLHTTP");
// le versioni 5 e 5.5 invece sfruttano lo stesso nome
else
XHR = new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert('Giving up :( Non riesco a creare una istanza XMLHTTP');
return false;
}
return XHR;
}
function caricaFoto(url){
var ajax = assegnaXMLHttpRequest();
if (ajax){
//Evitiamo doppio click
if(!ajax.clicked){
clicked = true;
document.getElementById("foto1").disabled = "disabled";
ajax.open("post","#",true);
// imposto il giusto header
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("connection", "close");
ajax.send("action=richiesta" + "&" + "foto_url=" + url );
ajax.onreadystatechange = function(){
if (ajax.readyState == 4){
//Sono pronto!
if (ajax.status == 200) {
// perfetto!Tutto a buon fine!
}else{
// c'è stato un problema nella richiesta,
// per esempio un codice di errore 404 (Not Found)
// o 500 (Internal Server Error)
alert("Attenzione.Formato dell'immagine non compatibile.Riprovare piu tardi");
}
}else{
//Risposta non ancora arrivata rimani in attesa
}
}
}
}
}
Nella stessa pagina ecco il codice html:
codice:
<form name="mod_profilo" enctype="multipart/form-data" id="mod_profilo" action="#">
<div id="div_foto">Inserisci la tua foto
<input src="**" type="file" name="foto1" align="middle" id="foto1" onchange="caricaFoto(this.value);" /></div>
</form>
Sempre nella stessa pagina il codice php
codice:
case 'richiesta':
require("../inc/dbconn.inc.php");
$uploadfile = $UPLOAD_FOTO . $_FILES['userfile']['name'];
//Se esiste la variabile _
if (isset($_FILES['foto'])){
if ($_FILES['foto']['type'] == "image/gif" || $_FILES['foto']['type'] == "image/jpg" || $_FILES['foto']['type'] == "image/jpeg" ){
if ($_FILES['foto']['size'] < 60000){
if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)){
mysql_query("UPDATE utente SET foto_url = '".$_FILES['userfile']['name']."' WHERE id_utente = '".$_SESSION['Ambiente']['utente']['id_utente']."' ")or die(mysql_error());
}
}
}
}
#header("Location: modifica.profilo.php");
break;
}
In pratica dovrei caricare su database l'immagine che viene selezionata tramite l'input file del form.