Pagina 1 di 2

come scrivere in una trabella phpbb tramite php ?

Inviato: 03/11/2010, 17:51
da darklay
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!!!

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 03/11/2010, 18:41
da Micogian
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 ";

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 05/11/2010, 13:18
da darklay
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 :)

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 05/11/2010, 13:49
da Micogian
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

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 05/11/2010, 14:16
da darklay
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"

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 05/11/2010, 15:32
da Micogian
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".

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 05/11/2010, 18:24
da darklay
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> 

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 07/11/2010, 15:57
da Micogian
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.

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 07/11/2010, 18:40
da darklay
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' => ?

Re: come scrivere in una trabella phpbb tramite php ?

Inviato: 07/11/2010, 20:22
da Micogian
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.