risultati utili consecutivi

zighy

Utente Attivo
20 Gen 2012
96
0
0
Buonasera,
vengo subito al dunque ho una tabella cosi strotturata

sq_casa sq_fuori gfc gft segno giornata

PARMA GENOA 2 1 1 1
MILAN PARMA 2 0 1 2
PARMA BOLOGNA 2 2 X 3
ROMA PARMA 1 2 2 4

Ora adesso io vorrei estrarre i risultati utili CONSECUTIVI del PARMA.. come potrei fare? HELP!!!!
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
dovrei controllare i campi della tabella PER OGNI 'giornata' e contare quante volte CONSECUTIVE esce lo stesso 'segno'
Capisco sia un po difficile da capire non so bene come spiegarlo nemmeno io.

In pratica dovre controllare ogni 'giornata' se X squadra vince,pareggia o perde e poi CONTARE le vittorie CONSECUTIVE
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao

Codice:
sq_casa | sq_fuori | gfc | gft | segno | giornata
PARMA   | GENOA    | 2   | 1   | 1     | 1
MILAN   | PARMA    | 2   | 0   | 1     | 2
PARMA   | BOLOGNA  | 2   | 2   | X     | 3
ROMA    | PARMA    | 1   | 2   | 2     | 4

da quello che ho capito (sempre es parma) cerchi per parma i risultati utili (non m ne intendo molto di calcio, ma il pareggio X è un risultato utile?)
se X utile il parma ha ottenuto tale risultato utile consecutivo solo nella giornata 3 e 4
mi sto afficinando?

p.s.
guarda che non è un codice, ma è l'unico metodo per tenerli incolonnati bene
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
la x è un risultato utile quindi come dici tu se la tabelle avesse solo quelle 4 righe i risultati utili sarebbero 2.
Piu che avvicinato hai centrato il problema.Hai suggerimenti?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova questo script anche con qualcosa di più consistente dell'esempio
leggendo i commenti dovresti capire quello che ho fatto (o sognato di fare)
PHP:
<?php
//....dati connessione
$squadra="PARMA";//potrebbe venire da un $_POST
//preparo alcune variabili
$utili_casa=array();
$utili_fuori=array();
$utili_consecutivi=array();
$q=mysql_query("SELECT * FROM tabella WHERE sq_casa='$squadra' ORDER BY giornata");//prima query
while($riga=mysql_fetch_array($q)){
	$se=$riga['segno'];
	$gg=$riga['giornata'];
	if($se == '1' OR $se=='X'){
		$utili_casa[]=$gg;//con l'esempio dovrebbe essere $utili_casa[0]=1, $utili_casa[1]=3
	}
}
$q=mysql_query("SELECT * FROM tabella WHERE sq_fuori='$squadra' ORDER BY giornata");//seconda query
while($riga=mysql_fetch_array($q)){
	$se=$riga['segno'];
	$gg=$riga['giornata'];
	if($se == '1' OR $se=='X'){
		$utili_fuori[]=$gg;//e qui $utili_fuori[0]=4
	}
}
//faccio un merge per mantenere gli array fatti
$utili_consecutivi=array_merge($utili_casa,$utili_fuori);
//ordino i consecutivi (ricorda conteiene la giornata)
sort($utili_consecutivi);
//conto quanti sono
$sono=count($utili_consecutivi);//qui dovresti avere $utili_consecutivi[0]=1, $utili_consecutivi[1]=3, $utili_consecutivi[2]=4
//dove i valori 1, 3 e 4 sono le giornate in cui il parma ha vinto o pareggiato indipendentemente se in casa o fuori
//metto a zero un contatore
$consecutivi=0;
//esploro l'array $utili_consecutivi se la giornata è 1 il consecutivo (se esiste) sarà 1+1=2
for($k=0; $k<($sono-1); $k++){//facendo il raffronto a due a due devo fermarmi al penultimo
	/*
	per $k =0:
	$utili_consecutivi[0] == 1 = $oggi
	$utili_consecutivi[1] == 3 = $domani 
	domani != da oggi +1, quindi non conteggio
	---------------------------------------------------------
	per $k =1:
	$utili_consecutivi[1] == 3 = $oggi
	$utili_consecutivi[2] == 4 = $domani
	in questo caso domani == a oggi +1, quindi conteggio
	---------------------------------------------------------
	ecc... se i dati sono di più
	*/
	$oggi=$utili_consecutivi[$k];
	$domani=$utili_consecutivi[($k+1)];
	if($domani== ($oggi+1)]){
		$consecutivi++;
	}
}
echo "la squadra $squadra ha ottenuto ".count($utili_casa)." risultati utili in casa<br />";
echo " ".count($utili_fuori)." risultati utili fuori casa<br />";
echo "di cui $consecutivi consecutivi<br />";
?>
non è detto che funzi (anche perche sono le 22.02 e sono un po' stufo)

p.s.
verifica eventuale dimenticanze es di ;
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
A primo acchito non funziona :)
Ora pero' ci smanetto un po.. illuminazioni future saranno cmq ben accette!
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
Ciao,
l' ho provato su un database piu' grande di quelle 4 righe e con piu giornate. C 'è una quadra in piu da qualche parte ma per il resto lo script funziona solo che non calcola nel modo giusto!
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
Fermi tutti.. funziona perfettamente,colpa mia!
MMM.. ma come posso 'salvare' il numero massimo di risultati utili raggiunto? Cosi cambia a seconda dell'ultimo risultato.Buonanotte!
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
:angel:
Scusa l'insistenza ma mi sono imbattuto in un'altro inghippo.
Lo script è perfetto basta cambiare l'1' nel secondo if perchè la squadra in questione è quella in trasferta.
Nallo schema-tabella descritto nei primi post manca il campo 'anno', quindi se eseguo le query in base ad un anno specifico tutto ok ma se la voglio eseguire su tutti gli 'anni' che ci sono nel database va in confusione.
Il tuo script l'ho capito bene e la 'confusione' è dovuta al fatto che l' anno è diverso ma le giornate hanno gli stessi valori di anno in anno (1,2,3..)
Come potrei fare?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come si chiama il campo dell'anno in tabella?
se poi vuoi fai (immagino che tu invii la richiesta tramite un form) una <select name='anno'> dinamica in cui o selezioni l'anno o vuoto
poi
nello script aggiungi
PHP:
<?php
//...
if($_POST['anno']==""){
$and ="";
}else{
$and=" AND anno='".$_POST['anno']."? ";
}
//...
?>

