Visualizzare pratiche meno aggiornate

bep74

Nuovo Utente
6 Ott 2010
5
0
0
Ciao ragazzi,
Vorrei visualizzare in ordine di tempo (dalla più recente) tutte le pratiche meno aggiornate per trovare quelle rimaste abbandonate o che hanno bisogno di qualche attività da espletare.

Mi spiego meglio...
Le pratiche contengono un campo 'note' che ogni volta che viene fatta una attività viene aggiornato. Vorrei visualizzare quelle che non vengono aggiornate da tempo.
Purtroppo pero il campo 'note' è un semplice campo di testo (es: 19.09.10 spedita raccomandata).
C'è qualche operazione che possa 'esplodere' il contenuto del capo note, prendere l'ultima data inserita e ordinare la query?
Il database mysql non è modificabile, poichè è di un gestionale già preconfezionato.

L'unica cosa positiva è che il campo note comunque è rigido, cioè ogni volta che viene compiuta un'attività viene inserita la data nel formato gg.mm.aa e poi chiusa con //:

esempio:
Pratica: 1
Cliente: x
Note : 10.01.10 Apertura pratica // 15.03.10 Inviata raccomandata // 16.04.10 Inviata ulteriore raccomandata // 10.09.10 Contattato cliente


Questa è la query che mi visualizza tutte le pratiche in ordine di data o codice pratica:

PHP:
$sql  = "select *, tbl_Clienti.Nominativo as cliente_nome, tbl_Controparti.Nominativo as controparte_nome, date_format(tbl_Pratiche.Data_Apertura, '%d/%m/%y') as Data_Apertura FROM tbl_Clienti, tbl_Controparti, tbl_Operatori, tbl_Pratiche  WHERE tbl_Clienti.ID_Cliente = tbl_Pratiche.ID_Cliente AND tbl_Controparti.ID_Controparte = tbl_Pratiche.ID_Controparte AND tbl_Operatori.ID_Operatore = tbl_Pratiche.ID_Operatore AND tbl_Operatori.Sigla_Operatore='$SO'  AND tbl_Pratiche.Stato=1 ORDER BY Data_Apertura";
Grazie!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
in MySQL esiste la funzione CONVERT che ti permette di effettuare il casting da stringa a data
 

bep74

Nuovo Utente
6 Ott 2010
5
0
0
Ciao,
si ok, ma a me serve capire se c'è la possibilità di prendere innanzitutto la data dopo l'ultimo //.

E cioè:

Note : 10.01.10 Apertura pratica // 15.03.10 Inviata raccomandata // 16.04.10 Inviata ulteriore raccomandata // 10.09.10 Contattato cliente

Devo far prednere questa ultima data, convertirla nel formato giusto e fare una query su tutte le pratiche elencandomi le pratiche con questa data di ultima attività o modifica.

Spero sia stato chiaro.

Grazie comunque
Giuseppe
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
posso suggerirti questo modo (forse più semplice a farsi che a dirsi)
se come hai detto il campo note viene sempre scritto nella stessa maniera
con query e fetch_array estrai il campo note
Note : 10.01.10 Apertura pratica // 15.03.10 Inviata raccomandata // 16.04.10 Inviata ulteriore raccomandata // 10.09.10 Contattato cliente

$note=$riga['note'];
la esploldi secondo //

$note_esplose=explode("//",$note);
conti quanti array hai ottenuto - 1 (gli array iniziano da zero)
$quanti=count($note_esplose);
e tratti l'ultimo array che, nel caso dell'esempio che hai fatto, risulta essere $note_esplose[3]

togli gli eventuali spazi iniziali e finali
$note_esplose[3]=trim($note_esplose[3]);
riesplodi con separatore spazio

$note_due_volte_esplose=explode(" ",$note_esplose[3]);

nella'array in $note_due_volte_esplose[0] dovresti ritrovarti la data cercata

poi per elaborarla alla prossima puntata
 

bep74

Nuovo Utente
6 Ott 2010
5
0
0
Ciao,
grazie per il suggerimento.

Sono arrivato qui:
$note_esplose=explode("//",$note);

Poi ho fatto così:
//prendo l'ultimo array
$last = trim(end($note_esplose));

preg_match('/^(..)\.(..)\.(..)/', $last, $match);

$giorno = $match[1];
$mese = $match[2];
$anno = $match[3];

Ora come ricompongo la data per renderla riconoscibile dal php? La inserisco poi direttamente nell'ORDER BY della query ed il gioco è fatto?

Grazie

Grazie
G.
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non so come è fatta la tabella, quindi non so dirti se "il gioco è fatto" anche se credo di no, perche se fosse stato così semplice non servirebbe tutto l'ambaradan che ti ho suggerito.
l'orderby funziona sul valore di un campo e la data che hai estratto non è il valore di un campo, credo quindi che i passaggi siano ancora lunghi.
comunque vedo che hai ottenuto i ntanto i valori di
$giorno = $match[1];
$mese = $match[2];
$anno = $match[3];
secondo me per rendere la data php dovresti trasformarla prima nel formato anno-mese-giorno (es. 2010-10-08) poi in timestamp
se l'anno è espresso di due cifre devi trasformarlo
$anno = "20".$match[3];//es. 10 diventa 2010
se il mese è di una cifra (es 3 => marzo) devi riportarlo (meglio) a due
if(strtlen($mese)<2){$mese="0".$mese;}
analogamente per il giorno
fatto questo ricostruisi la data
$data_umana=$anno."-".$mese."-".$giorno;
e la trasformi in timestamp
$data_stamp=strtotime ($data_umana);
la data in time poi è comodamente trattabile in vari modi
da questo punto (credo) che tutto dipenda da come è la struttura della tabella.
potresti postarla per capire meglio
 

bep74

