[PHP] Recuperare coppia con valori i valori MAX e coppia con valori MIN

Max61

Utente Attivo
2 Mar 2014
705
3
18
Salve, ancora una volta ho bisogno dell'aiuto del forum, come da titolo vorrei in una patita a carte a 4 persone a girare, selezionare la coppia che di volta in volta ha il punteggio maggiore assegnando il valore +1 a ciascun giocatore, mentre alla coppia che ottiene il punteggio minore assegnare il valore -1 a ciascun giocatore.
Es,:
giocatore1, gioca in coppia con il giocatore3, mentre il giocatore2 è in coppia con il giocatore4.
La coppia giocatore1, giocatore3 ottengono il punteggio maggiore quindi:
giocatore1=1
giocatore3=1
giocatore2=-1
giocatore4=-1
e così via per ogni smazzata
io ho fatto una query che calcola i punti per ogni giocatore, però poi non riesco a selezionare la coppia per assegnargli il valore corrispondente (1 o -1)
allego query
PHP:
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4";
$result = mysql_query($query);
if($result) {
$row = mysql_fetch_array($result);
}
come si vede non posso usare la funzione
PHP:
SELECT MAX(nomecampo) FROM tblpartite4";
SELECT MIN(nomecampo) FROM tblpartite4";
perchè i campi calcolati hanno nomi diversi
max_punti_coppia1, max_punti_coppia2, max_punti_coppia3, max_punti_coppia4
Chi sa darmi una mano?
Grazie Max61
 

eraclio666

Nuovo Utente
8 Mag 2015
28
0
1
barletta
Perchè non utilizzi un vettore???
gio[0]= giocatore1
gio[1]=giocatore2 e cosi via...

una volta capito a chi assegnare il punto lo scrivi nel db
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Grazie dell'idea, ma non lo so fare, se hai tempo da perdere...
Grazie comunque
Max61
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Ciao Max61
da quanto ho capito, correggimi se sbaglio, lo scenario che hai sarebbe:
4 giocatori che formano 2 coppie;
coppia A (giocatore1, giocatore3);
coppia B (giocatore2, giocatore4);
per ogni partita:
ad ogni giocatore assegni punti singolarmente;
calcoli poi il punteggio ottenuto da ogni coppia ( punti cA = puntiG1+puntiG3; punti cB = puntiG2 + puntiG4);
assegni +1 ai giocatori della coppia con punteggio maggiore;
assegni -1 ai giocatori della coppia con punteggio inferiore;

assumendo di avere la seguente struttura della tabella DB

id (int) | giocatori (int) | punteggio (int) | partita (int)

per partita n (esempio la numero 2) estraggo i punti di ogni giocatore

PHP:
SELECT punteggio FROM tabella WHERE partita=2 order by giocatori Desc

calcolo il punteggio delle coppie

PHP:
$punti=array();
while ($res=mysql_fetch_array($sql)){
$punti[].=$res[0];
}

$punti_c_A=array_sum(array_filter($punti, function($v){
    return $v % 2 !==0;
}, ARRAY_FILTER_USE_KEY));
echo "<br>coppia A: ".$punti_c_A;
$punti_c_B=array_sum($punti)-$punti_c_A;
echo "<br>coppia B: ".$punti_c_B;

verifico il punteggio maggiore ed eseguo le relative operazioni in base al risultato

PHP:
switch (true) {
case ($punti_c_A>$punti_c_B): echo "vince A";
break;
case ($punti_c_A<$punti_c_B): echo "vince B";
break;
case $punti_c_A==$punti_c_B: echo "patta";
break;
}

nella verifica puoi sostituire gli echo con una funzione di inserimento assegnando gli opportuni valori 1 e -1 ai relativi giocatori
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Mr.X, si, ho 4 giocatori che formano varie coppie
smazzata 1:
coppia A
(giocatore1, giocatore3);
coppia B (giocatore2, giocatore4);
smazzata 2:
coppia A
(giocatore1, giocatore2);
coppia B (giocatore3, giocatore4);
smazzata 3:
coppia A
(giocatore1, giocatore4);
coppia B (giocatore2, giocatore3);
la coppia che ottiene il maggior punteggio ad ogni smazzata assume il valore di 1, mentre la coppia con il punteggio minore, -1.
Il vincitore alla fine delle smazzate è colui che ha ottenuto più punti, non nel gioco ma come partite vinte, quindi per questo serve +1 e -1.
Io non ho previsto il numero di partita, ma vado a sommare i punteggi delle singole partite (smazzate)
Adesso provo il codice che hai postato
Grazie
Max61
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Mr.X, ho cercato di usare il tuo codice, ma mi sono perso, allego quello che ho fatto:
PHP:
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4";
$result = mysql_query($query);
if($result) {
$row = mysql_fetch_array($result);
}
$punti=array();
while ($res=mysql_fetch_array($result)){
$punti[].=$res[0];
}

$coppia1=array_sum(array_filter($punti, function($v){
    return $v % 2 !==0;
}, ARRAY_FILTER_USE_KEY));
echo "<br>coppia 1: ".$max_punti_coppia1;
$coppia1=array_sum($punti)-$max_punti_coppia1;
echo "<br>coppia 2: ".$max_punti_coppia1;

$coppia2=array_sum(array_filter($punti, function($v){
    return $v % 2 !==0;
}, ARRAY_FILTER_USE_KEY));
echo "<br>coppia 2: ".$max_punti_coppia2;
$coppia2=array_sum($punti)-$max_punti_coppia2;
echo "<br>coppia 2: ".$max_punti_coppia2;


$coppia3=array_sum(array_filter($punti, function($v){
    return $v % 2 !==0;
}, ARRAY_FILTER_USE_KEY));
echo "<br>coppia 3 ".$max_punti_coppia3;
$coppia2=array_sum($punti)-$max_punti_coppia3;
echo "<br>coppia 3: ".$max_punti_coppia3;

$coppia4=array_sum(array_filter($punti, function($v){
    return $v % 2 !==0;
}, ARRAY_FILTER_USE_KEY));
echo "<br>coppia 4: ".$max_punti_coppia4;
$coppia4=array_sum($punti)-$max_punti_coppia4;
echo "<br>coppia 4: ".$max_punti_coppia4;

