Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 22-11-09, 12:31   #1 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 69
Problema script assenze

Salve


Stavo cercando di fare uno script che mi permetta di segnare giornalmente (anche attraverso il codice) le presenze e assenze assegnate a dei nomi che di volta in volta possono essere tolti e aggiunti.. Quindi la lista viene disordinata nel codice e per metterla in ordine alfabetico ho usato sort().
I nomi li meto in un array, ma il problema è che se aggiungo un altro array con i dati ordinati come quelli del codice dell'array precedente, poi si vede la tabella con i nomi ordinati in ordine alfabetico ma i dati sotto sulle presenze e assenze sballati perche non s muovono insieme al nome, spero di essermi spiegato.. vi posto il codice:

Codice PHP:
<table>
<?php
$elenco_utenti
=array("Tizio","Caio","Sempronio","Mevio","Filano","Calpurnio");
$assenze1=array("A","P","P","P","P","A");
$assenze2=array("P","P","A","A","P","P");
  
sort($elenco_utenti);
  
$flag_colore=0;
  for(
$i=0;$i<6;$i++){
   if(
$flag_colore==0){
    echo 
"<tr><td bgcolor=\"#008000\">$elenco_utenti[$i]</td><td bgcolor=\"#008000\">$assenze1[$i]</td><td bgcolor=\"#008000\">$assenze2[$i]</td></tr>";
    
$flag_colore=1;
   }
   else{
    echo 
"<tr><td bgcolor=\"#808080\">$elenco_utenti[$i]</td><td bgcolor=\"#008000\">$assenze1[$i]</td><td bgcolor=\"#008000\">$assenze2[$i]</td></tr>";
    
$flag_colore=0;
   }
  }
 
?>
</table>
Sapete dirmi come potrei risolvere? Credo il codice non sia dei migliori, però è quello che sono riuscito ad abbozzare..

Grazie mille
Gigi991 non in linea   Rispondi citando
Vecchio 22-11-09, 13:37   #2 (permalink)
 
L'avatar di il_gege
 
Data di registrazione: May 2009
Messaggi: 97
Invia un messaggio tramite MSN a il_gege Invia un messaggio tramite Skype a il_gege
In questo caso ti conviene fare un array associativo del tipo:

Codice PHP:
 $elenco_utenti['Tizio'][Ass1] = 'A';
 
$elenco_utenti['Tizio'][Ass2] = 'P';
 
$elenco_utenti['Caio'][Ass1] = 'P';
 
$elenco_utenti['Caio'][Ass2] = 'P';
 
$elenco_utenti['Sempronio'][Ass1] = 'P';
 
$elenco_utenti['Sempronio'][Ass2] = 'A';
... 
e poi per ordinare fai il ksort (che ordina a seconda dell'indice -in questo caso i nomi-) ed un foreach/for per ciclare...
il_gege non in linea   Rispondi citando
Vecchio 22-11-09, 16:46   #3 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 69
Sto provando in tutti i modi, ho visto anche su google ma in tutti i siti è spiegato con:

$elenco_utenti['Tizio'] = 'A';

Senza la parte in più [Ass1] ecc.., sto andado abbastanza in confusione, provo a lasciare per qualche oretta così magari sono più lucido, poi se avete tempo e potete darmi una mano in più forse entro 1 mese c'è la faccio
Oppure se ci sono guide che riprendono il codice simile almeno lo caisco megli senza disturbarvi troppo mi va sempre benissimo..

Grazie mille!
Gigi991 non in linea   Rispondi citando
Vecchio 22-11-09, 16:59   #4 (permalink)
 
L'avatar di il_gege
 
Data di registrazione: May 2009
Messaggi: 97
Invia un messaggio tramite MSN a il_gege Invia un messaggio tramite Skype a il_gege
In realtà gli array multidimensionali in PHP sono di un'utilità impressionante.

E la bellezza di questi è che puoi crearli come meglio credi.

Nel tuo caso, visto che tu hai necessariamente bisogno di due campi 'Assenza1' ed 'Assenza2', puoi usare perfettamente l'esempio che ti ho fatto io:

Codice PHP:
$elenco_utenti['Tizio'][Ass1] = 'P';
$elenco_utenti['Tizio'][Ass2] = 'A';
/* In questo caso, Tizio è l'indice dell'array $elenco_utenti, Ass1 e Ass2 
sono i due campi riferiti all'indice 'Tizio' e P, A sono i valori associati ad
Ass1 di Tizio e Ass2 di Tizio. */ 
Diciamo che puoi prenderli in considerazione come se fossero un mini.db (ovviamente solo in questo caso)

Ad esempio:
Codice PHP:
Tabella ElencoUtenti
 ID      
Ass1     Ass2   
 
'Tizio' 'P'      'A' 
Spero di essermi spiegato!!

Ultima modifica di il_gege : 22-11-09 17:02. Motivo: Un pò più di formattazione non fa male :)
il_gege non in linea   Rispondi citando
Vecchio 22-11-09, 19:02   #5 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 69
Quindi con quel tipo di array il primo valore, ne nostro caso Tizio, è sempre associato all'ID, mentre quello tra le parentesi quadre è come una suddivisione di questo in più parti, in questcaso Ass1 e Ass2 che poi hanno ognuno un proprio dato.. giusto?


