- Home
- Categorie
- Coding e Sistemistica
- Coding
- Turni Rotativi con PHP
-
Innazitutto saluti all'Ecuador.
Ho alcune domande:-
Quando si libera un carrello?
Es. Carrello 1 ha Persona1 e Persona2. In attesa ci sono Persona3 e Persona4 che potrebbero essere assegnate a Carrello 1. Tralasciando gli altri carrelli e le altre persone, quando si libera Carrello1? Chiedo cioè se c'è un evento o comunque da cosa è governato il cambio di stato occupato/libero. -
Il cambio di stato per i 3 carrelli avviene contemporaneamente oppure l'evoluzione dello stato è indipendente per i 3 carrelli?
-
Sempre sul cambio di stato come da domanda 1), il valore della variabile di stato per il carrello (libero/occupato) è un input dall'esterno oppure è determinata all'interno del tuo programma?
-
Alla fine qual è l'output che vuoi ottenere? Es. ad ogni step info sui carrelli e le persone assegnate a ciascun carrello...
-
-
muchas gracias por los saludos!
allora ogni carrello ha un orario fisso, ti faccio un esempio piu concreto
Carrello 1: orario 7.30-10.30 lunedi nel luogo A - presenti risorsa 1 e risorsa 2, eventualmente risorsa 3 come jolly
Carrello 2: orario 7.30-10.30 lunedi nel luogo B- presenti risorsa 4 e risorsa 5, eventualmente risorsa 6 come jolly
Carrello 3: orario 7.30-10.30 lunedi nel luogo C- presenti risorsa 7 e risorsa 8, eventualmente risorsa 9 come jollyCarrello 1: orario 7.30-10.30 martedi nel luogo A - presenti risorsa 10 e risorsa 11, eventualmente risorsa 12 come jolly
Carrello 2: orario 7.30-10.30 martedi nel luogo B- presenti risorsa 13 e risorsa 14, eventualmente risorsa 15 come jolly
Carrello 3: orario 7.30-10.30 martedi nel luogo C- presenti risorsa 16 e risorsa 17, eventualmente risorsa 18 come jollye cosi via, finite le 40 risorse si reinizia con la prima. non importando in che carrello va. esempio:
Carrello 1: orario 7.30-10.30 martedi nel luogo A - presenti risorsa 37 e risorsa 38, eventualmente risorsa 39 come jolly
Carrello 2: orario 7.30-10.30 martedi nel luogo B- presenti risorsa 40 e risorsa 1, eventualmente risorsa 2 come jolly
Carrello 3: orario 7.30-10.30 martedi nel luogo C- presenti risorsa 3 e risorsa 4, eventualmente risorsa 5 come jollyin modo che nessuna risorsa si ripete fino a che non è finito il giro completo.
- lo stato del carrello dipende dal fatto che abbia le risorse assegnate, se le ha è occupato.
- i dati di output dovrebbero essere:
lunedi:
Carrello 1 con risorsa 1 risorsa 2 e jolly risorsa 3
Carrello 2 con risorsa 4 risorsa 5 e jolly risorsa 6
Carrello 3 con risorsa 7 risorsa 8 e jolly risorsa 9
e cosi via per gli altri giorni.
il problema per me è l'assegnazione dei turni delle risorse in maniera automatica e senza ripetere le risorse prima della fine del ciclo turni.
-
Il jolly vale come assegnazione?
Es. martedì risorsa 3 non deve essere assegnata perché ha fatto da jolly lunedì oppure ci deve essere?
-
buona domanda... no penso che il jolly non valga come assegnazione dato che come supplente non deve partecipare a tutti i costi.
-
Ok, grazie.
-
grazie a te e per l'aiuto che mi puoi dare.
-
Hai previsto un db per conservare queste info? nel caso mysql va bene?
-
si pensavo mysql. con php è l'ideale.
-
Copia e incolla in una pagina vuota, denomina il file come vuoi (es. turni.php) e lancia da locale o remoto.
La pagina stampa la coda (serve solo come esempio) e l'array con i turni.Puoi cambiare i parametri:
- numRisorse, ora impostato a 40;
- numServenti, ora impostato a 3;
- numRisorseServente, ora impostato a 2;
- numeJollyServente, ora impostato a 1.
Teoricamente potresti cambiare anche *puntatore *per fare iniziare la rotazione da una risorsa diversa dalla prima (ricorda che deve essere minore o uguale a numRisorse-1):
- puntatore, ora impostato a 0.
Ho dato per scontato che la coda contenesse tutte le risorse, ma di solito non è così (per evidenziare questa cosa ho impostato *numQueue *uguale a numRisorse).
<!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <title>Turni rotativi con PHP</title> <meta name="description" content=""> <meta name="robots" content="noindex, nofollow" /> </head> <body> <header> <h1>Turni rotativi con PHP</h1> </header> <div> <h2>Array della Coda</h2> <?php //Inizializza la coda con le risorse e stampa l'array $queue $numRisorse = 40; $numQueue = $numRisorse; for ($i=0; $i<=$numQueue-1; $i++) { $queue* = 'R' . ($i+1); } ?> <pre> <?php print_r($queue); ?> </pre> <h2>Array dei turni</h2> <?php //Crea i turni e stampa l'array $turni $numServenti = 3; $numRisorseServente = 2; $numJollyServente = 1; $numTurni = 3; $puntatore = 0; for ($t=0; $t<=$numTurni-1; $t++) { $idTurno = 'T' . ($t+1); $turni = array('idTurno' => $idTurno); for ($i=0; $i<=$numServenti-1; $i++) { $idServente = 'S' . ($i+1); $turni* = array('idServente' => $idServente); for ($k=0; $k<=$numRisorseServente-1; $k++) { $idRisorsaServente = $queue[$puntatore]; $turni*[$k] = array ('idRisorsaServente' => $idRisorsaServente, 'statoRisorsaServente' => '1'); $puntatore += 1; } for ($k=0; $k<=$numJollyServente-1; $k++) { $z = $numRisorseServente + $k; $idJollyServente = $queue[$puntatore + ($numServenti-$i-1)*($numRisorseServente)+$i*$numJollyServente + $k]; $turni*[$z] = array ('idJollyServente' => $idJollyServente, 'statoJollyServente' => '1'); } } } ?> <pre> <?php print_r($turni); ?> </pre> </div> </body> </html>
Fammi sapere come va.
Poi se ho tempo ti faccio la versione con mysql.
-
ma sei un mito!! non so come ringraziarti davvero. oggi lo provo. per mysql provo io a fare le connessioni, altrimenti ti farò toc toc un'altra volta. se potessi fare qualcosa io per te...
-
Ho tolto qualche riga inutile dal PHP.
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport" /> <title>Turni rotativi con PHP</title> <meta name="description" content="" /> <meta name="robots" content="noindex, nofollow" /> </head> <body> <header> <h1>Turni rotativi con PHP</h1> </header> <div> <h2>Array della coda</h2> <?php $numRisorse = 40; $numQueue = $numRisorse; for ($i=0; $i<=$numQueue-1; $i++) { $queue* = 'R' . ($i+1); } ?> <pre> <?php print_r($queue); ?> </pre> <h2>Array dei turni</h2> <?php $numServenti = 3; $numRisorseServente = 2; $numJollyServente = 1; $numTurni = 3; $puntatore = 0; for ($t=0; $t<=$numTurni-1; $t++) { for ($i=0; $i<=$numServenti-1; $i++) { for ($k=0; $k<=$numRisorseServente-1; $k++) { $idRisorsaServente = $queue[$puntatore]; $turni*[$k] = array ('idRisorsaServente' => $idRisorsaServente, 'statoRisorsaServente' => '1'); $puntatore += 1; } for ($k=0; $k<=$numJollyServente-1; $k++) { $z = $numRisorseServente + $k; $idJollyServente = $queue[$puntatore + ($numServenti-$i-1)*($numRisorseServente)+$i*$numJollyServente + $k]; $turni*[$z] = array ('idJollyServente' => $idJollyServente, 'statoJollyServente' => '1'); } } } ?> <pre> <?php print_r($turni); ?> </pre> </div> </body> </html>