@MenteLibera said:
Per risolvere il problema si possono percorrere più alternative, tuttavia cercherò di riprendere il codice del richiedente e svilupparlo per mettere in luce alcune critiche.
Per prima cosa ho definito un array $nuovi_nomi che contenga l'elenco dei nuovi nomi dei file. La posizione degli elementi di questa struttura di dati deve corrisponde a quella di $cedolini, conseguentemente verificherei con estrema attenzione se la funzione glob() riportasse sempre esattamente la stessa sequenza oppure se cambiasse, in tal caso converrà scriverla a mano.
Mi sembra che ci sia un errore in questa riga:
[PHP]$nuovo_nome_cedolino="../".$nome."/".$nome."".$data."".$codice.".pdf";//e con la cartella[/PHP]
poiché compare due volte la variabile $nome che quindi creerà una struttura ridondantemente nidificata. Inoltre valuterei l'esclusione della variabile $data poiché per com'è definita verrà istanziata all'anno ed al mese di quando verrà eseguito lo script. Infine la variabile $codice è presa dal valore dell'istruzione foreach ($dipendente as $nome => $codice) che come si noterà non ha alcuna relazione con il nuovo nome del file.
Una possibile riscrittura potrebbe essere:
[PHP]$nuovo_nome_cedolino = "../".$nome."".$data."".$nuovi_nomi*.".pdf";//e con la cartella[/PHP]
In base alle precedenti osservazioni il codice completo è il seguente:
[PHP]<?php
$dipendente['ml.comeo'] = "000000002";
$dipendente['gs.telfino'] = "000000016";
$nuovi_nomi = array('Cedolino_luglio_2015', 'NuovoNomeFile'); // Elenco dei nuovi nomi, deve esseci corrispondenza con quelli degli indici dei cedolini
$cedolini = array('Eco_000000002.pdf', 'Eco_000000016.pdf'); // Sostituire con $cedolini=array_map("basename",glob("../dipendenti/.pdf")); // Attenzione: verificare che sia verificata la corrispondenza con l'array $nuovi_nomi posizione per posizione, altrimenti conviene scriverli a mano per non rischiare.
$data=date("Y-m"); //leggi l'anno e la data e qui date
foreach ($dipendente as $nome => $codice)
foreach ($cedolini as $i => $cedolino)
if (strpos($cedolino, $codice) > 0) {
$vecchio_nome_cedolino = "../dipendenti/".$cedolino;
$nuovo_nome_cedolino = "../".$nome."".$data."".$nuovi_nomi.".pdf";//e con la cartella
if(rename($vecchio_nome_cedolino,$nuovo_nome_cedolino)) {
echo "spostato $vecchio_nome_cedolino in $nuovo_nome_cedolino<br>";
}
}
?>[/PHP]
Non escludo che il codice potrebbe essere molto più sintetico ricorrendo ad altre impostazioni del problema.
Sfortunatamente non ho molto tempo per dare una risposta completa, e non garantisco il corretto funzionamento del codice poiché non mi è stato possibile testarlo, quindi consiglio di fare molte prove prima di eseguirlo.
Nota: nell'anteprima del messaggio noto che nella versione pubblicata potrebbe esserci una linea spezzata malamente che inizia per: "*.pdf")); // Attenzione: verificare che sia verificata la corrispondenza con l'array..." ricongiungerla con la precedente.
Suggerisco caldamente di ricorrere all'editor avanzato per mettere il codice negli appositi marcatori dello specifico linguaggio per permetterci di capirlo un po' meglio oltre ad essere prescritto nel regolamento di sezione. Grazie per la collaborazione.[/OT]
Salve, ho provato il suo script ma non riesco a farlo funzionare... so che è passato un pò di tempo ma è proprio quello che mi occorre... ha per caso fatto ulteriori verifiche? Grazie mille