phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Aggiornare un campo del profilo a tutti

Supporto per phpBB 3.0.x.
Rispondi
Avatar utente
Barrnet
Leader Moderatori
Leader Moderatori
Messaggi: 3124
Iscritto il: 04/07/2010, 23:31
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.10
Database: MySQL 5.1.61-community-log
Contatta:

Aggiornare un campo del profilo a tutti

Messaggio da Barrnet » 04/01/2011, 2:13

Oggi su un forum che gestisco ho creato un campo personalizzato.
Il problema è che a chi non ha visitato il proprio pannello di controllo non appare, manco con la voce predefinita.
C'è un modo per aggiornare in un colpo solo tutti i profilo mostrando il campo con la voce "standard" a chi non l'ha ancora compilato?
Penso che via query sia possibile, ma non ho la più pallida idea di come farla :oops:

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Micogian » 04/01/2011, 7:01

In linea di massima per modificare un campo si fa così:

Codice: Seleziona tutto

UPDATE tabella SET campo='xxx' 
Ma questo inserisce il valore "xxx" a tutti i records.
Se vuoi modificare solo i campi che risultano vuoti potresti fare così:

Codice: Seleziona tutto

UPDATE tabella SET campo='xxx' WHERE campo=''
Fai una prova: copia la tabella e prova sulla copia, se tutto è a posto lo fai sulla tabella principale.
Quando si fanno modifiche al database, senza bisogno di fare un backup completo è sufficiente copiare le tabelle interessate direttamente nel database, così le hai subito a disposizione.

Avatar utente
Carlo
Amministratore
Amministratore
Messaggi: 9957
Iscritto il: 19/04/2009, 10:24
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 7.1.0
Database: MySQL(i) 10.0.27-MariaDB-cll-lve
Località: Puglia
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Carlo » 04/01/2011, 10:31

Il problema è che il valore del campo personalizzato di un dato utente non viene aggiunto in una colonna della tabella degli utenti, ma c'è una tabella apposita, dove per ogni utente e per ogni campo personalizzato viene creato un nuovo record.
MODs | Stili | Traduzioni MOD
Ogni MP contenente una richiesta di supporto verrà ignorato.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Micogian » 04/01/2011, 10:55

Non ho detto che va fatto nella tabella "users", la tabella dei dati personalizzati è "phpbb_profile_fields_data" e il nome del campo bisogna vederlo nella tabella stessa, visto che è personalizzato.

Avatar utente
Barrnet
Leader Moderatori
Leader Moderatori
Messaggi: 3124
Iscritto il: 04/07/2010, 23:31
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.10
Database: MySQL 5.1.61-community-log
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Barrnet » 05/01/2011, 0:37

Il campo "xxx" è il nome che ho dato quando ho creato il campo? (più precisamente: Identificazione campo)

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Micogian » 05/01/2011, 7:28

Nella tabella xxxx_profile_fields ci metti i nomi dei campi, ad esempio "cognome", nella tabella xxxx_profile_fields_data finiscono i valori e i campi prendono il nome inserito nella tabella profile_fields con il prefisso "pf", in pratica il campo "cognome" diventa "pf_cognome".
Ma questo lo vedi benissimo aprendo la tabella xxxx_profile_fields_data.

Avatar utente
Barrnet
Leader Moderatori
Leader Moderatori
Messaggi: 3124
Iscritto il: 04/07/2010, 23:31
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.10
Database: MySQL 5.1.61-community-log
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Barrnet » 05/01/2011, 8:42

Quindi se lancio la query:

Codice: Seleziona tutto

UPDATE tabella SET campo='esempio' WHERE campo=''
tutti i campi "esempio" non compilati vengono mostrati?
O tutti gli account si ritroveranno il campo "esempio" vuoto?

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Micogian » 05/01/2011, 11:06

Barrnet ha scritto:Quindi se lancio la query:

Codice: Seleziona tutto

UPDATE tabella SET campo='esempio' WHERE campo=''
tutti i campi "esempio" non compilati vengono mostrati?
O tutti gli account si ritroveranno il campo "esempio" vuoto?
No, nel campo "campo" (ammesso che esista o comunque sta per un nome di campo) viene inserita la stringa "esempio" qualora (WHERE) il campo sia vuoto.

Ad esempio, se io volessi cambiare lo style (mettendo lo style 10) utilizzato dall'utente 99 potrei fare

Codice: Seleziona tutto

UPDATE phpbb_users SET user_style='10' WHERE user_id='99'
Se lo voglio cambiare a tutti escludo il WHERE:

Codice: Seleziona tutto

UPDATE phpbb_users SET user_style='10' 
Se voglio cambiare lo styile a tutti quelli che hanno lo style 5

Codice: Seleziona tutto

UPDATE phpbb_users SET user_style='10' WHERE user_style='5'
Con lo stesso principio posso inserire un valore a tutti i rercords che hanno unn determinato campo vuoto

Avatar utente
Barrnet
Leader Moderatori
Leader Moderatori
Messaggi: 3124
Iscritto il: 04/07/2010, 23:31
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux
PHP: 5.3.10
Database: MySQL 5.1.61-community-log
Contatta:

Re: Aggiornare un campo del profilo a tutti

Messaggio da Barrnet » 05/01/2011, 11:18

Ok, tutto chiaro :)

Rispondi

Torna a “[3.0.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Bing [Bot] e 62 ospiti