Comunque per rendere meglio la cosa, perchè prima ho cercato di non allungare troppo:

In pratica devo controllare circa 100 utenti, e per ognuno devo segnare le assenze degli ultimi 7 giorni, quindi i valori da 2 passano a 7, che poi dovrebbero darmi solo gli ultimi 7 valori per ogni membro.

Poi qusto me l'ero segnato come primo passo, per poi provare a fare in modo che direttamente dal browser davanti alla pagina stessa, i valori "A" (Assente) e "P" (Presente) vengono sostituiti con delle immagini, e che una volta cliccate, queste cambiano il dato nello script (quindi lo scrip dovrebbe funzionare anche da database su file php).

Per non incasinarmi troppo ero partito dicendo che bastava avere una base dove la modifica avveniva solo attraverso codice, ma come si può notare ho già qualche difficoltà, ora ho scritto il tutto non per farmi fare lo script, perchè vorrrei farlo io passo passo per capirlo, ma in modo che chi spreca tempo a darmi le indicazioni sappia già un po cosa ho in mene, per non andare tutti insieme fuori strada.




Tornando al codice, io prima avevo utlizzato sort($elenco_utenti), ho provato utilizzando ksort() allo stesso modo ma non funziona, evidentemente perchè funziona in modo diverso, su internet ho trovato questo con foreach:

