[PHP] numero progressivo su SELECT

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao a tutti,avrei bisogno del vostro aiuto.
Tramite una SELECT DISTINCT ottengo un'elenco filtrato dei valori di una colonna.
Ora avrei la necessità di ordinare questi valori per poi elaborarli uno a uno nell'ordine tramite un ciclo while e poi con mysqli_fetch_array.
Esempio
ottengo la seguente colonna e dovrei assegnare le relative priorità
fdgfdg ---> 5
fdgdg ---> 4
vzzdfd ---> 2
ddfsdfsf ---> 1
gdgdfd ---> 3

Vorrei ottenere il tutto ordinato progressivamente
ddfsdfsf 1
vzzdfd 2
gdgdfd 3
fdgdg 4
fdgfdg 5

E' possibile farlo direttamente con la SELECT e poi con ORDER?
 

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao innanzitutto grazie per la cortese risposta.
L'esempio è puramente indicativo.
Ho la colonna nomi che dopo la SELECT DISTINCT mi dà come risultato
Pippo
Luigi
Mario
Franco

Io devo assegnare un'ordine,che non è ne matematico ne logico,ne alfabetico.
Con la select posso ordinarli in ordine alfabetico,io però dovrei aggiungere una colonna a questi nomi con un numero progressivo.Vorrei farlo sulla tabella però andrei a scrivere lo stesso numero ripetuto tantissime volte e mi sembra poco corretto.Sbaglio? esiste un'altro metodo?
in questo esempio parla prorpio di quello di cui ho bisogno
https://informatizzati.org/informatica-generale/lista-di-record-da-query-con-numero-progressivo.html
però non sò come adattarlo al mio caso
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Io devo assegnare un'ordine,che non è ne matematico ne logico,ne alfabetico.
un computer applica sempre delle regole che sono modellate nel software
Vorrei farlo sulla tabella però andrei a scrivere lo stesso numero ripetuto tantissime volte e mi sembra poco corretto
mi sembra di capire che non sei in grado di definire come assegnare questa priorità neppure in modo "manuale"

se non è possibile definire una regola, mi sembra non si possa addivenire a nessuna soluzione,
prova a spiegare meglio che dati stai trattando (magari con un esempio concreto) e qual'è lo scopo per cui lo fai

fdgfdg ---> 5
fdgdg ---> 4
vzzdfd ---> 2
ddfsdfsf ---> 1
gdgdfd ---> 3

con che criterio associ la sequenza numerica agli elementi selezionati ?

forse che la regola è data dalla sequenza di inserimento nel db e quindi l' "id" (autoincrement) di fatto rappresenta la sequenza stessa ?
 
Ultima modifica:
  • Like
Reactions: solari77

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao effettivamente ho fatto un po' di confusione.
Io ho una tabella con dei nomi ed altri dati.
Devo visualizzarli a video con una priorità decisa arbitrariamente da me(capisco che è strano ).
A questo punto però credo che inseriro' nella tabella un campo "priorità" .Parlo di una select distinct che mi restituisce circa 30 nominativi(in totale saranno 400),quindi non credo di appesantire troppo il DB,almeno spero.
Però data la particolaristici della mia richiesta non credo ci sia altro da fare.
Grazie comunque
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
A questo punto però credo che inseriro' nella tabella un campo "priorità"
capita di avere situazioni dove l'utente deve inserire una priorità/sequenza perché non è ricavabile da nessuna delle informazioni presenti, quindi ...
Cattura.PNG
 

solari77

Utente Attivo
6 Ott 2016
119
1
18
Ciao e grazie ancora per le cortesi risposte.
Non capisco quello che mi hai indicato...il "sequenza di stampa".
Dove lo trovo?Cos'è esattamente?
Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
non è nulla di particolare, solo sottolineare che non essendoci regole, rimane solo l'attribuzione manuale (sequenza/priorità/posizione) ed ho ripreso un frammento di un'applicazione reale
 
  • Like
