come creare un sistema ranking tra due tabelle (TOMBOLA/BINGO)

francesco_cri

Nuovo Utente
9 Gen 2016
4
0
0
buongiorno a tutti, sono nuovo del forum e girovagando mi sono accorto che contiene molte dritte interessanti..e subito mi precipito per chiedere aiuto se qualcuno conoscesse la soluzione per il mio dilemma..

sto sviluppando un GESTIONALE BINGO TOMBOLA in PHP e JAVASCRIPT e pur essendo quasi alla fine mi manca solo da creare un sistema che mostri in PHP in ordine tramite QUERY MYSQL, l'ID delle cartelle che sono più in vantaggio (cioè quella che ha più numeri presenti dentro la tabella ESTRAZIONE in ordine di quella con più e meno numeri)..

SEMPLICE? IO NON RIESCO..E' POSSIBILE?


ho un mysql con due tabelle

Tabella "ESTRAZIONE" con all'interno i campi ID e NUMERO_ESTRATTO
Tabella "CARTELLE" con all'interno i campi ID e C1,C2,C3,C4,C5 ecc.. fino a C27

Grazie mille

:crying:
:crying:
:crying:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
può darsi che mi sbagli ma penso che tu non possa risolvere il problema tramite una querry ma ti serva uno script php
ti spsto nella sezione php (se qualcuno risolve solo con una query ti riporto in mysql)
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Tabella "ESTRAZIONE" con all'interno i campi ID e NUMERO_ESTRATTO
Tabella "CARTELLE" con all'interno i campi ID e C1,C2,C3,C4,C5 ecc.. fino a C27

forse ...
Codice:
select a.id as id, sum(a.counter) as counter from
(
select CARTELLE.id as id, 1 as counter from CARTELLE, ESTRAZIONE where C1 = NUMERO_ESTRATTO union
select CARTELLE.id as id, 1 as counter from CARTELLE, ESTRAZIONE where C2 = NUMERO_ESTRATTO union
select CARTELLE.id as id, 1 as counter from CARTELLE, ESTRAZIONE where C3 = NUMERO_ESTRATTO union
....
select CARTELLE.id as id, 1 as counter from CARTELLE, ESTRAZIONE where C26 = NUMERO_ESTRATTO union
select CARTELLE.id as id, 1 as counter from CARTELLE, ESTRAZIONE where C27 = NUMERO_ESTRATTO
) a
group by id
order by counter desc, id

ma la scorsa notte ho dormito male, con qualche problema di stomaco, per cui se non funziona .... pazienza
 

francesco_cri

Nuovo Utente
9 Gen 2016
4
0
0
ciao innanzitutto grazie per la tua disponibilità e cortese risposta con tutto il mal di stomaco che spero sia passato.
:rolleyes:

ho provato il codice, sembra che sia proprio quello che cerco ma il problema è che i numeri delle cartelle vengono elencati in ordine per esempio (7001,7002,7003,7004, ecc...) anzichè nell'ordine decrescente cioè la cartella che ha più numeri presenti dentro la colonna NUMERI_ESTRATTI dovrebbe essere vista in alto a tutte...ti posto il codice:

PHP:
<?php
header("Refresh: 2");
require "config.php.inc";
$conn = new mysqli($linkdata, $username, $password, $database);
$sql = "
select a.NUMERO_CARTELLA as NUMERO_CARTELLA, sum(a.counter) as counter from
(
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C1 = NUMERO_ESTRATTO union
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C2 = NUMERO_ESTRATTO union
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C3 = NUMERO_ESTRATTO union
eccc...
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C27 = NUMERO_ESTRATTO
) a
group by NUMERO_CARTELLA
order by counter desc, NUMERO_CARTELLA
";
$result = $conn->query($sql);
if ($result->num_rows > 0) {while($row = $result->fetch_assoc()) {
$NUMERO_CARTELLA = $row["NUMERO_CARTELLA"];
ECHO $NUMERO_CARTELLA."<BR>";
}}
$conn->close();
?>

