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

come scrivere in una trabella phpbb tramite php ?

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
darklay
Utente
Utente
Messaggi: 28
Iscritto il: 31/10/2010, 3:19
Versione: 3.0.7-PL1
Server: UNIX/Linux

come scrivere in una trabella phpbb tramite php ?

Messaggio da darklay » 03/11/2010, 17:51

Premetto che tutte le prove le farà in locale, così da non far danni :P, e che se si potesse mi piacerebbe che si spiegasse come si fa, per capire meglio i vari passagi.

Ho imparato a rchiamare dati da un solo campo di una tabella e vorrei capire come scriverlo ora :)

allora :)

Vorrei tramite una pagina php esterna al forum scrivere in una query del database phpbb, precedentemente creata.

Ad esempio tabella users, creata una campo user_prova

vorrei tramite php scrivere nel campo user_prova

ovviamente ciò che viene scritto nel campo user_prova dovrà essere collegato ad un utente specifico.

Quindi nella pagina php dovrei poter selezionare l'utente, scrivendolo a mano, e poi scrivere ciò che andrà nel mio campo user_prova

se l'utunte scritto è sbagliato e non esiste mi dovrebbe avvertire con un messaggio errore che l'utente non esiste

Ora se possibile vorrei sapere come si fa, e le varie spiegazioni :)

grazie .. scusate le domande banali e magari ottuse ma sto cercando di capire come funziona l'integrazione php e sql in phpbb, grazie!!!

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: come scrivere in una trabella phpbb tramite php ?

Messaggio da Micogian » 03/11/2010, 18:41

A parte che c'è qualche differenza tra la gestione tramite php e phpbb, l'inserimento o la modifica di un campo in un record esistente si fa con il comando "UPDATE":

Codice: Seleziona tutto

$var_prova = "stringa" ;
$user_id = "99";
// ammesso che phpbb_ sia il prefisso del database
$sql = "UPDATE phpbb_users SET user_prova = $var_prova  WHERE user_id = $user_id" ;
if (@mysql_query($sql))  {
echo "<p>il campo è stato modificato</p>";    
} else {
echo "<p>errore  nella procedura di modifica</p><br>" ;
}
Con phpbb la tabella users è dichiarata tra le costanti come USERS_TABLE e diventerebbe

Codice: Seleziona tutto

$sql = "UPDATE " . USERS_TABLE  . " SET user_prova = $var_prova WHERE user_id = $user_id ";

darklay
Utente
Utente
Messaggi: 28
Iscritto il: 31/10/2010, 3:19
Versione: 3.0.7-PL1
Server: UNIX/Linux

Re: come scrivere in una trabella phpbb tramite php ?

Messaggio da darklay » 05/11/2010, 13:18

Quindi vediamo :

all'inizio mi connetto al database

Codice: Seleziona tutto

<?php

    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

  
e dopo aggiungo il tuo codice giusto?

Quali sono le differenze tra php e phpbb, dove trovo una guida al phpbb, visto che sto studiando il php, così da vedere le differenze

Perché hai sato come $user_id = "99", c'è un motivo specifico ?

grazie e scusa per le domande ma sto cercando di imparare qualcosa :)

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: come scrivere in una trabella phpbb tramite php ?

Messaggio da Micogian » 05/11/2010, 13:49

User_id= '99' è solo un esempio. Se in una query di modifica di una campo non inserisci "a chi o cosa" vuoi modificare rischi che la modifica avvenga in tutti i records.

A grosse linee il phpbb usa dei file php per interrogare il Database, usare le funzioni e crere un array con le variabili richieste.
Il tutto viene passato al template che è un file html ma che interpreta correttamente le variabili passate dal php.
Caratteristica delle variabili del Template è quella di essere tutte Maiuscole.
Trovi tutto su phpbb.com. Dai un'occhiata anche QUI

darklay
Utente
Utente
Messaggi: 28
Iscritto il: 31/10/2010, 3:19
Versione: 3.0.7-PL1
Server: UNIX/Linux

Re: come scrivere in una trabella phpbb tramite php ?

Messaggio da darklay » 05/11/2010, 14:16

ok :)

grazie ora leggo il link

cambiano anche alcune variabili, o diciamo scorciatoie col phpbb, tipo la connessione al database che è doversa e poi questra stringa

Codice: Seleziona tutto

$sql = "UPDATE phpbb_users SET user_prova = $var_prova  WHERE user_id = $user_id" ;
che mi dici in phpbb da sostituire con:

Codice: Seleziona tutto

    $sql = "UPDATE " . USERS_TABLE  . " SET user_prova = $var_prova WHERE user_id = $user_id ";
c'è qualosa che non va... probabilmente ho sbagliato qualcosa :)

Codice: Seleziona tutto

<?php

    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);

    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    page_header('Classifica ITS');