switch (true) {
case ($max_punti_coppia1>$max_punti_coppia2): //echo "vince max_punti_coppia1";
$piu_meno_coppia1 = 1;
$piu_meno_coppia2 = -1;
echo $piu_meno_coppia1;
echo $piu_meno_coppia2;
break;
case ($max_punti_coppia1<$max_punti_coppia2): //echo "vince max_punti_coppia2";
$piu_meno_coppia1 = -1;
$piu_meno_coppia2 = 1;
echo $piu_meno_coppia1;
echo $piu_meno_coppia2;
break;
case $max_punti_coppia1==$max_punti_coppia2: //echo "patta";
$piu_meno_coppia1 = 0;
$piu_meno_coppia2 = 0;
echo $piu_meno_coppia1;
echo $piu_meno_coppia2;
break;
}
switch (true) {
case ($max_punti_coppia1>$max_punti_coppia3): //echo "vince max_punti_coppia1";
$piu_meno_coppia1 = 1;
$piu_meno_coppia3 = -1;
echo $piu_meno_coppia1;
echo $piu_meno_coppia3;
break;
case ($max_punti_coppia1<$max_punti_coppia3): //echo "vince max_punti_coppia3";
$piu_meno_coppia1 = -1;
$piu_meno_coppia3 = 1;
echo $piu_meno_coppia1;
echo $piu_meno_coppia3;
break;
case $max_punti_coppia1==$max_punti_coppia3: //echo "patta";
$piu_meno_coppia1 = 0;
$piu_meno_coppia3 = 0;
echo $piu_meno_coppia1;
echo $piu_meno_coppia3;
break;
}
switch (true) {
case ($max_punti_coppia1>$max_punti_coppia4): //echo "vince max_punti_coppia1";
$piu_meno_coppia1 = 1;
$piu_meno_coppia4 = -1;
echo $piu_meno_coppia1;
echo $piu_meno_coppia4;
break;
case ($max_punti_coppia1<$max_punti_coppia4): //echo "vince max_punti_coppia4";
$piu_meno_coppia1 = -1;
$piu_meno_coppia4 = 1;
echo $piu_meno_coppia1;
echo $piu_meno_coppia4;
break;
case $max_punti_coppia1==$max_punti_coppia4: //echo "patta";
$piu_meno_coppia1 = 0;
$piu_meno_coppia4 = 0;
echo $piu_meno_coppia1;
echo $piu_meno_coppia4;
break;
}
switch (true) {
case ($max_punti_coppia4>$max_punti_coppia3): //echo "vince max_punti_coppia1";
$piu_meno_coppia3 = -1;
$piu_meno_coppia4 = 1;
echo $piu_meno_coppia3;
echo $piu_meno_coppia4;
break;
case ($max_punti_coppia4<$max_punti_coppia3): //echo "vince max_punti_coppia3";
$piu_meno_coppia3 = 1;
$piu_meno_coppia4 = -1;
echo $piu_meno_coppia3;
echo $piu_meno_coppia4;
break;
case $max_punti_coppia4==$max_punti_coppia3: //echo "patta";
$piu_meno_coppia3 = 0;
$piu_meno_coppia4 = 0;
echo $piu_meno_coppia3;
echo $piu_meno_coppia4;
break;
}
ma così mi sa che non funziona bene...
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Riciao Max
mi è un po più chiaro quello che vuoi fare, un po meno quello che hai fatto, probabilmente perchè mi manca la visone d'insieme.
Non sapendo come hai strutturato il db, ti ho postato un schema a singola tabella che ho utilizzato come riferimento.
La colonna "partita" l'ho inserita per isolare i punteggi delle singole partite/smazzate, forse tu hai previsto una tabella per ogni smazzata (diversamente avresti risultati SOMMA non veritieri).

Nel codice precedente non avevo tenuto conto della rotazione delle coppie, per cui la parte che somma i risultati per coppia va modificata, questo mi porta anche a riscrivere la query in modo più compatto..

Di seguito il codice, sperando di aver capito cosa ti serve (mi resta ancora qualche dubbio su come passi il numero di partita,ovvero l'impostazione delle coppie per smazata, e l'assegnazione dei punti partita ad ogni giocatore, immagino tramite un form ma al momento tralasciamo e prendiamo i dati di ogni singolo giocatore per calcolare coppia vincente ed assegnare il "punto vincita")..

La colonna "partita" la usero anche per indicare i "punti vittoria" (1 e -1) settando il valore 0(zero), nessuno ti vieta di salvare questi punti su un'altra tabella..

PHP:
$n_partita="4"; // imposto il numero partita/smazzata in base al qualche calcolo le coppie, imposto poi le variabili che utilizzerò nella query seguente

switch ($n_partita) {
case $n_partita % 3 ==0 : $coppiaA="giocatori=1 OR giocatori=4"; $coppiaB="giocatori=2 OR giocatori=3";
break;
case $n_partita % 3 ==2 : $coppiaA="giocatori=1 OR giocatori=2"; $coppiaB="giocatori=3 OR giocatori=4";
break;
case $n_partita % 3 ==1 : $coppiaA="giocatori=1 OR giocatori=3"; $coppiaB="giocatori=2 OR giocatori=4";
break;
}
echo "<br>";
echo $coppiaA." ".$coppiaB;

