Divisione di una query e resto della divisione

Monital

Utente Attivo
15 Apr 2009
778
2
18
Buongiorno a tutti e Buone feste passate e future a tutti gli utenti,

scrivo epr un piccolo quesito che forse tanto piccolo non è

dovrei dividere il risultato di una query in fasce dove però sia il numero di face che il numero del count mi sono ignoti ma sono sotto forma di variabili.

Senza tanti giri di parole ho questo codice

PHP:
$dati_totali=array();
$sql = ("SELECT * FROM tabella ORDER BY nome");  
$result = mysql_query($sql) or die("Query fallita1: " . mysql_error() );
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
$nome=$row['nome'];	
$punti=$row['punti'];
$dati_totali[]= array('nome'=>$nome,'pt'=>$punti);

}
$array= array_msort($dati_totali, array('pt'=>SORT_DESC));

in questa maniera ho un array con tutti i nomi e tutti i punti per ogni nome, ordinate per punti

con count($array) risalgo al numero dei nomi presenti ad esempio 21, poi da un'altra query mi arriva il numero epr cui devo dividere le fasce ad esempio 7 in funzine dei punti

quindi ho 24 nomi e 7 fasce come faccio?

in pratica devo fare 24/7 dove mi deve assegnare la

- fascia 1 ai primi 3
- fascia 2 dal 4 al 6
- fascia 3 dal 7 al 9
- fascia 4 dal 10 al 12
- fascia 5 dal 13 al 15
- fascia 6 dal 16 al 18
- fascia 7 dal 19 all'ultimo

diciamo che forse forse sapreia nche come dividere epr 3 etc. però resto al palo con ciò che avanza dalla divisione

suggerimenti?
 
Ultima modifica di un moderatore:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
sostituisci
$sql = ("SELECT * FROM tabella ORDER BY punti DESC");
inutile ordinare per nome se ti serve un ordinamento diverso

ho già poche idee di mio ma, ogni tanto mi vengono anche ben confuse ...

provo a capire, vuoi dividere le persone in fasce da 'N' (es. 3) in funzione dei punti
ora se hai un numero di persone superiore a 'N' che ha punteggio uguale come le vuoi dividere ?

la query che segue (MS SQL) restituisce due contatori uno ascendente ed uno discendente
in funzione dei punti
SELECT nome
, punti
, ROW_NUMBER() OVER (ORDER BY punti ASC) AS nr_asc
, ROW_NUMBER() OVER (ORDER BY punti DESC) AS nr_desc
FROM tabella
order by punti DESC
all'interno di questa si può derivare la fascia ma,

magari con qualche informazione più chiara su cosa vuoi fare ti si può aiutare meglio
ciao
Marino
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Si bè effettivamente mi bastava ordinare per i punti, a volte le cose semplici sono sotto gli occhi. cmq aldilà di questo ho modificato il codice creando un array avente i nomi come indici e i punti come valore

detto ciò

io ho un numero di tot fasce che mi deriva da un altra query ipotizziamo 7

ora le fasce devono essere sempre 7 aldilà del numero totale dei nomi e fin qua ci sono arrivato su divisioni a numero intero usando array_chunk

PHP:
$fas=$count($nomi/7);
foreach($punti as $keyA=>$pt){
$new[]=$keyA; //creo un multi array
}

$new_array=array_chunk($new, $fas);///


for($x=0;$x<=7;$x++){
	foreach($new_array[$x] as $NOMI){
	$nx=$x+1;//la nuova chiave incomincia da 0 perchè ho usato 
	echo "<pre>";
	echo $sq."-".$nx;
	echo "</pre>";
	}
}

cosi ottengo i nomi ordinati per punteggio in gruppi da 4 per 7 fasce.

Il problema nasce sui numeri non divisibili dove ad esempio invece di 28 nomi ne ho 29

quindi mi deve creare 6 fasce da 4 nomi e 1 fascia da 5 nomi

e viceversa se ho 26 nomi mi deve creare 6 fasce da 4 nomi e 1 fascia da 2 nomi

se ho 22 nomi deve crearmi la prima fascia da 4 e le successive 6 da 3.
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
dato il numero dei gruppi da creare : Ngruppo

contiamo le righe totali da raggruppare : Rtot

calcoliamo il numero massimo di righe x gruppo : Rmax = ARROTONDA(Rtot/Ngruppo+0,4999999;0) (ovviamente intero)

ciascuna riga della tabella ha un indice progressivo : Iprog, da 1 a Rtot

il gruppo di appartenenza è calcolato con : Gruppo = 1+INT((Iprog-1)/Rmax)

ti posto il risultato excel con esempi di Ngruppo da 2 a 10

spero che qualche mente più giovane trovi una soluzione più ... carina

ciao
marino
Cattura.PNG
 
Discussioni simili
Autore Titolo Forum Risposte Data
elpirata [PHP] Arrotondare risultato di una divisione con round PHP 4
K Visualiuzzare 0 al posto di #Errore in una divisione Database 3
N [PHP] Lunghezza celle tabella dopo divisione dati query in pagine PHP 0
M Divisione in blocchi PHP 3
M Partitioning o divisione in più tabelle? MySQL 1
C Risultato della divisione PHP 1
F Problema divisione smiles aggiuntivi per pagine Javascript 1
G Ricerca personale per divisione programmatori -Bergamo Offerte e Richieste di Lavoro e/o Collaborazione 0
M Divisione in Pagine PHP 1
G semplice divisione Classic ASP 2
T divisione in pagine... PHP 0
P C# Salvare una colonna del DataGridView XML 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
M Leggere in un report il valore di una casella combinata di una maschera Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
S [VB.NET]: Coordinate immagini dentro una PictureBox Visual Basic 0
I stampare una stringa echo PHP 2
MarcoGrazia Riprendere una sessione interrotta PHP 0
L Rendere una parte trasparente Photoshop 3
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
K Visualizzare del html responsive in una Webview Sviluppo app per Android 0
otto9due Ordinare option di una select Javascript 5
N Come si crea una variabile dinamica da incrementare? Javascript 1
L Eliminazione di una pagina dalla gallery SEO e Posizionamento 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
L Riempimento di una tabella al click di un bottone Javascript 1
R Variabile non risconosciuta dentro una funzione PHP 1
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
A media degli elementi estratti da una query MySQL 0
spider81man Eliminare primo ed ultimo carattere di una colonna MySQL 0
pacemattia408 disattivazione di una function Javascript 4
G Eliminare l'effetto refresh di una pagina internet PHP 8
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
M Select Option dentro una Table jQuery 2
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
E Scrivere una data corrente in un pdf PHP 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
I Assegnare dati fetch request ad una variabile globale Javascript 0
Shyson Puntare ad una sotto directory WordPress 3
Stex1967 Salvare una immagine che si trova su porta TCP 8080 di altro sito PHP 7
S Selezionare ultimo record di una sotto query MySQL 27
V Query per una somma PHP 2
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
L salvare una immagine elaborata in canvas Javascript 1
L salvare una immagine elaborata in canvas Javascript 1
W visualizzare solo file html e sottocartelle di una cartella PHP 1
W Elenco dei link del file presenti in una cartella PHP 2
R Mettere in sicurezza una comunicazione .NET Framework 0
L Creare una forma geometrica Photoshop 1

Discussioni simili