Ciao a tutti ragazzi
sono diversi giorni che mi rompo la testa su questo esercizio.
Non ce la faccio più spero in un vostro aiuto.
Nel file test.txt ho una lista del genere
codice:
p1|26/07/16|127.0.0.1|12:40:17
p2|26/07/16|127.0.0.1|12:40:19
p2|26/07/16|127.0.0.1|12:40:21
p2|26/07/16|127.0.0.1|12:40:22
p1|26/07/16|127.0.0.1|12:40:24
p2|26/07/16|127.0.0.1|12:30:18
p1|26/07/16|188.114.103.34|12:30:21
p1|26/07/16|173.245.56.233|12:30:23
p2|26/07/16|173.245.54.238|12:30:25
p1|26/07/16|188.114.103.34|12:33:23
p1|26/07/16|188.114.103.34|12:33:26
p2|26/07/16|188.114.103.34|12:33:28
p1|26/07/16|188.114.103.34|12:51:24
p2|27/07/16|173.245.56.233|06:00:37
p2|27/07/16|173.245.54.238|06:00:37
p1|27/07/16|173.245.63.234|06:00:38
p1|27/07/16|173.245.54.234|06:00:38
p2|03/08/16|173.245.54.238|06:01:51
p1|03/08/16|173.245.54.234|06:01:51
p2|03/08/16|173.245.56.233|06:02:26
p1|03/08/16|173.245.63.234|06:02:27
p2|03/08/16|162.158.104.227|13:15:08
p1|03/08/16|162.158.104.227|13:28:53
p1|06/08/16|127.0.0.1|12:36:42
p2|06/08/16|127.0.0.1|12:36:47
p2|09/08/16|127.0.0.1|15:16:11
p1|09/08/16|127.0.0.1|15:17:52
p2|09/08/16|127.0.0.1|15:18:19
p1|09/08/16|127.0.0.1|15:18:21
in cui p1 e p2 sono i tasti cliccati dagli utenti.
Sono riuscito a calcolare il numero totale di click su p1 e su p2, ma voglio conoscere ogni indirizzo ip quanti click ha fatto su p1 e quanti su p2.
Non so quale sia meglio come logica di pensiero e spero in un vostro aiuto in tal senso: ho iniziato con l'usare un semplice ciclo while per poter arrivare al risultato; poi mi è venuto in mente che potessi utilizzare anche una funzione che scorra anche lei il file test.txt. ma cmq non ci riesco.
La cosa fondamentale che mi interesse è come devo muovere il cervello per tentare di risolvere problemi del genere e perchè.
Questo è il mio codice:
forse ci sono un po' troppi echo ma volevo rendermi conto
codice:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Conto il numero di click</title>
</head>
<body>
<h3>Conto il numero di click</h3>
<?php
$i=$nump1=$nump2='0';
$indirizzo_pres=$indirizzo_pres2=$indirizzo_div=$totclicpres1=$totclicpres2=$totclicdiv1=$totclicdiv2='0';
$indirizzop1='0';
$indirizzop2='0';
$indirizzo_trovato1=$indirizzo_trovato2='0';
$textfile = fopen("test.txt", "r"); //apro il file da contare
while ( $rigafile=fgets($textfile,1024) ) {
$campiriga = explode("|", $rigafile); //estraggo tutti i campi di riga
$click=$campiriga[0]; //prelevo da ogni riga il campo relativo al click
$indirizzo1=$campiriga[2]; //prelevo da ogni riga il campo relativo all'indirizzo
if(isset($indirizzo1)){ /*conteggio il numero di click totali sui due pulsanti*/
if($click== "p1"){$nump1=$nump1+1; $i++;$indirizzop1=$indirizzo1;}
if($click=="p2"){$nump2=$nump2+1;$i++;$indirizzop2=$indirizzo1;}
}
if($indirizzop1<>$indirizzop2){
$indirizzo_trovato1=$indirizzop1;
$indirizzo_trovato2=$indirizzop2;
}
quanti_click($indirizzo1,$indirizzop1,$indirizzop2);
}//----------------chiudo while----------------------------------
echo"<br>il numero di click totale su p1 è".$nump1 ;
echo"\n<br>il numero di click totale su p2 è".$nump2;
echo"<br>ccccccc$indirizzo_div<br>";
echo"<br>$indirizzo1<br>";
echo"<br>l'indirizzo $indirizzo_pres ha fatto questi click sul primo $totclicpres1\n" ;
echo"<br>l'indirizzo $indirizzo_pres ha fatto questi click sul secondo $totclicpres2\n" ;
echo"<br>l'indirizzo $indirizzo_pres2 ha fatto questi click sul primo $totclicdiv1\n" ;
echo"<br>l'indirizzo $indirizzo_pres2 ha fatto questi click sul secondo $totclicdiv2\n" ;
/*-----------------FUNZIONE----------------------------*/
function quanti_click($indirizzo,$indirizzo_sceltap1,$indirizzo_sceltap2){
global $indirizzo_pres;
global $indirizzo_pres2;
global $totclicpres1;
global $totclicpres2;
global $totclicdiv1;
global $totclicdiv2;
global $indirizzo_div;
$indirizzo_pres=$indirizzo_pres2=$indirizzo_div='0';
$totclicpres1=$totclicpres2=$totclicdiv1=$totclicdiv2='0';
$textfile = fopen("test.txt", "r"); //apro il file da contare
while ( $rigafile=fgets($textfile,1024) ) {
$campiriga = explode("|", $rigafile); //estraggo tutti i campi di riga
$click=$campiriga[0]; //prelevo da ogni riga il campo relativo al click
$ind=$campiriga[2]; //prelevo da ogni riga il campo relativo all'indirizzo
if(($indirizzo_sceltap1==$ind)){
if($click=="p1"){$totclicpres1=$totclicpres1+1;
$indirizzo_pres1=$indirizzo_sceltap2;}
}else{
$totclicdiv1=$totclicdiv1+1;
$indirizzo_pres2=$indirizzo_sceltap2;
}
if($indirizzo_sceltap2==$ind){
if($click=="p2"){$totclicdiv2=$totclicdiv2+1;
$indirizzo_pres=$indirizzo_sceltap2;
}
} else{$totclicdiv2=$totclicdiv2+1;
$indirizzo_pres2=$indirizzo_sceltap2;}
}//----------------chiudo while----------------------------------
}//chiudo funzione
?>
</body>
</html>
La funzione quanti_click() aveva in precedenza anche quest'altra forma, ma cmq non dava i risultati sperati
codice:
function quanti_click($indirizzo){
//definisco la variabili contatore
global $totclicpres1; //$totclicpres1='0';
global $totclicpres2; //$totclicpres2='0';
global $totclicdiv1; //$totclicdiv1='0';
global $totclicdiv2; //$totclicdiv2='0';
global $indirizzo_pres2;
global $indirizzo_pres3;
global $indirizzo_pres;
global $indirizzo_div;
global $click;
global $totclicdivvvv1;
global $totclicdivvvv2;
global $i;
global $condizione1;
$textfile = fopen("test.txt", "r");
while ($rigafile=fgets($textfile,1024) ) {
$campiriga = explode("|", $rigafile);
$ind=$campiriga[2]; //stesso indirizzo del while fuori funzione
$i=0;
if($indirizzo==$ind){$indirizzo_pres=$indirizzo;}
if($indirizzo<>$ind){$indirizzo_pres2=$indirizzo;}
if($indirizzo_pres){
if($click=="p1"){$totclicpres1=$totclicpres1+1;}
if($click=="p2"){$totclicpres2=$totclicpres2+1;}
}
if($indirizzo_pres2){
if($click=="p1"){$totclicdiv1=$totclicdiv1+1;}
if($click=="p2"){$totclicdiv2=$totclicdiv2+1;}
}
}//chiudo while---------------------------------
fclose($textfile);
}//chiudo funzione--------------------------------------------------