Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-10-2014, 13:05   #1
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
[PHP] Tabella dati ridondanti. Come eliminarli?

Buongiorno,
ho una tabella con dei dati che stampo tranquillamente.
Sono tutti record unici e indipendenti, ma ogni tanto una riga è vincolata a quella immediatamente dopo avendo una parte di dati comuni e altri in più.
Quando stampo, stampo tutto, quindi in quei casi in cui ci sono rihhe dipendenti a due a due, ho una ridondanza di informazioni.
Il punto è che non ho trovato un modo per stampare solo la riga che contiene tutte le info (quelle comuni e quelle esclusive). avete una idea?

Grazie.
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2014, 15:39   #2
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Ecco un es.:


...
5- 01 8:00 I CASA 0
4- 01 7:50 I CASA 1
3- 01 7:50 I CASA 0

2- 01 7:45 I CASA 0
1- 01 7:30 I CASa 0
...

In pratica, le righe 3 e 4 dovrebbero essere unificate, perché è una ripetizione inutile!
Il punto è che una volta stampata la 3, solo dopo mi "accorgo" della 4 (è un array), cioè del fatto che sono due righe da unire! Solo che ormai la 3 è stampata in tabella e non riesco più a farci nulla!

Chiaro più o meno?
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2014, 20:05   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Non si capisce molto dall'esempio in questione. Comunque, io penso che non puoi far dipende una riga dalla riga successiva, è una cosa che non ha senso. Puoi avere solo dati che dipendono da altri dati all'interno della riga stessa, al massimo. Probabilmente devi solo splittare quella tabella in due tabelle, ma non avendo capito l'esempio non riesco ad aiutarti più di così. Comunque credo sia un problema di design del database, non lo risolverei tramite PHP.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2014, 20:31   #4
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Non ha senso? I dati sono quelli, non si scappa! Il mio approccio è sicuramente errato, perché una volta stampata una riga no posso fare più nulla a quei dati e quindi la riga dopo per forza è ridondante! Splittare le tabelle potrebbe essere una soluzione, ma non proprio semplice... I dati li leggo tramite php, perché il db si popola in un'altra fase.

Inviato da Huawei mobile
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2014, 09:01   #5
airon
Senior Member
 
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
Ciao,

scusa ma quale è il campo che ti permette di capire se aggregare o no? Intervieni sul quello durante il primo print...ti metti tutto in un array temporaneo e stampi poi quello se hai aggregato o meno...
airon è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2014, 09:25   #6
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Quote:
Originariamente inviato da airon Guarda i messaggi
Ciao,

scusa ma quale è il campo che ti permette di capire se aggregare o no? Intervieni sul quello durante il primo print...ti metti tutto in un array temporaneo e stampi poi quello se hai aggregato o meno...
Il valore "1" dopo CASA nella riga 4.
Questo mi fa capire che la precedente (3) e la corrente (4) devono essere unite.
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2014, 11:25   #7
airon
Senior Member
 
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
Beh ma allora è più facile di come pensi:
leggi la prima riga dal DB e la metti in un array con due righe...leggi la seconda e la metti nell'array, confronti il valore 0 , 1. Se nella seconda riga del tuo array di stampa c'é 1 aggreghi se no stampi le due righe. Resetti l'array e continui così per tutti i record del DB.
airon è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2014, 16:53   #8
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Secondo me è sbagliato risolvere da Php. Risolvi ma avrai della computazione in più per nulla, che se il db fosse a posto non avresti. Senza contare i dati ridondanti nel db appunto.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2014, 22:30   #9
airon
Senior Member
 
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Secondo me è sbagliato risolvere da Php. Risolvi ma avrai della computazione in più per nulla, che se il db fosse a posto non avresti. Senza contare i dati ridondanti nel db appunto.
Sicuramente è la strada da seguire...ma mi pare di avere capito che non vi è controllo su questo
airon è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2014, 06:44   #10
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Quote:
Originariamente inviato da airon Guarda i messaggi
Sicuramente è la strada da seguire...ma mi pare di avere capito che non vi è controllo su questo
Esatto! I dati arrivano così nel DB.
Sicuramente si possono "lavorare" prima di popolare il DB, ma attualmente il flusso di dati non viene "sistemato" prima.
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2014, 10:58   #11
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
La situazione non mi è del tutto chiara, non potresti fare semplicemente una group by nella select?
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2014, 06:49   #12
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Dunque, la primaria è un ID che non utilizzo.
Vi è una chiave unica che raccoglie tutte le variabili (a parte ID, naturalmente)...questo per evitare di memorizzare records doppi che possono passare...Tabella unica, non legata ad altre.

