Convertire CSV in array multidimensionale in PHP

Ecco un codice per leggere un file CSV in PHP e convertirlo in un array multidimensionale.

Prendo un classico file CSV, di cui per esempio mostro di seguito le prime 4 righe:

2018-10-05 05:54;45334;57732;22;
2018-10-05 05:55;45334;57732;22;
2018-10-05 05:56;45335;57733;22;
2018-10-05 05:57;45335;57733;22;

in cui ogni riga è formata da più campi separati da un punto e virgola (;). In PHP:

$fileName = "nome_del_file.csv"; //questo è il nome del file da caricare
$csvData = file_get_contents($fileName);
$Data = str_getcsv($csvData, "\n"); //scansiono le righe
foreach($Data as &$Row) {
$Row = str_getcsv($Row, ";"); //scansiono gli elementi in ogni riga, separati dal punto e virgola
}

Ora posso accedere a ogni elemento di ogni riga direttamente dalla variabile $Data, ad esempio $Data[0][1] (riga 0 posizione 1) conterrà il valore 45334. Eseguendo il comando print_r($Data) posso stampare a schermo per debug il contenuto dell’array, come mostrato qui sotto:

Array
(
[0] => Array
(
[0] => 2018-10-05 05:54
[1] => 45334
[2] => 57732
[3] => 22
)
//ecc...

Nel caso il separatore non sia il punto e virgola ma la virgola è sufficiente cambiarlo nell’istruzione:

$Row = str_getcsv($Row, ";");

che, nel caso della virgola usata come separatore, diventa:

$Row = str_getcsv($Row, ",");

PHP: Salvare data nel formato GG/MM/AAAA in un campo DATETIME di MySQL

Questo appunto è un codice PHP utile per salvare in un database MySQL una data inserita in un form nel formato “classico” GG/MM/AAAA, quando il campo nel database è di tipo DATETIME ovvero “Y-m-d H:i:s”.

Nel form richiedo di inserire la data in questo formato GG/MM/AAAA:

<input type="text" name="data">

Inviato il form, da PHP  manipolo il campo ricevuto (nel mio caso chiamato “data“,  recuperato con $_POST[“data“]), con la funzione di PHP date():

$data = date('Y-m-d H:i:s', strtotime(str_replace('/','-',$_POST["data"])));

Ora posso salvare il contenuto di $data direttamente nell’opportuno campo del database.

Per fare l’operazione inversa ovvero formattare correttamente la data recuperata dal database con una query (nel mio esempio il campo si chiama proprio data e la tabella mia_tabella) uso la funzione di SQL DATE_FORMAT e salvo il risultato nel nuovo campo data_formattata:

mysql_query(SELECT DATE_FORMAT(data,'%d/%m/%Y') as data_formattata FROM mia_tabella)

 

 

Controllare se il browser è mobile con php

Ecco una semplice funzione PHP per controllare se il browser internet che sta visitando la vostra pagina web è una versione mobile:

function web_mobile() {

$useragent = $_SERVER[‘HTTP_USER_AGENT’];

$mobileagents = Array(
“acer”, “acoon”, “acs-“, “abacho”, “ahong”, “airness”, “alcatel”, “amoi”, “android”,  “applewebkit/525”, “applewebkit/532”, “asus”, “audio”, “au-mic”, “avantogo”, “becker”, “benq”, “bilbo”, “bird”, “blackberry”, “blazer”, “bleu”, “cdm-“, “compal”, “coolpad”, “danger”, “dbtel”, “dopod”, “elaine”, “eric”, “etouch”, “fly ” , “fly_”, “fly-“, “go.web”, “goodaccess”, “gradiente”, “grundig”, “haier”, “hedy”, “hitachi”, “htc”, “huawei”, “hutchison”, “inno”, “ipaq”, “ipod”, “jbrowser”, “kddi”, “kgt”, “kwc”, “lenovo”, “lg “, “lg2”, “lg3”, “lg4”, “lg5”, “lg7”, “lg8”, “lg9”, “lg-“, “lge-“, “lge9”, “longcos”, “maemo”, “mercator”, “meridian”, “micromax”, “midp”, “mini”, “mitsu”, “mmm”, “mmp”, “mobi”, “mot-“, “moto”, “nec-“, “netfront”, “newgen”, “nexian”, “nf-browser”, “nintendo”, “nitro”, “nokia”, “nook”, “palm”, “panasonic”, “pantech”, “philips”, “phone”, “pg-“, “playstation”, “pocket”, “pt-“, “qc-“, “qtek”, “rover”, “sagem”, “sama”, “samu”, “sanyo”, “samsung”, “sch-“, “scooter”, “sec-“, “sendo”, “sgh-“, “sharp”, “siemens”, “sie-“, “softbank”, “sony”, “spice”, “sprint”, “spv”, “symbian”, “tablet”, “talkabout”, “tcl-“, “teleca”, “telit”, “tianyu”, “tim-“, “toshiba”, “tsm”, “up.browser”, “utec”, “utstar”, “verykool”, “virgin”, “vk-“, “voda”, “voxtel”, “vx”, “wap”, “wellco”, “wii”, “windows ce”, “wireless”, “xda”, “xde”, “zte” );

$is_mobile = false;

foreach ($mobileagents as $device) {

if (stristr($useragent, $device)) {

$is_mobile = true;
break;

}

}

return $is_mobile;
}

Cosa fa questa funzione? Prende il parametro “HTTP_USER_AGENT” che identifica il browser di chi sta navigando il nostro sito, e lo confronta con un elenco fornito attraverso l’array “$mobileagents”, che potete personalizzare aggiungendo o togliendo voci (l’ho creato, come sempre, partendo da varie liste di browser mobili trovate in rete).
Se il browser è mobile il valore di ritorno è TRUE (vero), altrimenti FALSE (falso).
Facile e semplice!

Script di colorazione alternata automatica delle righe delle tabelle in HTML

Javascript per realizzare in automatico la classica colorazione alternata delle righe in una tabella HTML. Lo script realizza anche l’evidenziazione della riga al passaggio del mouse.

Script principale

function striper(parentElementTag, parentElementClass, childElementTag, styleClasses, hoverClasses) {
var i=0,currentParent,currentChild;
if ((!document.getElementsByTagName) || (!parentElementTag) || (!childElementTag) || (!styleClasses)) return false;
var styles = styleClasses.split(‘,’);
var stylesHover = styles;
if (hoverClasses) stylesHover = hoverClasses.split(‘,’);
var parentItems = document.getElementsByTagName(parentElementTag);
while (currentParent = parentItems[i++]) {
if ((parentElementClass == null)||(new RegExp(‘\b’+parentElementClass+’\b’).test(currentParent.className))) {
var j=0,k=0;
var childItems = currentParent.getElementsByTagName(childElementTag);
while (currentChild = childItems[j++]) {
k = (j+(styles.length-1)) % styles.length;
currentChild.className = currentChild.className+” “+styles[k];
if (hoverClasses) {
currentChild.onmouseover = new Function(“this.className+=’ “+stylesHover[k]+”‘;”);
currentChild.onmouseout = new Function(“this.className=this.className.replace(‘ “+stylesHover[k] + “‘,”);”);
}
}
}
}
}

Script da inserire nella pagina in cui si vuole colorare la tabella

<script type=”text/javascript”>
//<!–
function initStripers() {
striper(‘table’, ‘
nometabella’, ‘tr’, ‘pari,dispari’, ‘pariHover,dispariHover’);
}
window.onload = initStripers;
// –>
</script>

TABELLA HTML

<table class=”nometabella”>
<tr >
<td >Nome</td>
<td >Descrizione</td>
<td >Scarica</td>
</tr>
</table>

Codice CSS

.pari { padding-left: 10px; background-color: #F4F3EA ; color:#000000; text-align: left; border-bottom: 1px solid #9999CC; }
.dispari { padding-left: 10px; background-color: #FFFFFF; color:#000000; text-align: left; border-bottom: 1px solid #9999CC; }

.pariHover { background: #FDDA99; }
.dispariHover { background: #FDDA99; }

Questo sito utilizza cookie tecnici per il suo funzionamento. Cliccando su Accetta, scorrendo la pagina, navigando questo sito ne acconsenti l'uso e la tua scelta sarà memorizzata per 12 mesi. I contenuti presenti rappresentano l'opinione personale dell'autore, le guide e gli appunti sono da considerarsi indicativi e si declina ogni responsabilità derivante dall'applicazione delle indicazioni contenuti in essi. Maggiori informazioni sulla privacy e sui cookie (informativa estesa)

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi