Ciao ragazzi,
chiedo supporto per 4 problematiche che vi elenco per priorità.
1. PAGINAZIONE
Ho una pagina che nella parte in alto contiene i filtri per effettuare una ricerca (gruppo, fornitore, articolo) e nella parte bassa visualizza il risultato della ricerca. Alla pressione del tasto "Cerca", la MEDESIMA PAGINA si aggiorna e visualizza i risultati.
Ho creato 3 variabili: $where_gruppo, $where_fornitore e $where_articolo, una per ciascun filtro di ricerca, che si popolano con il metodo $_POST[]. Quanto l'utente lascia vuoti i campi di ricerca, assegno per ogni variabile rispettivamente "WHERE gruppo IS NOT NULL", " AND fornitore IS NOT NULL" e " AND articolo IS NOT NULL".
Infine, una variabile $where, composta dall'accodamento di tutte le variabili di cui sopra, è inserita nella mia SELECT.
Poniamo ad esempio, che l'utente compili solo il filtro relativo al gruppo. Ebbene, il risultato sarebbe di qualche centinaio di righe, pertanto ho utilizzato la paginazione. Purtroppo, nel momento in cui l'utente voglia passare ad una pagina diversa dalla prima, tutti i filtri di cui la $where è composta (se compilati), si perdono. Pertanto, nell'esempio di cui sopra, il filtro della mia SELECT effettuato sul gruppo, scompare e vale IS NOT NULL.
Come posso ovviare affinché tutte le pagine della paginazione "mantengano memoria" dei filtri della ricerca, visto che ad ogni refresh della pagina il metodo $_POST popola tutte le mie 3 $where?
2. IMPORTAZIONE .CSV
Nella mia applicazione, gli utenti che si leggano, hanno la possibilità di selezionare gli articoli (uno per volta) da una lunghissima lista di qualche migliaio di righe. Tuttavia vorrei offrire la possibilità a chi lo volesse d'importare da un file csv, un ordine.
Dunque, ecco come immagino questa parte.
1- Click sul link che mi chiede di selezionare il file .csv da importare (ho già creato un link dove scaricare il template molto banale, composto da due colonne "CODICE" e "QUANTITA"). Quindi, il mio utente, precedentemente si è scaricato il template csv, ha popolato le due colonne, l'ha salvato sul suo pc ed infine, utilizzando il famoso link, ha selezionato il .csv da lui salvato.
2- Anziché salvare brutalmente i dati contenuti nel .csv, ho bisogno di effettuare alcuni controlli. Prima devo verificare che questi codici NON siano già presenti nella tabella "ORDINI"... o meglio... devo verificare che NON siano stati ordinati nelle ultime due settimane dall'agente che sta effettuando l'importazione (nella tab. ORDINI è presente un campo che identifica l'ID dell'agente e la data di inserimento). Secondo, devo verificare che la quantità inserita per ciascun articolo, NON sia maggiore di 5pz.
3- Effettuate le verifiche del caso, devo riportare in una pagina (NON modificabile), l'anteprima dell'ordine da importare. Quindi faccio vedere per ogni riga il codice con relativa quantità. ATTENZIONE1: qualora ci fossero codici già ordinati nelle precedenti due settimane, lo devo segnalare all'utente (del tipo che nell'anteprima, la riga dedicata al codice incriminato riporterà una voce "codice non ordinabile fino a... data_inserimento+14gg). ATTENZIONE2: qualora ci fossero codici con quantità superiore a 5pz, riporterò 5pz. Qualora ci fossero caratteri diversi da un numero nella colonna qtà, riporterò zero pz.
4- Solo a questo punto (cioè dopo i controlli effettuati a sistema) l'utente potrà premere il pulsante "IMPORTA" e trovarsi magicamente l'ordine salvato.
3. AUTOCOMPLETAMENTO
Ho due campi (descrizione1 e descrizione2) in cui agevolo l'utente con l'autocompletamento. Il primo funziona tranquillamente, il secondo no.
Questo lo script per il primo autocompletamento (descrizione1)
e questo il suo campo in cui avviene l'autocompletamento
Questo lo script per il secondo autocompletamento (descrizione2)
e questo il suo campo in cui avviene l'autocompletamento (QUELLO IN CUI NON FUNZIONA)
Come vedete sembrano identici. Ho provato la query su mysql e funziona...
4. PROBLEMA CON DATA
Ho questo codice
I puntini nel codice (...) stanno ad indicare che è presente altro php che non ho elencato. La query sql1 funziona perfettamente su mysql. Purtroppo, mentre $cache_articoli_ordinati[$row["codicearticolo"]]=$row["codicearticolo"]; funziona perfettamente (nel senso che il codice articolo viene estratto), il codice $cache_articoli_ordinati[$row["datainserimento"]]=$row["datainserimento"]; non estrae la data di inserimento e quindi la funzione calcolo_data effettua il conteggio per la variabile $data_2sett_post, partendo dal 1 gennaio 1970 (appunto perché non ha alcuna data di inserimento da cui partire)
Direi che ho finito i problemi... GRAZIE A TUTTI coloro che vorranno aiutarmi.
chiedo supporto per 4 problematiche che vi elenco per priorità.
1. PAGINAZIONE
Ho una pagina che nella parte in alto contiene i filtri per effettuare una ricerca (gruppo, fornitore, articolo) e nella parte bassa visualizza il risultato della ricerca. Alla pressione del tasto "Cerca", la MEDESIMA PAGINA si aggiorna e visualizza i risultati.
Ho creato 3 variabili: $where_gruppo, $where_fornitore e $where_articolo, una per ciascun filtro di ricerca, che si popolano con il metodo $_POST[]. Quanto l'utente lascia vuoti i campi di ricerca, assegno per ogni variabile rispettivamente "WHERE gruppo IS NOT NULL", " AND fornitore IS NOT NULL" e " AND articolo IS NOT NULL".
Infine, una variabile $where, composta dall'accodamento di tutte le variabili di cui sopra, è inserita nella mia SELECT.
Poniamo ad esempio, che l'utente compili solo il filtro relativo al gruppo. Ebbene, il risultato sarebbe di qualche centinaio di righe, pertanto ho utilizzato la paginazione. Purtroppo, nel momento in cui l'utente voglia passare ad una pagina diversa dalla prima, tutti i filtri di cui la $where è composta (se compilati), si perdono. Pertanto, nell'esempio di cui sopra, il filtro della mia SELECT effettuato sul gruppo, scompare e vale IS NOT NULL.
Come posso ovviare affinché tutte le pagine della paginazione "mantengano memoria" dei filtri della ricerca, visto che ad ogni refresh della pagina il metodo $_POST popola tutte le mie 3 $where?
2. IMPORTAZIONE .CSV
Nella mia applicazione, gli utenti che si leggano, hanno la possibilità di selezionare gli articoli (uno per volta) da una lunghissima lista di qualche migliaio di righe. Tuttavia vorrei offrire la possibilità a chi lo volesse d'importare da un file csv, un ordine.
Dunque, ecco come immagino questa parte.
1- Click sul link che mi chiede di selezionare il file .csv da importare (ho già creato un link dove scaricare il template molto banale, composto da due colonne "CODICE" e "QUANTITA"). Quindi, il mio utente, precedentemente si è scaricato il template csv, ha popolato le due colonne, l'ha salvato sul suo pc ed infine, utilizzando il famoso link, ha selezionato il .csv da lui salvato.
2- Anziché salvare brutalmente i dati contenuti nel .csv, ho bisogno di effettuare alcuni controlli. Prima devo verificare che questi codici NON siano già presenti nella tabella "ORDINI"... o meglio... devo verificare che NON siano stati ordinati nelle ultime due settimane dall'agente che sta effettuando l'importazione (nella tab. ORDINI è presente un campo che identifica l'ID dell'agente e la data di inserimento). Secondo, devo verificare che la quantità inserita per ciascun articolo, NON sia maggiore di 5pz.
3- Effettuate le verifiche del caso, devo riportare in una pagina (NON modificabile), l'anteprima dell'ordine da importare. Quindi faccio vedere per ogni riga il codice con relativa quantità. ATTENZIONE1: qualora ci fossero codici già ordinati nelle precedenti due settimane, lo devo segnalare all'utente (del tipo che nell'anteprima, la riga dedicata al codice incriminato riporterà una voce "codice non ordinabile fino a... data_inserimento+14gg). ATTENZIONE2: qualora ci fossero codici con quantità superiore a 5pz, riporterò 5pz. Qualora ci fossero caratteri diversi da un numero nella colonna qtà, riporterò zero pz.
4- Solo a questo punto (cioè dopo i controlli effettuati a sistema) l'utente potrà premere il pulsante "IMPORTA" e trovarsi magicamente l'ordine salvato.
3. AUTOCOMPLETAMENTO
Ho due campi (descrizione1 e descrizione2) in cui agevolo l'utente con l'autocompletamento. Il primo funziona tranquillamente, il secondo no.
Questo lo script per il primo autocompletamento (descrizione1)
Codice:
<script>
$(document).ready(function() {
$("input#autocomplete_descrizione1").autocomplete({
source: [<?php
$stringa2="";
$result2=mysql_query("SELECT DISTINCT(descrizione1) AS descrizione1 FROM articoli", $db);
while($row=mysql_fetch_array($result2)){
$stringa2.="\"".$row['descrizione1']."\", ";
}
$stringa2=substr($stringa2,0,-2);
echo $stringa2
?>],
minLength:2
});
});
</script>
HTML:
<input id="autocomplete_descrizione1" name="descrizione1" maxlength="24" style="width:180px" onkeyup="touppercase(this.id,this.value);"/>
Questo lo script per il secondo autocompletamento (descrizione2)
Codice:
<script>
$(document).ready(function() {
$("input#autocomplete_descrizione2").autocomplete({
source: [<?php
$stringa3="";
$result3=mysql_query("SELECT DISTINCT(descrizione2) AS descrizione2 FROM articoli", $db);
while($row=mysql_fetch_array($result3)){
$stringa3.="\"".$row['descrizione2']."\", ";
}
$stringa3=substr($stringa3,0,-2);
echo $stringa3
?>],
minLength:2
});
});
</script>
HTML:
<input id="autocomplete_descrizione2" name="descrizione2" maxlength="24" style="width:180px" onkeyup="touppercase(this.id,this.value);"/>
Come vedete sembrano identici. Ho provato la query su mysql e funziona...
4. PROBLEMA CON DATA
Ho questo codice
PHP:
$cache_articoli_ordinati=array();
foreach ($conn->query($sql1) as $row) {
$cache_articoli_ordinati[$row["codicearticolo"]]=$row["codicearticolo"];
$cache_articoli_ordinati[$row["datainserimento"]]=$row["datainserimento"];
}
...
...
$giorni = 14;
$data_2sett_post = calcolo_data($cache_articoli_ordinati[$row["datainserimento"]], $giorni);
$stato_articolo = "<div align='center' title='Non ordinabile fino a ".$data_2sett_post."'>Non ord.</div>";
Direi che ho finito i problemi... GRAZIE A TUTTI coloro che vorranno aiutarmi.