Codice PHP:
ksort($elenco_utenti);
foreach (
$elenco_utenti as $chiave => $valore) {
    echo 
"$chiave = $valore\n";

E' questo che serve a me?
Però non capisco da dove prende le due variabili $chiave e $valore.. che dovebbero essere nel mio script, penso, il nome utente e il valore dell'assenza o meno.
Gigi991 non in linea   Rispondi citando
Vecchio 22-11-09, 19:17   #6 (permalink)
 
L'avatar di il_gege
 
Data di registrazione: May 2009
Messaggi: 97
Invia un messaggio tramite MSN a il_gege Invia un messaggio tramite Skype a il_gege
Allora..

Partiamo da prima al codice...
il codice in teoria da usare è similare:

Codice PHP:
$elenco_utenti['Tizio'][Ass1]='P';
$elenco_utenti['Tizio'][Ass2]='P';
$elenco_utenti['Caio'][Ass1]='A';
$elenco_utenti['Caio'][Ass2]='A';
$elenco_utenti['Sempronio'][Ass1]='A';
$elenco_utenti['Sempronio'][Ass2]='P';
$elenco_utenti['Altro'][Ass1]='P';
$elenco_utenti['Altro'][Ass2]='A';

ksort($elenco_utenti);

foreach(
$elenco_utenti AS $K => $V){
    echo 
"La prima assenza dell'utente ".$K." è ".$elenco_utenti[$K][Ass1]."\n";
    echo 
"La seconda assenza dell'utente ".$K." è ".$elenco_utenti[$K][Ass1]."\n";

Poi ovviamente, riferito alla descrizione, puoi benissimo sostituire P o A con un link all'immagine!

ad esempio:

Codice PHP:
 ksort($elenco_utenti);
 
 foreach(
$elenco_utenti AS $K => $V){
     echo 
"<img src='http://".$elenco_utenti[$K][Ass1]."' />\n";
     echo 
"<img src='http://".$elenco_utenti[$K][Ass1]."' />\n";
 } 
(Il ksort funziona comunque!)
il_gege non in linea   Rispondi citando
Vecchio 22-11-09, 19:51   #7 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 69
Ottimo, fino a qua ci siamo, questo il risultato:

provanuke.altervista.org/assenze.php


Qui il sorgente (non vorrei fosse troppo lungo da postare qui in forum):

provanuke.altervista.org/assenze.txt


Ora si capisce già meglio cosa ho in mente.

La parte di codice nel foreach posso anche modificarla maualmente ogni giorno, una volta arrivto al settimo, cambiando questo:
Codice PHP:
 <td>".$elenco_utenti[$K][Ass1]."</td>
 <
td>".$elenco_utenti[$K][Ass2]."</td>
 <
td>".$elenco_utenti[$K][Ass3]."</td>
 <
td>".$elenco_utenti[$K][Ass4]."</td>
 <
td>".$elenco_utenti[$K][Ass5]."</td>
 <
td>".$elenco_utenti[$K][Ass6]."</td>
 <
td>".$elenco_utenti[$K][Ass7]."</td
Con questo:
Codice PHP:
 <td>".$elenco_utenti[$K][Ass2]."</td>
 <
td>".$elenco_utenti[$K][Ass3]."</td>
 <
td>".$elenco_utenti[$K][Ass4]."</td>
 <
td>".$elenco_utenti[$K][Ass5]."</td>
 <
td>".$elenco_utenti[$K][Ass6]."</td>
 <
td>".$elenco_utenti[$K][Ass7]."</td>
 <
td>".$elenco_utenti[$K][Ass1]."</td
E facendo lo stesso lavoro con le date in alto, ci metterei 1 minuto..
Solo che sarebbe complicato una volta arrivato sui 100 utenti, modificare lo stato direttamente dal codice, quindi quello ch avevo in mente è rendere le scritte "presente" e "assente" dei link, che se cliccati fnno ricaricare la pagina stampando il valore opposto a quello precedente, quindi passando da assente a presente e viceversa. Quindi dovrebbe essere un cambio che si verifica anche nello script, penso servano a questo punto dei comando simili a qelli di un database no?
Gigi991 non in linea   Rispondi citando
Vecchio 22-11-09, 20:04   #8 (permalink)
 
L'avatar di il_gege
 
Data di registrazione: May 2009
Messaggi: 97
Invia un messaggio tramite MSN a il_gege Invia un messaggio tramite Skype a il_gege
Beh gli array non hanno comandi particolari,

una volta che hai ricavato la posizione di dove andare a modificarlo basta che fai
$elenco_utenti[$X][AssY] = 'Z';
il_gege non in linea   Rispondi citando
Vecchio 22-11-09, 21:05   #9 (permalink)
User
 
Data di registrazione: Dec 2008
Ubicazione: Milano
Messaggi: 69
Quote:
il_gege Visualizza il messaggio
[***]

Devo quindi ricavare le coordinate di ogni dato?
Scusa ma guardando quel codice non ci arrivo..

Ultima modifica di Leonov : 23-11-09 15:19. Motivo: Quote inutile.
Gigi991 non in linea   Rispondi citando
Vecchio 23-11-09, 09:37   #10 (permalink)
 
L'avatar di il_gege
 
Data di registrazione: May 2009
Messaggi: 97
Invia un messaggio tramite MSN a il_gege Invia un messaggio tramite Skype a il_gege
Si, ogni array ha il suo sistema di coordinate che gestisci te tramite il post del link che cliccherai.

Tipo
Codice PHP:
foreach($elenco_utenti AS $K => $V){
    for(
$I 1$I 8$I++){
        echo 
"<a href='thispage.php?IDUtente=$K&amp;Ass=Ass".$I."'>".$elenco_utenti[$K][Ass.'$I']."</a>";
    }

Una volta che clicchi sul link poi avrai un recupero del genere:

Codice PHP:
$IDUtente $_REQUEST['IDUtente'];
$Ass $_REQUEST['Ass'];

if(
$elenco_utenti[$IDUtente][$Ass] == 'P'$elenco_utenti[$IDUtente][$Ass]= 'A'; else $elenco_utenti[$IDUtente][$Ass]= 'P'
il_gege non in linea   Rispondi citando
Rispondi


Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 16:38.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.