(HO SOSTITUITO IL CAMPO ID DELLE CARTELLE CON IL CAMPO NUMERO_CARTELLA)

Grazie mille e buona giornata
Francesco.
 

francesco_cri

Nuovo Utente
9 Gen 2016
4
0
0
ho provato ha eliminare la dicitura:

PHP:
group by NUMERO_CARTELLA
order by counter desc, NUMERO_CARTELLA

ma il ranking non è corretto, in pratica quando nella colonna NUMERI_ESTRATTI ci sono tutti i numeri (più un valore vuoto poichè alcuni campi della cartella sono vuoti) della cartella, l'ordine non è più come prima ma comunque non in ordine di ranking.

sembra impossibile da realizzare
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
PHP:
<?php
header("Refresh: 2");
require "config.php.inc";
$conn = new mysqli($linkdata, $username, $password, $database);
$sql = "
select a.NUMERO_CARTELLA as NUMERO_CARTELLA, sum(a.counter) as counter from
(
select a.NUMERO_CARTELLA as NUMERO_CARTELLA, sum(a.counter) as counter from
(
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C1 = NUMERO_ESTRATTO union
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C2 = NUMERO_ESTRATTO union
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C3 = NUMERO_ESTRATTO union
...
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C27 = NUMERO_ESTRATTO
) a
group by a.NUMERO_CARTELLA
order by sum(a.counter) desc, a.NUMERO_CARTELLA
";
$result = $conn->query($sql);
if ($result->num_rows > 0)
    {
    $RANK = 0;
    $OLD_COUNTER = 0;
    while($row = $result->fetch_assoc())
        {
        $COUNTER = $row["counter"];
        $NUMERO_CARTELLA = $row["NUMERO_CARTELLA"];
        if ($COUNTER != $OLD_COUNTER) ++$RANK
        $OLD_COUNTER = $COUNTER;
        ECHO $RANK." - ".$COUNTER." - ".$NUMERO_CARTELLA."<br />";
    }   }
$conn->close
dovrebbe darti il rank,
in ms sql esiste la funzione "rank" ma non conosco mysql e non so se esiste altrettanto
prova e fai sapere
se dovessero esserci ancora problemi, essendo lungo costruire un esempio, per favore posta i record (zip) che usi per le tue prove
ciao
Marino
 

francesco_cri

Nuovo Utente
9 Gen 2016
4
0
0
ciao ho cercato informazioni sulla funzione rank ma a quanto pare non è fattibile in queste circostanze, in pratica quella funzione va a prendere quanti elementi per colonna..qui si parla di contare gli elementi in 27 campi diversi quanti essi siano nella colonna NUMERI_ESTRATTI sita in altra tabella e mettere in alto il numero della cartella che possiede più campi all'interno della colonna NUMERI_ESTRATTI..

ho provato il codice e non funziona..ho apportato qualche correzione ovviamente e ancora non riesco..ho provato in tutti i modi..il discorso del COUNTER dentro l'sql mi è sembrata davvero una buona idea e infatti mi sa proprio che è il conuter che appunto non conta come si deve..o forse è il php che non conta bene..

HELP :dipser:

PHP:
 <?php
header("Refresh: 2");
require "config.php.inc";
$conn = new mysqli($linkdata, $username, $password, $database);
$sql = "
select a.NUMERO_CARTELLA as NUMERO_CARTELLA, sum(a.counter) as counter from
(
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C1 = NUMERO_ESTRATTO union
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C2 = NUMERO_ESTRATTO union
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C3 = NUMERO_ESTRATTO union
...
select CARTELLE.NUMERO_CARTELLA as NUMERO_CARTELLA, 1 as counter from CARTELLE, ESTRAZIONI where C27 = NUMERO_ESTRATTO
) a
group by a.NUMERO_CARTELLA
order by sum(a.counter) desc, a.NUMERO_CARTELLA
";
$result = $conn->query($sql);
if ($result->num_rows > 0)
    {
    $RANK = 0;
    $OLD_COUNTER = 0;
    while($row = $result->fetch_assoc())
        {
        $COUNTER = $row["counter"];
        $NUMERO_CARTELLA = $row["NUMERO_CARTELLA"];
        if ($COUNTER != $OLD_COUNTER) {++$RANK;}
        $OLD_COUNTER = $COUNTER;
        ECHO $RANK." - ".$COUNTER." - ".$NUMERO_CARTELLA."<br />";
    }   }
$conn->close();
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
forse è una put...ta, potresti provare questo (ove posso preferisco usare la via script che via query a mysql a mio parere meno manutentibile e//o modificabile) anche se non so se funziona perchè non mi sono fatto il db e quindi non l'ho provato
PHP:
<?php
//.....
$tot=array();
$q_cart=mysqli_query($conn,"SELECT * FROM cartelle");
while($cart=mysqli_fetch_array($q_cart, MYSQL_ASSOC)){
	$num_cart=$cart['numero_cartella'];
	$q_estr=mysqli_query($conn,"SELECT * FROM estrazione");
	while($estratto=mysqli_fetch_array($q_estr, MYSQL_ASSOC)){
		for($k=1; $k<=27; $k++){
			$campo="C".$k;
			if($cart[$campo]==$estratto['numero_estratto']){$tot[$num_cart]++;}
		}
	}
}
sort($tot);
foreach($tot as $cartella => $trovati){
	echo "la cartella $cartella ha $trovati numeri presenti<br>";
}
//.....
?>
se non funzia butta via tutto
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Come creare sistema Add to homescreen PHP 3
R [PHP] Creare sistema random PHP 3
S Creare Sistema di API Request e Response libero e protetto PHP 7
L creare sistema multi categorie MySQL 18
P Creare un sistema di alert PHP 6
E Creare un testo trasparente dietro un div HTML e CSS 5
M Creare traccia di download file sul server HTML e CSS 2
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
L Creare ancore interne alla pagina PHP 1
I Creare un banner temporaneo JavaScript Javascript 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
simgia Cordova errore quando cerco di emulare o creare la app Sviluppo app per Android 2
U PHP creare un file excel dopo ricerca nel DB PHP 0
A Creare un cronometro PHP 5
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 3
Shyson Modificare codice e creare link PHP 0
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
S Libreria PHP per creare file dwg o dxf PHP 0
L Creare un countdown con giorno specifico della settimana PHP 3
W Creare link di una dato Classic ASP 0
W creare file .jar Java 2
M Creare con il Vb 2010 Il Classico Notes di Windows Vista Visual Basic 1
MarcoGrazia Creare una password Snippet Javascript 0
J creare pagina php di prenotazione PHP 5
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
INTEROPERABILITY Sviluppatrice/formatrice creare APP Offerte e Richieste di Lavoro e/o Collaborazione 0
L Creare una pagina pre-home WordPress 1
G Creare side-bar non visibile da dispositivi mobile HTML e CSS 0
L creare oggetti da una classe tramite un form Javascript 0
Web93 CREARE SITO WEB COMICS CON WORDPRESS WordPress 0
maxnegri Contare sessioni aperte e creare condizione PHP 1
A Come creare pulsante donazione PayPal HTML e CSS 5
L [CERCO] Creare blog su WordPress con tema Divi Offerte e Richieste di Lavoro e/o Collaborazione 3
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
R [Photoshop] Creare Azione Photoshop 1
F [PHP] creare tabella e tasto cerca PHP 3
A Creare con Javascript un percorso all'interno di uno spazio Javascript 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
A [HTML] Creare sito web per eLearnig HTML e CSS 2
R Bootstrap 4 - creare una finestra di testo responsive sopra un Carousel jQuery 1
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
D [PHP] Consigli su come creare form PHP 1
I Creare Qsl radioamatore con testo editabile Presentati al Forum 1
T [PHP] Creare Honeypot per form contatti PHP 10
S [PHP] Creare collegamento filtri di ricerca al database PHP 6

Discussioni simili