Prelevare dati da Array o $_FILES

usaikarts

Nuovo Utente
25 Mar 2009
22
0
0
Ormai sono al terzo Post!!!!!!!!!!! La disperazione sale!!!!!

.. in pratica ho uno script che riceve dati inviati da un form per eseguire un upload multiplo...

l'upload funziona.

al termine di questo script ne ho inserito un altro per generare un semplice file di testo ed andarci a scrivere dentro;

Il file lo crea e ci scrive, ma qui arriva il problema... non riesco a far scrivere i nomi dei file pervenuti dal form...

Il Name dell'input del form è "my_field[]"... richiamando questa variabile, anche provando con print, mi restituisce la stessa scritta "my_field[]", anche se inserico "my_field[0]" ecc...

Vi posto alcune parti del codice...

da qui dovrebbe caricare i dati dal form...

Codice:
...
else if ($_POST['action'] == 'multiple') {

    // ---------- MULTIPLE UPLOADS ----------

    // as it is multiple uploads, we will parse the $_FILES array to reorganize it into $files
    $files = array();
    foreach ($_FILES['my_field'] as $k => $l) {
        foreach ($l as $i => $v) {
            if (!array_key_exists($i, $files)) 
                $files[$i] = array();
            $files[$i][$k] = $v;
        }
    }

    // now we can loop through $files, and feed each element to the class
    foreach ($files as $file) {
    
        // we instanciate the class for each element of $file
        $handle = new Upload($file);
        
        // then we check if the file has been uploaded properly
        // in its *temporary* location in the server (often, it is /tmp)
        if ($handle->uploaded) {
...

da quanto ho capito i dati vengo poi trasferiti nella variabile $files (anche in quella $file??)

comunque anche richiamando queste variabili non mi restituisce il nome del file ma "Array"...

qui postola la parte del codice che genera il file e ci scrive sopra...

Codice:
...
$vartestolfgaz="<img src=\"pgresize.php\?image=$my_field[0]\">";
if ($var8!=null){//Attiviamo PHP solo se il form è stato cliccato
echo "<br />Il Link al tuo G è stato creato.<br />";
$varfgaz=@fopen("artisti/$nome1$nome2$nome3$cognome1$cognome2$cognome3/linkg.txt","a"); //apro il file .txt (modalità lettura/scrittura)
@fwrite($varfgaz,$vartestolfgaz."\n"); //scrivo la variabile del form nel file .txt
$vargfaz=file("artisti/$nome1$nome2$nome3$cognome1$cognome2$cognome3/linkg.txt"); //estraggo l'array dal file .txt
@fclose($varfgaz); //chiudo il file .txt
$i=count($vargfaz); //conto gli elementi nell'array
for($a=0; $a<=$i; $a++){ //uso il ciclo for per guardare nell'array
echo ""; //scrivo tutti gli elementi dell'array, ma potevo eseguire qualunque altra operazione con le variabili!!!
} //fine ciclo for
} //fine ciclo if

come detto il codice funziona... il file viene creato e scritto nella cartella richiesta... mi sballa solo quella variabile!!!!!! :boxing:

Help!!!!! Help!!!!!!!!!!! No.... Ma.... Dico.... lo si vede quanto sono disperato?????? :crying: :confused:
 
ciao (sono sempre io "come il prezzemolo")
ho dato un occhio alla classe upload e, ma forse sbaglio, vi ho trovato alcuni errorretti.
es.
PHP:
else if ($_POST['action'] == 'multiple') {

da che ne so io

quella riga non funzia, dai un occhio al manuale php al link

http://it.php.net/manual/en/control-structures.elseif.php

dove dice

PHP:
<?php

/* Incorrect Method: */
if($a > $b):
    echo $a." is greater than ".$b;
else if($a == $b): // Will not compile.
    echo "The above line causes a parse error.";
endif;


/* Correct Method: */
if($a > $b):
    echo $a." is greater than ".$b;
elseif($a == $b): // Note the combination of the words.
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

?>


p.s.
al posto di endif
if(cond1){
//righe
}elseif(cond2){
//altre righe
}
 
Navigo nel vuoto - un pensiero alla povera gente in abruzzo

Sempre disponibile!!!!! Un grande, altro che prezzemolo!!!!! Grazie!!!!!!

Comunque il codice che ti ho postato per l'invio dei file da form funziona...

non riesco a farmi ridare i nomi dei file inviati dal post...

la cosa assurda è che l'upload però funziona,;i file vengo caricati dove richiesto senza problematiche... ma non capisco bene dove questa "classe" mi restiusca il nome....

posto una parte del codice un pò più grande rispetto alla precedente... (tutto non me la fa mettere)

Codice:
} else if ($_POST['action'] == 'multiple') {

    // ---------- MULTIPLE UPLOADS ----------

    // as it is multiple uploads, we will parse the $_FILES array to reorganize it into $files
    $files = array();
    foreach ($_FILES['my_field'] as $k => $l) {
        foreach ($l as $i => $v) {
            if (!array_key_exists($i, $files)) 
                $files[$i] = array();
            $files[$i][$k] = $v;
        }
    }

    // now we can loop through $files, and feed each element to the class
    foreach ($files as $file) {
    
        // we instanciate the class for each element of $file
        $handle = new Upload($file);
        
        // then we check if the file has been uploaded properly
        // in its *temporary* location in the server (often, it is /tmp)
        if ($handle->uploaded) {

            // now, we start the upload 'process'. That is, to copy the uploaded file
            // from its temporary location to the wanted location
            // It could be something like $handle->Process('/home/www/my_uploads/');
            $handle->Process("./artisti/$nome1$nome2$nome3$cognome1$cognome2$cognome3/galleria/");

            // we check if everything went OK
            if ($handle->processed) {
                // everything was fine !
                echo 'Fotografia Inserita con successo<br />';
             
            } else {
                // one error occured
                echo 'Fotografie non caricate<br />';
                          }
            
        } else {
            // if we're here, the upload file failed for some reasons
            // i.e. the server didn't receive the file
            echo '<fieldset>';
            echo '  <legend>file not uploaded on the server</legend>';
            echo '  Error: ' . $handle->error . '';
            echo '</fieldset>';
        }
    }
    

}
 
Ultima modifica:
borgo... anche senza volerlo mi stai aiutando...

allora faccio il punto della mia situation...

ho trovato qui ne forum un post di borgo in cui illustra uno script per randomizzare file contenuti in una cartella...

dato che il mio upload funziona ho provato ad inserire parte del codice sul mio script, in modo da poter leggere i dati nell cartella..

Codice:
$desired_extension = 'png'||'jpg'||'gif'; //extension we're looking for  
$dirname = "artisti/$nome1$nome2$nome3$cognome1$cognome2$cognome3/galleria";  
$dir = @opendir($dirname);  

$conta_imm=5; //contatore delle immagini 
$nome_immagine=array();//array con i nomi delle immagini 

while(false != ($file = @readdir($dir)))  
{  
if(($file != ".") and ($file != ".."))  
{  
$fileChunks = explode(".", $file);  
if($fileChunks[1] == $desired_extension) //interested in second chunk only  
{  
$conta_imm++; //parto da uno perche più comodo ed incremento ad ogni giro 
$nome_immagine[$conta_imm]=$file;  

}  
}  
}  
closedir($dir);

Subito dopo scrivo le varibili che mi includono un tag html con il nome del file
Codice:
$vartestolfgaz="<img src=\"pgresize.php?image=$nome_immagine[$conta_imm][0]&maxim_size=300\">"."<br />"."\n";
$vartestolfgaz2="<img src=\"pgresize.php?image=$nome_immagine[$conta_imm][1]&maxim_size=300\">"."<br />"."\n";
$vartestolfgaz3="<img src=\"pgresize.php?image=$nome_immagine[$conta_imm][2]&maxim_size=300\">"."<br />"."\n";

Anche inserendo una struttura numerica di questo tipo [0], [1], [2],ecc... mi restituisce soltanto il nome del primo file che trova...

ci siamo quasi... o no???????
 
ciao

anche senza volerlo mi stai aiutando...
sono invincibile.

scusa ho visto una piccola discrepanza scrivi

$conta_imm=5; //contatore delle immagini

poi

$conta_imm++; //parto da uno perche più comodo ed incremento ad ogni giro

non so se è questo, poi guardo meglio
 

Discussioni simili