ho controllato un po' in giro..e sembra non sia possibile caricare un file con ajax ne con solo javascript!!
piangerò un pochino nell'angolo e poi creerò una piccola sezione nel sito epr caricare immagini!!!
grazie comunque!!
hasta!
nep
ho controllato un po' in giro..e sembra non sia possibile caricare un file con ajax ne con solo javascript!!
piangerò un pochino nell'angolo e poi creerò una piccola sezione nel sito epr caricare immagini!!!
grazie comunque!!
hasta!
nep
salve a tutti, forse questa discussione dovrebbe andare su php ma non ne sono ancora sicuro!
Vi spiego subito il mio problema:
io vorrei fare un upload utilizzando php ed ajax, e fin qui sembra tutto semplice.
Ma non riesco..la funzione in ajax, anzi javascript, passa a php i dati del form.
dunque form in html --> ajax --> php che poi inserisce i dati in mysql e la risposta è all'inverso!
però mi sono reso conto che non posso fare un upload tradizionale cioè con **enctype="multipart/form-data" **nell'interno del form e dunque in php non posso prendere il file come $_FILES["ILLUSTRAZIONE"]['name'] perchè javascript passa a php solo la stringa e non l'oggetto file, dunque devo fare in altro modo, e non trovo quale modo?!?!?
i dati del form li prendo tramite javascript in questo modo :
bottone = prendiElementoDaId("modifica")
dove prendielementodaid è una funzione con getelementbyid
io volevo sapere se c'era una funzioncina in javascript, tipo getelementbyid, che distinguesse da oggetto esclusivamente di testo a file.
oppure se c'era un modo in php di fare un upload in un db utilizzando la stringa che mi ritorna cioè:
/home/surfthep2/Desktop/utility/file.jpg (uso linux)
o
c://cheneso/blabla/file.jpg (windows)
senza passare da form!!
grazie in anticipo
nep
salve a tutti,
ho un problema con una funzione javascript e l'interazione con scriptaculous.
questa è la funzione:
function crea(elemento,sito,area,contesto,illlustrazionec,notec,classe,tipo,materiale,dimensioni,numeroscavo,luogo,numeromuseo,illustraazionep,biblio,noteg){
var nome_elemento ="cat"+elemento;
var collapse2 = new animatedcollapse(""+nome_elemento+"", 500, true);
if(!$('obj'+elemento)){
newitem=Builder.node( 'li', {className:'item',id:'obj'+elemento}, [Builder.node( 'div', {className:'handle'},'obj'+elemento)] );
newchiudi=Builder.node( 'div', {className:'chiudi'});
newlink=Builder.node( 'a', {href:'javascript:rimuovi('+elemento+')', className:'chiudilink'},'x');
newespandi=Builder.node( 'a', {href:'javascript:collapse2.slideit()', className:'espandi_finestra'},'espandi/ritira');
newitem.appendChild(newchiudi);
newchiudi.appendChild(newlink);
$('firstlist').appendChild(newitem);
newitem.appendChild(newespandi);
$('obj'+elemento).innerHTML=$('obj'+elemento).innerHTML+'sito'+sito+' area<br>'+area+'contesto'+contesto+'<a href="javascript:collapse2.slideit()">espandi/ritira</a> ';
$('obj'+elemento).innerHTML+='<div id=\"'+nome_elemento+'\"> illlustrazionec<br>'+illlustrazionec+'notec '+notec+'classe<br>'+classe+'tipo '+tipo+'materiale<br>'+materiale+'dimensioni '+dimensioni+'numeroscavo<br>'+numeroscavo+'luogo '+luogo+'numeromuseo<br>'+numeromuseo+'illustraazionep '+illustraazionep+'biblio<br>'+biblio+'noteg<br>'+noteg+'</div>';
document.getElementById('id_generico').innerHTML+=' <script type="text/javascript">var collapse2=new animatedcollapse("'+nome_elemento+'", 500, true); </script>';
rendisortable();
}
}
questa mi permette di creare un oggetto con scriptacolous. Il mio problema sta nel fatto che l'oggetto che viene creato, graficamente, è troppo grosso, infatti se mi trovo ad avere più oggetti, finisco di riempire troppo lo schermo.
Così ho pensato di aggiungerci un effetto che mi nascondesse i div e che al click di un link me lo mostrasse.
Ho trovato sulla rete questo effetto:
http://www.juliuswebdesign.com/div_anime/animated_div.htm
ed ho detto facile, prendo la classe, la creo
var collapse2 = new animatedcollapse(""+nome_elemento+"", 500, true);
```creo anche il div
$('obj'+elemento).innerHTML+='<div id="'+nome_elemento+'"> illlustrazionec<br>'+illlustrazionec+'notec '+notec+'classe<br>'+classe+'tipo '+tipo+'materiale<br>'+materiale+'dimensioni '+dimensioni+'numeroscavo<br>'+numeroscavo+'luogo '+luogo+'numeromuseo<br>'+numeromuseo+'illustraazionep '+illustraazionep+'biblio<br>'+biblio+'noteg<br>'+noteg+'</div>';
la classe è questa (ovviamente non sto a postare tutto il codice
var uniquepageid=window.location.href.replace("http://"+window.location.hostname, "").replace(/^//, ""); //get current page path and name, used to uniquely identify this page for persistence feature
function animatedcollapse(divId, animatetime, persistexpand, initstate){
this.divId=divId;
this.divObj=document.getElementById(divId);
this.divObj.style.overflow="hidden";
this.timelength=animatetime;
this.initstate=(typeof initstate!="undefined" && initstate=="block")? "block" : "contract";
this.isExpanded=animatedcollapse.getCookie(uniquepageid+"-"+divId); //"yes" or "no", based on cookie value
this.contentheight=parseInt(this.divObj.style.height);
var thisobj=this;
if (isNaN(this.contentheight)){ //if no CSS "height" attribute explicitly defined, get DIV's height on window.load
animatedcollapse.dotask(window, function(){thisobj._getheight(persistexpand)}, "load");
if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes"); //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
this.divObj.style.visibility="hidden"; //hide content (versus collapse) until we can get its height
}
else if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
this.divObj.style.height=0; //just collapse content if CSS "height" attribute available
if (persistexpand)
animatedcollapse.dotask(window, function(){animatedcollapse.setCookie(uniquepageid+"-"+thisobj.divId, thisobj.isExpanded)}, "unload");
}
animatedcollapse.prototype._getheight=function(persistexpand){
this.contentheight=this.divObj.offsetHeight
.....
...
..
e il gioco è fatto, ma ovviamente, per la legge di murphy, non ha funzionato.
firebug mi da questo errore:
this.divObj has no properties
animatedcollapse("cat22", 500, true, undefined)scriptacolous.js (line 15)
crea("22", "mari", "AREA", "LIVELLO", "CONTESTO", "", "NOTE CONTESTO", "CLASSE", "TIPO", "MATERIALE", "DIMENSIONI", "NUMERO SCAVO", "LUOGO CONSERVAZIONE", "NUMERO MUSEO", "", "BIBLIOGRAFIA")scriptacolous.js (line 128)
onclick(click clientX=0, clientY=0)form (line 1)
![image](chrome://firebug/content/blank.gif) this.divObj.style.overflow="hidden";
sapreste aiutarmi?
grazie in anticipo!
Nep
non ho provato print_r ma ho semplicemente cambiato il valore della variabile facendola diventare un vettore!!
nep
grazie dell'aiuto..
il problema era nell'array()
distrazione!!
grazie ancora!
nep
salve a tutti, è un po' che ci sto provando a capire qualcosa, ma non so più dove sbattere il muso.
vi spiego subito il mio problema e ne sarei grato se sapreste darmi una mano!!
questa funzione fa parte di una classe managerclienti del file managerclienti.class.php
[PHP]
function ListaClienti()
{
/*
* query
*/
$query ="SELECT * FROM asa_main";
if ($result=mysql_query($query, $this->__db))
echo "ok Lista Clienti";
else
echo "Errore query lista clienti";
//$result = mysql_query($query, $this-> $__db) or die("ma porca puttana");
//$row = mysql_fetch_array($result);
$a = 0;
$b = 0;
$vect = 0;
while ( $row = mysql_fetch_array($result) )
{
//$vect[numeroMuseo]** = $row**;
for( $b = 0; $b < 16; $b++ ) {
$vect[$a]** = $row**;
}
$a++;
/*
foreach ($row as $lista) {
echo "\t\t<td>$row[numeroMuseo]</td>\n";
}*/
}
// restituzione lista
return $vect;
}
[/PHP]
questa invece di un altro file view.php
[PHP]
function creaListaClienti($clienti) {
$lista = "";
$tmpsito = "";
$tmparea = "";
$tmplivello = "";
$tmpcontesto = "";
$tmpillustrazione = "";
$tmpnote = "";
$tmpclasse = "";
$tmptipo = "";
$tmpmateriale = "";
$tmpdimensioni = "";
$tmpscavo = "";
$tmpluogoc = "";
$tmpmuseo = "";
$tmpilllustrazione = "";
$tmpbibliografia = "";
$tmpnoteg = "";
// per ogni cliente ...
for($a = 0, $b = count($clienti); $a < $b; $a++) {
if(strlen($clienti[$a][0]) > 0)
$tmpsito = "{$clienti[$a][0]}";
else
$tmpsito = " ". $a;
if(strlen($clienti[$a][1]) > 0)
$tmparea = "{$clienti[$a][1]}";
else
$tmparea = " ". $a;
if(strlen($clienti[$a][2]) > 0)
$tmplivello = " ". $a;
else
$tmplivello = "Non Specificato";
if(strlen($clienti[$a][3]) > 0)
$tmpcontesto = "{$clienti[$a][3]}";
else
$tmpcontesto = "Non Specificato";
if(strlen($clienti[$a][4]) > 0)
$tmpillustrazione = "{$clienti[$a][4]}";
else
$tmpillustrazione = "Non Specificato";
if(strlen($clienti[$a][5]) > 0)
$tmpnote = "{$clienti[$a][5]}";
else
$tmpnote = "Non Specificato";
...
// per ogni riga della tabella si aggiungono
// le informazioni appena assegnate
// più il nome del cliente, subito all'inizio
$lista .= "<tr><td class=\"nome\">{$tmpmuseo}</td><td>{$tmpsito}</td><td>{$tmparea}</td><td>{$tmplivello}</td><td>{$tmpcontesto}</td><td>{$tmpillustrazione}</td><td>{$tmpnote}</td><td>{$tmpclasse}</td><td>{$tmptipo}</td><td>{$tmpmateriale}</td><td>{$tmpdimensioni}</td><td>{$tmpscavo}</td><td>{$tmpluogoc}</td><td>{$tmpilllustrazione}</td><td>{$tmpbibliografia}</td><td>{$tmpnoteg}</td></tr>";
}
// ritorno tabella
return $lista;
}
$managerClienti = new ManagerClienti();
$vettore = $managerClienti -> ListaClienti();
echo "" . creaListaClienti($vettore) ;
[/PHP]
questa funzione non fa altro che prendere il vettore creato dalla funzione precedente, controllarlo e stamparlo a video.
Qual è il punto?
che non funziona..
non riesco a far passare il vettore creato a questa funzione!!
e non capisco perchè??
utilizzo un database mysql, ho fatto tutte le connessioni necessarie e funzionano! perchè la funzione per inserire i dati funziona perfettamente!!
sapreste aiutarmi??
grazie!
Nep