$var_prova = "stringa" ;
$user_id = "99";
// ammesso che phpbb_ sia il prefisso del database
$sql = "UPDATE " . USERS_TABLE  . " SET user_pin = $var_prova WHERE user_id = $user_id ";
if (@mysql_query($sql))  {
echo "<p>il campo è stato modificato</p>";   
} else {
echo "<p>errore  nella procedura di modifica</p><br>" ;
}
    
?>
mi dice "errore nella procedura di modifica"

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: come scrivere in una trabella phpbb tramite php ?

Messaggio da Micogian » 05/11/2010, 15:32

Certo, la query sta cercando di modificare il campo "user_pin" dell'utente che ha user_id= '99'
Potrebbe anche non esistere l'utente 99. Te l'avevo detto che '99' era un esempio.
Un altro possibile errore sta nel fatto che la variabile $var_prova ha il valore di "stringa", quindi un testo e se il campo user_pin è numerico ha ragione di "arrabbiarsi".

darklay
Utente
Utente
Messaggi: 28
Iscritto il: 31/10/2010, 3:19
Versione: 3.0.7-PL1
Server: UNIX/Linux

Re: come scrivere in una trabella phpbb tramite php ?

Messaggio da darklay » 05/11/2010, 18:24

ok ho sostituito "stringa" con un numero e va

assegna quel numero all'id di user_id

ora se volessi creare dei campi per poter immettere dei dati, devo usare dei form giusto?

li posso inculdere nel phh o devo creare una pagina html che si colleghi al php ?

del tipo

Codice: Seleziona tutto

<body>
<form action ="prova.php" method="post">
Inserisci due Nome e PIN:
<input type=text name="var_prova">
<input type=text name="user_id">
<input type="submit">
</form>
</body> 

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: come scrivere in una trabella phpbb tramite php ?

Messaggio da Micogian » 07/11/2010, 15:57

Qual'è la filosofia di phpbb te l'ho detta, da un lato il php per connettersi al database e un file html per creare la pagina da visualizzare.

Prima di fare modifiche al database io cercherei di capire come funziona phpbb. Esiste già la possibilità di inserire campi personalizzati.

darklay
Utente
Utente
Messaggi: 28
Iscritto il: 31/10/2010, 3:19
Versione: 3.0.7-PL1
Server: UNIX/Linux

Re: come scrivere in una trabella phpbb tramite php ?

Messaggio da darklay » 07/11/2010, 18:40

La filosifia l'ho capita

infatto ho il file php per connettermi al database

ed ho creato il file html con form per visualizzare, solo non so come fare bene i form

Ho capito che intendi, quindi se creo un campo personalizzato per il pin, questo lo inserisco tramite pannello di cotnrollo utente.

Ora se volessi visualizzare questo campo personalizzato in una pagina personalizzata come lo richiamo?

so che il campo personalizzato va a scrivere nella tabella :

Codice: Seleziona tutto

phpbb3_profile_fields_data
campo :

Codice: Seleziona tutto

pf_user_pin
Ora uso, ad esempio

Codice: Seleziona tutto

'USERNAME_COR'    => $user->data['username'],
per richiamare il campo username dalla tabella phpbb3_users

ma se volessi richiamare appunto il mio campo pf_user_pin ? come dovre fare?

'PIN_COR' => ?

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: come scrivere in una trabella phpbb tramite php ?

Messaggio da Micogian » 07/11/2010, 20:22

A monte dell'attribuzione della variabile

Codice: Seleziona tutto

'USERNAME_COR'    => $user->data['username'],
c'è qualcos'altro, la creazione della variabile $user_>data perchè il valore di 'username' fa parte di quell'array.

In sostanza l'attribuzione di uan variabile segue questo schema:

1) interrogazione del Database, in pratica della tabella che contiene il dato.
Questo si fa con una query.

Codice: Seleziona tutto

SQL = ("SELECT campo_1, campo_2, campo_3 From tabella WHERE campo_x = 'valore' ")
2) Attribuzione delle variabili che si fanno con alcune funzioni phpbb, come ad esempio:

Codice: Seleziona tutto

$template->assign_block_vars('nome_array',array(
             'VARIABILE_1'    => $row['campo_1'] ,
             'VARIABILE_2'    => $row['campo_2'] ,
             ));
2) A questo punto il file php richiama il template HTML dove hai a disposizione le variabili create (sempre maiuscole) sotto forma di

Codice: Seleziona tutto

{nome_array.VARIABILE_1}
In pratica le devi creare prima, nel file php, solo che le variabili di sistema sono già create, a volte nei file php della root, a volte nei file functions....php.

Prova a guardare il file includes/functions.php oppure functions_display.php, vedrai molte delle variabili presenti nei file Template.
Altra prerogativa di phpbb è che le variabili precedute da "L_" (es. L_VARIABILE_1) è una variabile di lingua, è cioè presente nei file della cartella "language" e corrisponde alla traduzione prevista per la variabile VARIABILE_1.
Stessa cosa per il prefisso "U_", es. U_VARIABILE_1 che corrisponde a un link.

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti