Ciao
piccola premessa: per dare una risposta esaustiva ed utile bisognerebbe avere uno scenario più completo della tua applicazione, capire quali framework hai usato per separare la logica dalla grafica, e capire come dialoga la parte client (html/javascript) con la parte server.
In applicazioni di questo tipo è sempre buona norma tenere separate almeno la logica dalla grafica, tale approccio viene chiamato MVC (Model / View / Controller) e indica sostanzialmente delle best-practice per affrontare lo sviluppo di software di questo tipo.
Ad esempio, parli di software web che sarà usato da agenti commerciali, posso quindi ipotizzare che uno dei requisiti di tale interfaccia web sia l'usabilità e la facilità di utilizzo da parte di dispositivi mobile, in tal caso ti consiglierei l'utilizzo di un framework come jquery mobile, che ti consente un'ottima astrazione e una buona compatibilità sia con i browser che con i dispositivi mobile.
In uno scenario di questo tipo il php si dovrebbe limitare a generare "solo" delle risposte in JSON o XML.
Fatta la premessa (magari superflua, in tal caso mi scuso) di seguito le risposte alle tue 3 domande
Allora, queste informazioni le trovi tutte nel database, ma visto che parli di migliaia di articoli non è consigliabile fare tutte queste query per ogni articolo, quello che ti consiglio è di usare delle strutture dati di appoggio che ti consentiranno di sapere in quale situazione si trova l'articolo per quel determinato agente.
Esempio:
Codice PHP:
/*
* step1
* mi trovo tutti gli aricoli ordinati negli ultimi 14 giorni
*/
$sql="select codice_articolo from tabella_storico_ordini where id_agente=xx and data_ordine >= '".$data_odierna_meno_15_giorni."' group by codice_articolo";
$cache_articoli_ordinati=array();
foreach ($conn->query($sql) as $row) {
$cache_articoli_ordinati[$row["codice_articolo"]]=$row["codice_articolo"];
}
/*
* step 2
* mi trovo tutti gli articoli nella tabella di servizio per questo agente
*/
$sql="select codice_articolo from tabella_servizio where id_agente=xx group by codice_articolo'";
$cache_articoli_servizio=array();
foreach ($conn->query($sql) as $row) {
$cache_articoli_servizio[$row["codice_articolo"]]=$row["codice_articolo"];
}
/*
* step 3
* quando ciclo sui vari articoli decido in quale delle 3 situazioni mi trovo
*/
foreach($articoli as $codice_articolo){
if(isset($cache_articoli_servizio[$codice_articolo])){
$stato_articolo="Aggiunto";
}else if(isset($cache_articoli_ordinati[$codice_articolo])){
$stato_articolo="Non Ordinabile";
}else{
$stato_articolo="Aggiungi";
}
}
avrai un array di articoli su cui ciclare ed eseguire le varie query, per dare una risposta più esaustiva bisogna capire come invii dal browser al server le informaizoni su questa richiesta (GET o POST? come json o come form?)
si, basta che fai uno script php che esegue la specifica query e poi lo lanci tramite crontab oppure con le oprazioni pianificate di windows, se non hai a disposizione la possibilità di pianificare dei task sulla macchina puoi fare una pagina php che richiede determinati parametri di autenticazione e si occupa di fare la richiesta (e poi tu schedulerai una richiesta di questo tipo su un sistema di terze parti)
Ciao