poi nelle due query (te ne metto una sola l'altra uguale)

PHP:
<?php
//.....
$q=mysql_query("SELECT * FROM tabella WHERE sq_casa='$squadra'  $and ORDER BY giornata");//prima query
//.....
?>
 
Ultima modifica:

zighy

Utente Attivo
20 Gen 2012
96
0
0
Non mi serve una select in questo caso mi basta un semplice interrogazione del db

Nella tab il campo anno si chiama.. anno :)
Credevo mi bastava inserirlo nella query cosi:

PHP:
 $q=mysql_query("SELECT * FROM tabella WHERE sq_casa='$squadra' ORDER BY anno asc,giornata asc");

ma non va bene perchè " utili_casa[] " è uguale a $riga[giornata] che a sua volta si ripete negli anni, quindi il 2012 avra' una giornata=1 ma anche il 2013 avra' una giornata=1 quindi la query va in confusione e non calcola bene i consecutivi

ordinare x riga[giornata] prima dell'if e assegnare a utili_casa[]=$variabile_ordine ?????
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi è venuto in mente questo, come al solito provalo
PHP:
<?php
//....dati connessione
$squadra="PARMA";//potrebbe venire da un $_POST
$anno_ini="1970";//questi li ricavi poi da un $_PST o dalla tabella
$anno_fin="2013";//oppure $anno_fin=date("Y");//importante è che $anno_fin >= $anno_ini
//preparo alcune variabili
$utili_casa=array();
$utili_fuori=array();
$utili_consecutivi=array();
//e delle altre
$utili_casa_anno=array();
$utili_fuori_anno=array();
$utili_consecutivi_anno=array();
//attento per far prima non indento
for($aa=$anno_ini; $aa <= $anno_fin; $aa++){

$q=mysql_query("SELECT * FROM tabella WHERE sq_casa='$squadra' WHERE anno='$aa' ORDER BY giornata");//prima query
while($riga=mysql_fetch_array($q)){
    $se=$riga['segno'];
    $gg=$riga['giornata'];
    if($se == '1' OR $se=='X'){
        $utili_casa[]=$gg;
    }
}
$q=mysql_query("SELECT * FROM tabella WHERE sq_fuori='$squadra' WHERE anno='$aa' ORDER BY giornata");//seconda query
while($riga=mysql_fetch_array($q)){
    $se=$riga['segno'];
    $gg=$riga['giornata'];
    if($se == '1' OR $se=='X'){
        $utili_fuori[]=$gg;
    }
}
$utili_consecutivi=array_merge($utili_casa,$utili_fuori);
sort($utili_consecutivi);
//conto quanti sono
$sono=count($utili_consecutivi);
$consecutivi=0;
for($k=0; $k<($sono-1); $k++){
    $oggi=$utili_consecutivi[$k];
    $domani=$utili_consecutivi[($k+1)];
    if($domani== ($oggi+1)]){
        $consecutivi++;
    }
}
$utili_casa_anno[$aa]=count($utili_casa);
$utili_fuori_anno[$aa]=count($utili_fuori);
$utili_consecutivi_anno[$aa]=$consecutivi;
}//fine del primo for anno
//altre variabili
$tot_utili_casa=0;
$tot_utili_fuori=0;
$tot_consecutivi=0;
echo "la squadra $squadra ha ottenuto <br />";
for($aa=$anno_ini; $aa <= $anno_fin; $aa++){
	echo "anno $aa utili in casa ".$utili_casa_anno[$aa].", utili fuori casa ".$utili_fuori_anno[$aa].", di cui consecutivi ".$utili_consecutivi_anno[$aa]."<br />";
	$tot_utili_casa+=$utili_casa_anno[$aa];
	$tot_utili_fuori+=$utili_fuori_anno[$aa];
	$tot_consecutivi+=$utili_consecutivi_anno[$aa]
}//fine secondo for anno
echo "per un totale di utili in casa $tot_utili_casa, utili fuori casa $tot_utili_fuori e consecutivi $tot_consecutivi<br />";
?>

