Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    explode sul nome del file

    Dopo aver eseguito questi passaggi

    MAIN FLOW
    1) Crea un file config.app in include, che leggi in init.php con https://github.com/vlucas/phpdotenv(phpdotenv è già caricato è configurato)
    2) Nel file config.app ci sono le seguenti variabili, che verranno lette:
    XLSX_FILES=/home/b2bmomo/www/import/
    XLSX_STORE=/home/b2bmomo/www/store/
    3) A questo punto $ENV["XSLX_FILES"] conterrà"/home/b2bmomo/www/import/" e $_ENV["XSLX_STORE"] conterrà"/home/b2bmomo/www/store/", e sono globali
    4) Cerchi se c'è un file con estensione XLSX in$_ENV["XSLX_FILES"]
    5) Per ogni file che trovi
    a) prendo il nome del file, che per convezione si chiameranno tutti<qualcosa>
    <qualcosaltro>.xslsx
    b) A seconda del valore di <qualcosa> (hint: usa switch)
    - se <qualcosa>=="WALL"
    importazione di un file WALL
    - default
    errore: tipo di file non riconosciuto

    il mio script continua a non funzionare, in pratica come spiegato qua, se il file nella cartella si chiama WALL_(qualcosa) deve essere importato altrimento no, ecco il mio script


    codice:
    $dotenv->load();
    
    
    $pattern= getenv('XLSX_FILES')."*.xlsx";
    print_r($pattern);
    $files= glob($pattern);
    
    
    foreach($files as $file){
    echo $file;
    $filetype = explode("_",$file)[0];
    $uploaddir = getenv('XLSX_STORE')."*.xlsx";
    switch ($filetype){
        case "WALL":
            move_uploaded_file($file, $uploaddir);
            echo "Upload file succesfully!";
            break;
    	default:
    			echo "File don't readable";
    }
    }
    attualmente mi restituisce due file che ho fatto di prova, uno che si chiama WALL_ e un altro che non si chiama wall ma esempio e nonostante uno dei due si chiami WALL_ mi dice che entrambi sono non leggibili... e quindi finiscono nel case del default... qualcuno sa perchè? ho forse sbagliato l'explode?

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Prova a fare
    $filetype = explode("_",basename($file))[0];

    Probabilmente in $file hai il path+nome-file, di conseguenza l'explode ti prende anche il path

  3. #3
    Graziee ora funziona lo switch, ma non mi sposta il file uploadato nell'altra cartella con la funzione move_uploaded_file($file, $uploaddir); i permessi della cartella in cui andrebbero li ho settati 777 e non da errori, sai per caso il problema dove potrebbe essere

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    $uploaddir = getenv('XLSX_STORE')."*.xlsx";

    Mica ha tanto senso...prova

    $uploaddir = getenv('XLSX_STORE').basename($file);

  5. #5
    ho provato ma no, non me lo sposta comunque, ma l'uploaddir e la directory in cui i file vengono spostati una volta caricati, non ho capito perche basename ecc?
    Ultima modifica di ShAdOw WaLkEr; 19-02-2016 a 13:49

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    prova ad usare la rename() invece che move_uploaded_file()
    rename($file, $uploaddir);

    PS: verifica sempre che $file e $uploaddir siano corretti
    Ultima modifica di boots; 19-02-2016 a 13:53

  7. #7
    Grazie 1000! con la rename funziona! scusa se mi approfitto della tua immensa pazienza, ma tu come lo faresti l'explode sui campi di un file excel da importare in una tabella mysql, perchè il prossimo passo della mia funzione dìsarebbe questo

    codice:
    $uploaddir = getenv('XLSX_STORE').basename($file);
    switch ($filetype){
        case "WALL":
            rename($file, $uploaddir);
            echo "Upload file succesfully!";
    		try {
            $inputFileType = PHPExcel_IOFactory::identify($filetype);
            $objReader = PHPExcel_IOFactory::createReader($inputFileType);
            $phpExcel = $objReader->load($excelfilepath);
            $sheet = $phpExcel->getSheet(0);
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    	  $highestrow = $sheet->getHighestRow();
    	  $highestcolumn = $sheet->getHighestColumn();
    	  $columncount = PHPExcel_Cell::columnIndexFromString($highestcolumn);
    	  $titles = $sheet->rangeToArray('A1:' . $highestcolumn . "1");
    	  $body = $sheet->rangeToArray('A2:' . $highestcolumn . $highestrow);
    	  $table = array();
    	  for ($row = 0; $row <= $highestrow - 2; $row++) {
    		$a = array();
    		for ($column = 0; $column <= $columncount - 1; $column++) {
    		  $a[$titles[0][$column]] = $body[$row][$column];
    		}
    		$table[$row] = $a;
    	  }?>
    	<table class="table table-bordered">
    		<?php
    	$sheet = $phpExcel->getSheet(0);
    	 $highestColumn = $sheet->getHighestColumn();
    	 $highestRow = $sheet->getHighestRow();
    	for ($row = 1; $row <= $highestRow; $row++):
    			$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
    			?>
    			<tr>
    				<?php foreach ($rowData[0] as $col): ?>
    					<td><?php echo $col; ?></td>
    				<?php endforeach; ?>
    			</tr>
    		<?php endfor; ?>
    	</table>
    
    
    
    
    	<?php
    			break;
    	default:
    			echo "File don't readable";
    }
    }
    
    $query=?
    cioè una volta che è stato riconosciuto che il file si chiama wall_ ed è stato quindi importato in XLSX_STORE, i dati del foglio excel vengono inseriti all'interno di un array di hash array che poi genera una tabella html, ora vorrei importare questi dati all'interno di una tabella mysql ma scompattati cioè

    http://i.stack.imgur.com/9yrC1.jpg

    questo è l'excel come puoi vedere il primo campo è da importare come lo vedi tutto intero, ma poi il secondo ed il terzo vanno scompattati cioè data/modello/tipo vanno divisi e potenza anche va diviso in due, tu come faresti? grazie, la connessione al db è gia fatta quindi mi serve solo la query, grazie ancora infinite

  8. #8
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Come hai impostato la tabella mysql?

  9. #9
    Quote Originariamente inviata da boots Visualizza il messaggio
    Come hai impostato la tabella mysql?
    l'ho impostata così

    20160219_144224.jpg

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.