Reactions: solari77

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per divertimento ho provato, considerando di avere una tabella del tipo:
Codice:
id int(6) autoincrement primarykey
nome varchar (50)
posizione int(6) default 0
]al primo inserimento di un utente
PHP:
//connessione
$nome=$_POST['nome'];
$query=mysqli_query($conn,"SELECT max(posizione) as ultimo FROM tabella");//leggo la posizione massima registrata
$r=mysqli_fetch_assoc($query);
$pos=(int)($r['ultimo']+1);
$query=mysqli_query($conn,"INSERT tabella(nome,posizione) VALUES('$nome',$pos)");
//l'ultimo utente inserito viene inserito come ultima posizione
poi per cambiare posizione ad un utente
form per cambio:
PHP:
//connessione
$query=mysqli_query($conn,"SELECT max(posizione) as ultimo FROM tabella");//oppure da precedente
$r=mysqli_fetch_assoc($query);
$pos=(int)($r['ultimo']);
$query=mysqli_query($conn,"SELECT * FROM tabella ORDER BY nome");// o order by posizione, nome
echo "<form....>";
while($riga=mysqli_fetch_assoc($query)){
    $id=$riga['id'];
    $nome=$riga['nome'];
    $posto=$riga['posizione'];
    //un po di js per inviare al insert della nuova posizione
    //in modo da esegure un cambio alla volta (secondo me si evitano errori)
    echo "<input name=\"id\" type=\"hidden\" value=\"$id\">";
    echo "spostare $nome da $posto a: <input type=\"number\" name=\"pos\" min=\"1\" max=\"$pos\">";
}
echo "</form>";
script per cambio posizione
PHP:
//connessione
$id=$_POST['id'];
$nuova_pos=$_POST['pos'];
//uppo la nuova posizione per l'utente
$query=mysqli_query($conn,"UPDATE tabella SET posizione=$nuova_pos WHERE id=$id");
//riaggiusto le varie posizioni scalando gli utenti con posizione maggiore dell'inputata
$query=mysqli_query($conn,"UPDATE tabella SET posizione=posizione+1 WHERE posizione>=$nuova_pos AND id !=$id");
dato la possibilità di eliminare un utente potrebbe succedere che si formi un buco tra una posizione e la successiva, quindi riordino ogni tanto o quando elimino l'utente, la tabella
PHP:
//connessione
//ho eliminato un utente e quindi riordino
$query=mysqli_query($conn,"SELECT id FROM tabella ORDER BY posizione ASC");
$p=1;
while($riga=mysqli_fetch_assoc($query)){
    $id=$riga['id'];
    $riordina=$qu($conn,"UPDATE tabella SET posizione=$p WHERE id=$id");
    $p++;
}
potrebbe andare per ordinamento arbitrario e soggettivo?
 
Discussioni simili
Autore Titolo Forum Risposte Data
T PHP+MYSQL: stampare record con numero progressivo PHP 3
B ciclo in PHP per creare numero progressivo PHP 2
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
A [PHP] calcolo numero di ore effettuate PHP 7
S [PHP] Convertire un orario in un numero decimale PHP 2
M [PHP] Visualizzare un array partendo dal numero 1 e non 0 PHP 5
N [PHP] Conversione di un numero in ore PHP 2
C [PHP] Numero in formato 1e-5 PHP 0
L [PHP] Problema creazione query a numero di parametri variabile PHP 6
M [PHP] Numero telefonico cliccabile preso dal db PHP 3
xone [PHP] Contare numero dei giorni tra data_in e data_out PHP 11
A [PHP] Creare numero ticket casuale PHP 5
S [PHP] estrarre numero da stringa PHP 5
ANDREA20 [PHP] Numero ordine PHP 15
S [RISOLTO]php contare numero delle query PHP 1
P Analizzare alcune cifre di un numero in php PHP 2
I Recupero numero file uploadati php PHP 1
M formattare numero come valuta euro con PHP PHP 1
T programma php divisori di u numero PHP 11
V Aiuto PHP restiture una risposta in base al numero visitatore PHP 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0

Discussioni simili