puo essere che ci sia qualche sistema migliore e soprattutto più veloce, se mi viene in mente lo posto

p.s.
non so come si chiama esattamente il campi dell'anno nella tua tabella, se divereso da quello che ho messo io nel where modificalo
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
:mad:

cosi stampa tutti gli anni ma nn calcola piu i risultati utili.. anch io ci sto smattando!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prova a
PHP:
<?php
//........
}
$utili_casa_anno[$aa]=count($utili_casa);
$utili_fuori_anno[$aa]=count($utili_fuori);
$utili_casa_anno=array();//perchè devono ripartire da 0
$utili_fuori_anno=array();//perchè devono ripartire da 0
$utili_consecutivi=array();//perchè devono ripartire da 0
$utili_consecutivi_anno[$aa]=$consecutivi;
$consecutivi=0;
}//fine del primo for anno 
//......
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
K Estrazione di più risultati da tabelle correlate PHP 5
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
M Contare totale risultati tabella in un periodo di tempo PHP 5
F stampare a video i risultati della query PHP 1
M Visualizzazione a video risultati query php PHP 0
P Passare i risultati di un foreach in un modal. Help! PHP 2
G eseguire calcoli matematici su risultati 2 tabelle mysql PHP 4
TpD Incolonnare risultati query (mysql_result deprecato...) PHP 3
S come togliere un post dai risultati di google? Supporto Mr.Webmaster 5
M Filtrare risultati con valori checkbox passati con jquery jQuery 2
M [PHP] Mostrare risultati di una tabella ma solo se ID è attivo PHP 0
A [MySQL] Ottenere più risultati in un unico campo MySQL 7
Alex_70 [PHP] Ricerca con risultati cliccabili PHP 21
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
A [PHP] If e Else paginazione ok ci sono risultati no ma avanti lo stesso PHP 15
G [PHP] operazione matematica tra risultati di query PHP 5
Sangy PHP risultati negativi in rosso PHP 2
P Google risultati di ricerca inappropriati SEO e Posizionamento 1
D [PHP] questi risultati in una tabella PHP 4
trattorino [PHP] Risultati dentro array precisi e confrontabili PHP 7
MikSkagit [PHP] Risultati a video sulla stessa riga PHP 12
V [ASP] paginazione-risultati-query-grandi-dimensioni Classic ASP 8
L [PHP] Creare un uploader di file csv xls e ricercare i risultati PHP 0
U [PHP] estrarre i risultati di una query e visualizzarli in una tabella. PHP 9
T Monitorare risultati Google in base alla località e device di ricerca SEO e Posizionamento 0
G Risultati evidenziato dopo ricerca Classic ASP 4
M [PHP] Evidenziare le parole cercate nei risultati di una ricerca PHP 1
filippino Chiavi a corrispondenza inversa per i risultati organici? (Era: come NON farsi trovare con date chia SEO e Posizionamento 4
JackIlPazzo Ritornare risultati query in un array? PHP 1
F Tabella con prima colonna con i risultati di una query PHP 1
ecosito Risultati di Google all'interno di una pagina del sito? HTML e CSS 7
D Mysql ordinamento risultati MySQL 4
otto9due Rand() o mt_rand() per ottenere risultati alternativi.. non uguali per 3 estrazioni. PHP 5
M Paginazione di risultati query mysql PHP 2
D Problema risultati duplicati PHP 5
D [risolto] Problemi di paginazione dei risultati con una determinata query Classic ASP 4
N Raggruppare risultati di due tabelle PHP 1
M Dividere risultati in colonna in base al contenuto PHP 9
alankanz dividere risultati in pagine MySqli PHP 4
alankanz Suddividere risultati MySqli PHP 0
alankanz Estrarre solo risultati numerici MySQL 2
xone Ordinare tramite menù a tendina i risultati di una query già stampati MySQL 0
StarFish [MySQL] Full Text problema rilevanza risultati MySQL 0
L PHP e recupero risultati da query PHP 2
L PHP e recupero risultati da query PHP 11
B Sommare risultati db PHP 3
M Domanda riguardo i risultati della ricerca di google Joomla 14
R visualizzare risultati query utilizzando le funzioni PHP 0
R Ricerca risultati ner raggio di 'n' km da un punto PHP 3
L Dividere risultati per data e pagine diverse PHP 17

Discussioni simili