Nuovo Utente
6 Ott 2010
5
0
0
Ciao,
fortunatamente le date inserite nel campo note sono sempre nello stesso formato gg.mm.aa quindi passo direttamente a creare la data corretta (modificando solo l'aggiunta del '20' per l'anno in:

$giorno = $match[1];
$mese = $match[2];
$anno = "20".$match[3];
$data_um = "$anno-$mese-$giorno";
$data_stamp=strtotime ($data_um);

Ah ecco quindi è inutile che ci metto nella query ORDER BY '$data_stamp'.

QUale tabella vuoi vedere? Sono più tabelle... ti allego la struttra del database e della tabella PRATICHE (dove c'è il campo Note da cui estraggo quella data per tutto l'ambaradan).

Grazie per il tuo aiuto!
 

Allegati

  • struttura.jpg
    struttura.jpg
    67,1 KB · Visite: 242

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
visto, però devi avere un po' di pazienza, ho alcune giornate di fuoco.
comunque dalla tabella pratiche vuoi vedere le pratiche, e/o i clienti, più vecchie di xxx giorni, se non ho capito male giusto?
 

bep74

Nuovo Utente
6 Ott 2010
5
0
0
Ciao,
dunque il mio obiettivo e visualizzare le pratiche abbandonate, quindi vorrei ordinarle appunto per quella ultima data estrapolata dal campo 'Note' (data che come abbiamo visto viene estratta con quella operazione ma non è un campo della tabella).

Attualmente l'elenco vedo:

Codice pratica - Data_apertura
Cliente - Controparte
Note

L'ordine deve essere,lo ripeto, dalla pratica in cui l'ultimo aggiornamento (ultima data inserita nel campo Note) è più remoto, così da visualizzare le pratiche dalle più abbandonate alle più aggiornate.

La limitazione è che non posso modificare il database perchè è di un software gestionale... io faccio solo report di estrazione dati personalizzati.

Grazie infinite per la tua disponibilità
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
un po le giornate di fuoco sono passate.
visto che non puoi, come detto, usare l'orderby in quanto la data non è un campo forse puoi operare in
una di questi modi:

intanto ti dico il primo (per il secondo ho un'idea ma devo pensarci sopra)

se hai la possibilità di accedere al db puoi modificare la tabella con alter table, aggiungendo un campo.
ti fai un piccolo script
PHP:
<?php
//dati per la connessione
$modifica="ALTER TABLE nome_tabella ADD ultima INT(18) NULL";
$query=mysql_query($modifica);
?>
in questo modo aggiungi un campo in cui andrai ad inserire il valore (in time stamp) dell'ultima data che hai ricavato
cioè
un altro piccolo script che puoi lanciare ogni tanto e che va a leggere tale data e uppa il campo ultima
con il valore della data dell'ultimo aggiornamento.
(te lo scrivo in pseudo codice)
fai la query di select
leggi il primo record
ricavi l'ultima data
uppi il record
leggi il secondo ecc...


a questo punto puoi usare l'order by DESC o ASC es.
SELECT * FROM mia_tabella ORDER BY ultima
quindi i record ti vengono visualizzati in ordine della data dell'ultimo aggiornamento
quando fai il mysql_fetch_array per visualizzare i record, ti puoi anche ritrasformare (a monitor) la data da timestamp a umana con
PHP:
echo date("d m Y",$riga['ultima'];//risulta es 01 10 2010

il secondo, se non puoi usare quanto sopra, è secondo me un po' più complesso, ci penso meglio e poi ti so dire
 
Discussioni simili
Autore Titolo Forum Risposte Data
I visualizzare lista utenti registrati PHP 1
N php problemi a visualizzare video PHP 3
P come posso visualizzare l'nvr online IP Cam e Videosorveglianza 1
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
M Visualizzare ultima data registrata MS Access 2
G Numero zero null non deve visualizzare nulla PHP 0
D visualizzare solo foto filtrate jQuery 1
M Visualizzare nuove domande in base a risposta precedente PHP 0
N Non Autorizzato. Dovresti rimuovere il parametro customize_messenger_channel per visualizzare l'anteprima in frontend. WordPress 1
M visualizzare ip cam in windows IP Cam e Videosorveglianza 0
W visualizzare solo file html e sottocartelle di una cartella PHP 1
napuleone visualizzare il codice senza usare gli & HTML e CSS 1
Y Come caricare e visualizzare un'immagine PHP 0
M Visualizzare file PDF con link preso dal DB PHP 0
Alex_70 Visualizzare 2 bandiere PHP 6
Alex_70 Visualizzare anteprima foto in dropdown PHP 2
L Visualizzare tabella all'interno finestra modal PHP 4
P Visual Studio VB.NET Visualizzare un messaggio alla scadenza. .NET Framework 0
J [PHP] Visualizzare risultato query stessa pagina PHP 3
B visualizzare una sola riga Database 3
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
K [ASP] Visualizzare nome del file selezionato Classic ASP 3
M [PHP] Visualizzare un array partendo dal numero 1 e non 0 PHP 5
L [PHP] Visualizzare utente dopo login PHP 0
L [PHP] Visualizzare se una pagina è pingata PHP 1
M [PHP] Visualizzare nell'alert il calcolo PHP 4
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
L come visualizzare array di oggetti php PHP 9
S [PHP] visualizzare commento su un prodotto precedentemente selezionato PHP 2
V [Javascript] Visualizzare o nascondere div figlio Javascript 4
W [PHP] Visualizzare errori su Statements in MySQLi PHP 3
S [javascript] visualizzare/nascondere div Javascript 3
felino [Javascript] [jQuery] Slick Carousel: visualizzare una porzione dell'immagine successiva Javascript 0
W [Javascript] Visualizzare l'href di un link nascosto Javascript 0
L [HTML] Problemi a visualizzare le modifiche eseguite alle pagine del sito. HTML e CSS 2
G [HTML] Visualizzare iframe in un blog non funziona sempre xchė? HTML e CSS 3
tritabit [HTML] Visualizzare stelle tipo rating HTML e CSS 5
A Visualizzare div quando le immagini sono state uploadate con successo (Ajax) Ajax 0
T Visualizzare un Xml su un sito in modo semplice XML 1
F Visualizzare data in formato gg/mm/aaaa da database mysql. PHP 3
M [PHP] Visualizzare record nel db PHP 2
M Visualizzare immagini in PHP - MYSQL PHP 0
M Visualizzare immagini da DB in php PHP 0
ecosito [WordPress] Visualizzare una mappa con i pin dei post tramite GPS? WordPress 4
G [PHP] CodeIgniter - Visualizzare singolo risultato PHP 4
Y VISUALIZZARE IMMAGINI DA DB PHP/MYSQL PHP 7
trattorino [PHP] funzione per visualizzare solo carattere PHP 2
S [HTML] Visualizzare XML formattato in HTML HTML e CSS 9
M Visualizzare su più pagine risultato query con fpdf PHP 6
Mer556 Visualizzare un sito nel browser HTML e CSS 1

Discussioni simili