//estraggo i punteggi delle coppie in base alla partita impostata
$sql=mysql_query("select SUM(CASE WHEN $coppiaA THEN punteggio END) as coppiaA,
                         SUM(CASE WHEN $coppiaB THEN punteggio END) as coppiaB
                         From tabella WHERE partita=$n_partita");

while ($res=mysql_fetch_array($sql)){
echo "<br>coppiaA: ".$res[0]."<br>";
echo "coppiaB: ".$res[1]."<br>";
}

// ----
echo "<p>-----</p>"; // calcolo il punteggio totale di ogni giocatore (punti di ogni singola partita + punti vittoria)
$sql1=mysql_query("select giocatori, SUM(punteggio) as punteggio_giocatore From tabella group by giocatori order by giocatori");

echo "<p>Totale punti per giocatore</p>";
while ($res=mysql_fetch_array($sql1)){
echo "giocatore: ".$res[0]." punteggio: ".$res[1]."<br>";
}

//---
echo "<p>-----</p>"; // calcolo le partite vinte da ogni singolo giocatore
$sql2=mysql_query("select giocatori, SUM(punteggio) as punteggio_giocatore From tabella where punteggio=1 and partita=0 group by giocatori order by giocatori");

echo "<p>Totale vittorie in coppia per giocatore</p>";
while ($res=mysql_fetch_array($sql2)){
echo "giocatore: ".$res[0]." punteggio: ".$res[1]."<br>";
}

ti copia anche la tebella con i valori che ho utilizzato come riferimento
Codice:
+----+-----------+-----------+---------+
| id | giocatori | punteggio | partita |
+----+-----------+-----------+---------+
|  1 |         1 |         5 |       1 |
|  2 |         2 |         3 |       1 |
|  3 |         3 |         3 |       1 |
|  4 |         4 |         1 |       1 |
|  5 |         1 |         1 |       0 |
|  6 |         2 |        -1 |       0 |
|  7 |         3 |         1 |       0 |
|  8 |         4 |        -1 |       0 |
|  9 |         1 |         1 |       2 |
| 10 |         2 |         1 |       2 |
| 11 |         3 |         2 |       2 |
| 12 |         4 |         3 |       2 |
| 13 |         1 |        -1 |       0 |
| 14 |         2 |        -1 |       0 |
| 15 |         3 |         1 |       0 |
| 16 |         4 |         1 |       0 |
| 17 |         1 |         2 |       3 |
| 18 |         2 |         1 |       3 |
| 19 |         3 |         0 |       3 |
| 20 |         4 |         1 |       3 |
| 21 |         1 |         1 |       0 |
| 22 |         2 |        -1 |       0 |
| 23 |         3 |        -1 |       0 |
| 24 |         4 |         1 |       0 |
| 25 |         1 |         2 |       4 |
| 26 |         2 |         1 |       4 |
| 27 |         3 |         1 |       4 |
| 28 |         4 |         1 |       4 |
| 29 |         1 |         1 |       0 |
| 30 |         2 |        -1 |       0 |
| 31 |         3 |         1 |       0 |
| 32 |         4 |        -1 |       0 |
+----+-----------+-----------+---------+

fammi sapere se nel caso qualcosa non è chiaro o nel caso abbia io frainteso qualcosa
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Mr.X, allora cerco di spiegare la mia idea che può darsi sia tutta sbagliata...
Ogni giocatore gioca 4 smazzate, alla fine delle quali si ottiene il +1 o -1 in base al risultato dei punti. quFa tteeste 4 smazzate io avevo pensato di archiviare le partite con i relativi punteggi, alla fine della rotazione delle coppie dalla tabella archivio faccio le somme e vedo chi ha fatto più punti (+1 e -1). Non so se concettualmente è sbagliato o comunque ci sono metodi migliori per estrapolare i dati.
Dimmi tu quale metodo sarebbe il migliore.
Appena ho 5 minuti provo il tuo codice.
Grazie per la pazienza
Max61
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Mr.X, ho provato ad utilizzare il tuo codice ma mi sono perso perchè i nomi dei campi nella mia tabella sono diversi, per esempio te hai giocatori, coppiaA ecc., forse è meglio se ti allego la tabella...
Grazie ancora
Max61
 

Allegati

  • tblpartite4.zip
    790 bytes · Visite: 78

marino51

Utente Attivo
28 Feb 2013
2.988
173
63
Lombardia
la mia soluzione é solo in sql (credo vada bene anche per access)
Codice:
smazzata | cAgA | cAgB | cBgA | cBgB | PcAgA | PcAgB | PcBgA | PcBgB | sum(PcAgA, PcAgB) | sum(PcBgA, PcBgB) | cA(+1/-1) | cB(+1/-1)

risultato -1 in caso di pareggio ad entrambe le coppie


DECLARE @smazzate Table
(
  smazzata      INT

, cAgA          VARCHAR(10)
, cAgB          VARCHAR(10)
, cBgA          VARCHAR(10)
, cBgB          VARCHAR(10)

, PcAgA         INT
, PcAgB         INT
, PcBgA         INT
, PcBgB         INT

, ScA           INT
, ScB           INT

, RcA           INT
, RcB           INT
)

INSERT INTO @smazzate(smazzata, cAgA, cAgB, cBgA, cBgB, PcAgA, PcAgB, PcBgA, PcBgB, ScA, ScB, RcA, RcB)
SELECT 1, 'g1', 'g2', 'g3', 'g4', 1, 2, 3, 4, 0, 0, 0, 0 UNION ALL
SELECT 2, 'g1', 'g3', 'g2', 'g4', 1, 2, 3, 4, 0, 0, 0, 0 UNION ALL
SELECT 3, 'g1', 'g4', 'g2', 'g3', 1, 2, 3, 4, 0, 0, 0, 0

UPDATE @smazzate SET
  ScA = PcAgA + PcAgB
, ScB = PcBgA + PcBgB

UPDATE @smazzate SET
  RcA = case
        when ScA > ScB then 1
        else -1
        end
, RcB = case
        when ScB > ScA then 1
        else -1
        end

select * from @smazzate

select t.giocatore, sum(t.risultato) as risultato from (
select smazzata, cAgA as giocatore, RcA as risultato from @smazzate union
select smazzata, cAgB as giocatore, RcA as risultato from @smazzate union
select smazzata, cBgA as giocatore, RcB as risultato from @smazzate union
select smazzata, cBgB as giocatore, RcB as risultato from @smazzate
) t
group by t.giocatore
order by t.giocatore

risultato
upload_2019-7-26_23-1-42.png
 
Ultima modifica:

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Marino51, ho provato anche il tuo codice ma mi da un altro risultato

giocatore 1 risultato
0 3
g1 -3
g2 -1
g3 -1
g4 -1
cosa sbaglio?
Uso mysql Versione del server: 10.1.31-MariaDB - mariadb.org binary distribution
e Apache/2.4.29 (Win32) OpenSSL/1.0.2n PHP/5.6.34
Ciao e grazie
 

marino51

Utente Attivo
28 Feb 2013
2.988
173
63
Lombardia
cosa sbaglio?
la tabella é definita allo stesso modo ?
i dati inseriti sono gli stessi ?
il risultato di "select * from @smazzate " é identico a quello che ho pubblicato prima dell'aggregazione finale ?
hai invertito un 1 con -1 o i nomi delle colonne dove viene assegnato il punteggio ?
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Marino51, mi sembra di aver fatto tutto uguale a te tranne la "select * from @smazzate", mysql mi dava errore e togliendola e partendo dalle query successive funzionava. Rimane però il problema che la mia tabella che ho allegato nei post precedenti ha i nomi dei campi completamente diversi, ed io parto da questa query
PHP:
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4";
$result = mysql_query($query);
if($result) {
$row = mysql_fetch_array($result);
}
Grazie per la pazienza
Max 61
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Marino51, ho riprovato da capo il tuo codice inserendo a mano i valori nella tabella perchè non mi fa fare l'update ed il risultato è identico al tuo, ma ripeto l'ultima query che hai postato
PHP:
select * from @smazzate

select t.giocatore, sum(t.risultato) as risultato from (
select smazzata, cAgA as giocatore, RcA as risultato from @smazzate union
select smazzata, cAgB as giocatore, RcA as risultato from @smazzate union
select smazzata, cBgA as giocatore, RcB as risultato from @smazzate union
select smazzata, cBgB as giocatore, RcB as risultato from @smazzate
) t
group by t.giocatore
order by t.giocatore
così com'è non funziona devo togliere la prima select.
Però io parto dai valori che devo recuperare da questa query per calcolare i vari +1 e -1 da assegnare alle varie coppie di giocatori
PHP:
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4";
$result = mysql_query($query);
if($result) {
$row = mysql_fetch_array($result);
}
il problema è tutto qui, non so come fare...
Ciao
Max61
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Ciao Max, ho dato un'occhiata alla struttura del DB che hai alleagato e servirebbe una spiegazione di come utilizzi i campi.
Guardando l'esempio di Marino51 mi è chiaro come ha strutturato la tabella, ma se guardo il la tua mi è un po meno chiaro capire i vavri basecoppia, totalecoppia....
ad ogni modo se i valori che devi recuperare dalla seguente query

PHP:
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4";
$result = mysql_query($query);
if($result) {
$row = mysql_fetch_array($result);
}
il problema è tutto qui, non so come fare...
Ciao
Max61

sono il valore massino e quello minimo tra max_punti_coppia{1,2,3,4}
puoi provare in questo modo:

PHP:
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4";
$result = mysql_query($query);
if($result) {
while ($row = mysql_fetch_array($result)){
$punti=array();
for ($i=4; $i<8; $i++){
$punti[].= $row[$i];
echo "max_punti_coppia_".($i-3) .": ".$row[$i]."<br>";}
}
echo "punteggio min: ".max($punti);
echo "<br>punteggio min: ".min($punti);
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Perfetto, ci siamo quasi ad ottenere quello che intendevo, a questo punto è possibile ottenere i nomi delle 2 coppie (giocatori) con punteggio maggiore e minore ed assegnare loro i rispettivi 1 e -1 da archiviare in altra tabella dove poi farò la somma?
Dopo
PHP:
echo "punteggio min: ".max($punti);
echo "<br>punteggio min: ".min($punti);
Tipo
nome della coppia1 = 1
nome della coppia4 = 1
nome della coppia3 = -1
nome della coppia2 = -1
P.s. coppia è improprio, perché intendo il nome del giocatore, ma ormai nella tabella il singolo giocatore l'ho chiamato così, poi provvedo a cambiare il nome del campo.
grazie
Max61
 
Ultima modifica:

mr.x

Utente Attivo
9 Apr 2016
252
25
28
PHP:
$where='where id=(select MAX(id) from tblpartite4)';
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4 $where";
$result = mysql_query($query);

if($result) {
while ($row = mysql_fetch_array($result)){
$punti=array();
for ($i=4; $i<8; $i++){
$punti[].= $row[$i];
echo "punti_giocatore".($i-3) .": ".$row[$i]."<br>";}

$gax=array_keys($punti,max($punti));
$gmax=$gax[0];
$gin=array_keys($punti,min($punti));

echo "punteggio max: ".max($punti). " giocatore → ".$row[$gax[0]];
echo "<br>punteggio min: ".min($punti). " giocatore → ".$row[$gin[0]];

$n_=mysql_fetch_array(mysql_query( "SELECT count(*) as found_rows FROM tblpartite4;"));

$n_partita=$n_[0];
switch($n_partita) {
case $n_partita % 3 ==0 : $A=array(0,3); $B=array(1,2);
break;
case $n_partita % 3 ==2 : $A=array(0,1); $B=array(2,3);
break;
case $n_partita % 3 ==1 : $A=array(0,2); $B=array(1,3);
break;
}

$coppiaA=($punti[$A[0]] + $punti[$A[1]]);
$coppiaB=($punti[$B[0]] + $punti[$B[1]]);

echo "<br>punteggio coppiaA: ".$coppiaA;
echo "<br>punteggio coppiaB: ".$coppiaB."<br>";
if ($coppiaA != $coppiaB){
$bonus=($coppiaA > $coppiaB) ? $row[$A[0]]." =  1<br>" .$row[$A[1]]." =  1<br>" .$row[$B[0]]." = -1<br>". $row[$B[1]]. " = -1" : $row[$A[0]]." = -1<br>" .$row[$A[1]]." = -1<br>" .$row[$B[0]]." =  1<br>". $row[$B[1]]. " =  1";
echo "<p>".$bonus;
}else echo "patta";
}
}
 

marino51

Utente Attivo
28 Feb 2013
2.988
173
63
Lombardia
scusa Max, ma, devi cambiare i nomi delle colonne, devi creare una seconda tabella,
perché non vuoi considerare l'uso di una sola tabella come l'ho definita,
aggiungendo una data e/o un id del torneo che possano identificare (raggruppare) le smazzate ?
ti diventa tutto più semplice,
si dovrà adattare l'ultima query alla sintassi di mysql
ma poi vedi tu ….
upload_2019-7-29_20-32-43.png
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Mr.X , ho provato il tuo codice facendo girare le coppie ma il risultato non sempre è corretto.

Coppia1 = 1000 1
Coppia3 = 1000 1
Coppia2 = 500 -1
Coppia4 = 500 -1, conta bene

Coppia1 = 500 1
Coppia3 = 500 1
Coppia2 = 1000 -1
Coppia4 = 1000 -1, conta bene

Coppia1 = 1000
Coppia2 = 1000
Coppia3 = 500
Coppia4 = 500, mi da patta, invece hanno vinto la 1 e la 2

Coppia1 = 500 -1
Coppia2 = 500 1
Coppia3 = 1000 -1
Coppia4 = 1000 1, errata la 1 la 3

Coppia1 = 500
Coppia4 = 500
Coppia2 = 1000
Coppia3 = 1000, mi da patta, invece hanno vinto la 2 e la 3
 

Max61

Utente Attivo
2 Mar 2014
705
3
18
Ciao Marino, fammi capire meglio, perché io arrivo a 1 e -1 dopo il conteggio di questa query
PHP:
$query = "SELECT coppia1, coppia2, coppia3, coppia4,
                 (SUM(basecoppia1) + SUM(punticoppia1)) AS max_punti_coppia1,
                 (SUM(basecoppia2) + SUM(punticoppia2)) AS max_punti_coppia2,
                 (SUM(basecoppia3) + SUM(punticoppia3)) AS max_punti_coppia3,
                 (SUM(basecoppia4) + SUM(punticoppia4)) AS max_punti_coppia4 FROM tblpartite4";
$result = mysql_query($query);
if($result) {
$row = mysql_fetch_array($result);
}
Altrimenti non ho capito cosa intendi
 
Discussioni simili
Autore Titolo Forum Risposte Data
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
S [PHP] recuperare determinato elemento con lo scraping PHP 1
A [PHP] Recuperare indice per inserirlo in un'altra tabella PHP 4
P [PHP] Recuperare dati da una <select> PHP 4
S [PHP] recuperare dato da una tabella PHP 4
N [PHP] recuperare dati da db PHP 4
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
F Recuperare dati json con php PHP 2
F Recuperare una stringa in formato json con php PHP 0
Metazoo Recuperare variabile php da javascript senza aggiornare pagina PHP 5
S [PHP] Recuperare dato esatto tabella PHP 16
J Recuperare variabili da php a java Javascript 2
V Recuperare dati utente joomla 3 in file php esterno Joomla 0
D [php/ios] Recuperare dati da targa auto PHP 0
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14
N file manager da php 5 a 7 PHP 15
M Utilizzare la funzione mysql_num_rows() in PHP 5 PHP 3
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11
N Mysql_result per PHP 7 PHP 2
Emix Select concatenate php sql ajax PHP 2
P Modifica con PHP di un node in una sitemap xml PHP 0
D Come usare funzione php PHP 6

Discussioni simili