Ho capito che non devo stampare ad ogni iterazione dell'array, ma appunto "memorizzare" per poi controllare le righe accoppiate, fare le dovute sistemazioni e poi stampare.
Però è più facile a dirsi che a farsi...
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2014, 08:17   #13
MicheleRaponi
Member
 
Iscritto dal: Oct 2003
Messaggi: 143
Quote:
Originariamente inviato da Gregor Guarda i messaggi
Ecco un es.:


...
5- 01 8:00 I CASA 0
4- 01 7:50 I CASA 1
3- 01 7:50 I CASA 0

2- 01 7:45 I CASA 0
1- 01 7:30 I CASa 0
...

In pratica, le righe 3 e 4 dovrebbero essere unificate, perché è una ripetizione inutile!
Il punto è che una volta stampata la 3, solo dopo mi "accorgo" della 4 (è un array), cioè del fatto che sono due righe da unire! Solo che ormai la 3 è stampata in tabella e non riesco più a farci nulla!

Chiaro più o meno?
Non è molto chiaro cosa intendi con "unificare"..dicendo "é una ripetizione inutile" credo che il valore 1 indichi che la riga che lo possiede abbia sempre contenuto identico alla precedente con valore 0 ( a meno dell'ultimo campo, quello che può avere valore 0 o 1).
Se si, puoi agire così ed eliminare quella con valore 0 e mantenere quella con valore 1:

http://viper-7.com/R7lEgd
MicheleRaponi è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2014, 08:21   #14
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Quote:
Originariamente inviato da MicheleRaponi Guarda i messaggi
Non è molto chiaro cosa intendi con "unificare"..dicendo "é una ripetizione inutile" credo che il valore 1 indichi che la riga che lo possiede abbia sempre contenuto identico alla precedente con valore 0 ( a meno dell'ultimo campo, quello che può avere valore 0 o 1).
Se si, puoi agire così ed eliminare quella con valore 0 e mantenere quella con valore 1:

http://viper-7.com/R7lEgd
Esatto! "unificare" vuol dire stampare solo la 4- e non anche la 3-
Guardo il tuo esempio. Grazie.

Ho visto...se però la base di partenza è

Quote:
$rows[7] = array('01','8:50','I','CASA','1');
$rows[6] = array('01','8:50','I','CASA','0');
$rows[5] = array('01','8:00','I','CASA','0');
$rows[4] = array('01','7:50','I','CASA','1');
$rows[3] = array('01','7:50','I','CASA','0');
$rows[2] = array('01','7:45','I','CASA','0');
$rows[1] = array('01','7:30','I','CASA','0');
Il risultato è

Quote:
7) 01 | 8:50 | I | CASA | 1 |
6) 01 | 8:50 | I | CASA | 0 |
5) 01 | 8:00 | I | CASA | 0 |
4) 01 | 7:50 | I | CASA | 1 |
2) 01 | 7:45 | I | CASA | 0 |
1) 01 | 7:30 | I | CASA | 0 |
e chiaramente non va bene...

Posso avere n righe da "unificare"...tenendo sempre quella col valore $v[4] == 1.
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum

Ultima modifica di Gregor : 09-10-2014 alle 09:12.
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2014, 10:29   #15
airon
Senior Member
 
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2148
Se vuoi unificare via php devi stampare a due a due...come ti ho detto di fare io

Hai bisogno di un array temporaneo di stampa.
Metti dentro una riga (0), metti dentro la seconda (0). Le stampi.
Resetti l'array.
Metti dentro una riga (0), metti dentro la seconda (1). Aggreghi e stampi.
Resetti
ecc.
airon è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2014, 11:00   #16
MicheleRaponi
Member
 
Iscritto dal: Oct 2003
Messaggi: 143
Quote:
Originariamente inviato da Gregor Guarda i messaggi
Esatto! "unificare" vuol dire stampare solo la 4- e non anche la 3-

Posso avere n righe da "unificare"...tenendo sempre quella col valore $v[4] == 1.
Allore devi avere un array con le chiavi da rimuovere e non una variabile, poi devi avere un ciclo per rimuvovere dall'array secondo le chiavi che ti ricavi.

http://viper-7.com/lGGkGb
MicheleRaponi è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2014, 13:36   #17
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Ma scusa, se a te interessa che quelle con 1 finale sovrascrivano 0 finale, anziché salvare entrambe le righe nel db, non puoi andare in update sulla riga e salvare 1? Così ti estrai le righe giuste e in Php non devi fare nulla. E non hai neanche duplicati sul db.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2014, 05:33   #18
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Le righe doppie mi servono in altri ambiti e quindi nel db devono restare. Una select che per le righe "doppie" prende solo quelle con valore 1 ci può stare. Forse una select concatenata... Devo prenderle tutte le altre. Le altre soluzioni mi sembrano complicate...

Inviato da Huawei mobile con Tapatalk
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2014, 08:15   #19
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Sto seguendo la strada di @MicheleRaponi che mi sembra semplice per le mie conoscenze di php.
Questa la partenza; il mio array nasce così:

Stampo tutte le righe:
Codice PHP:
$query "select...";
$dbResult mysql_query($query$db);
$AffectedRowsmysql_affected_rows($db);

for (
$index=$index<$AffectedRows $index++)
{
   
$row mysql_fetch_row($dbResult);            
   foreach (
$row as $k => $v)
    {
      print (
$v);
    }

Edit: credo di essere a buon punto!
Ho un array con le righe da non stampare...
Codice PHP:
Array
(
    [
0] => 2
    
[1] => 5
    
[2] => 10
    
[3] => 12

adesso devo "semplicemente" escluderle nel ciclo for...cioè $index non deve avere quei valori...
Codice PHP:
for ($index=$index<$AffectedRows $index++)
... 
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum

Ultima modifica di Gregor : 14-10-2014 alle 09:20.
Gregor è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2014, 10:01   #20
Gregor
Senior Member
 
L'Avatar di Gregor
 
Iscritto dal: May 2000
Messaggi: 6087
Non ci sono ancora!

Codice PHP:
print "<table>\n";

    for (
$index=$index<$AffectedRows $index++)
    {
        
$row mysql_fetch_row($dbResult);
            print 
"<tr>\n";
            
            foreach (
$row as $k => $v)
            {
            if(
$k == 4)
                {
                    if(
$v == 3)
                        {
                            
$keys_to_remove[] = $index-1;
                        }
                }
                print (
"<td><div align=\"center\">$v</div> </td>\n"); 
// In realtà non mi serve stampare in questo for...
            
}
                        print 
"</tr>\n";
    }
    print(
"</table>\n"); 
Così stampo la tabella completa e in più ho l'array $keys_to_remove[] che contiene il numero di righe da non stampare!
Partendo dalla prima (0) all'ultima, ho il numero esatto di ciò che non mi serve!
Adesso devo ripartire da un for analogo, dove stamperò tutte le righe da 0 ad $AffectedRows ad eccezione di quelle nell'array precedente...
__________________
PSN: jNash08
"Iddu pensa sulu a iddu..." (cit.)
Più di 100 compravendite sul forum

Ultima modifica di Gregor : 14-10-2014 alle 10:50.
Gregor è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Iliad: si consolida la partnership tecno...
Il SoC a 2 nm di Samsung non sfigura nel...
Prezzo shock per i Galaxy Buds FE + nuov...
Il nuovo SoC di Qualcomm vuole stupire: ...
Offerta lampo per pulire l'auto: aspirap...
I robotaxi di Amazon entrano in azione: ...
ECOVACS DEEBOT T50 PRO OMNI Gen2 domina ...
iPhone 17 Pro su Amazon: tutti i colori,...
Disney Plus da 2,99 euro al mese per 3 m...
Nuovo test di accensione dei motori per ...
Novità dalle analisi dell'asteroi...
La PS6 sarà più potente del previsto: ec...
Sony svela Xperia 10 VII: è il nu...
Amazon Weekend da urlo: iPhone 16 a prez...
Spotify diffida ReVanced: chiesta la rim...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v