PHP-kod för att "skjuta in" innehåll i "custom fields"?

Här kan du ställa frågor om problem med och drift av phpBB 3 (3.0.0 eller senare). Det är här du bör skapa en tråd om du har ett problem, vill ställa en fråga och vill ha ett svar. Gäller det något annat, var vänlig bläddra nedåt på sidan.

Moderatorer: Supportgrupp, Moderatorgrupp

Kategoriregler
Här kan du ställa frågor om problem med och drift av phpBB 3 (3.0.0 eller senare). Det är här du bör skapa en tråd om du har ett problem, vill ställa en fråga och vill ha ett svar. Gäller det något annat, var vänlig bläddra nedåt på forumindex.

Klicka här för att se våra allmänna forumregler.
Skriv svar
Användarens profilbild
MuffinBoy
Ny medlem
Ny medlem
Inlägg: 5
Blev medlem: 2009-01-17 11:20
Svar: 0

PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av MuffinBoy »

Jag tänkte att nya forummedlemmar måste uppge personnummer (givetvis efter att ha godkänt registering enligt PUL, och efter godkännande av Datorinspektionen som det står lite om i den här tråden. För att tydliggöra registreringen vill jag dock ha två input-boxar på registeringssidan - en för personnumrets första sex siffror, och den andra för personnumrets fyra sista siffror. Jag har ändrat lite i mitt temas template/ucp_register.html-fil för att nå önskat resultat (se bifogad skärmdump).

Nu undrar jag hur jag smidigast går tillväga för att "skjuta in" data från formuläret i min databas "custom field" som jag skapat för personnummer? Förstår jag saken rätt bör jag stoppa in koden i includes/ucp/ucp_register.php-filen, men avsaknaden av dokumentation gör mig lite osäker på hur jag bäst bör gå tillväga. Min tanke är att det skall gå till så här:
  1. Användaren fyller i sitt personnummer i de respektive fälten
  2. Jag validerar informationen och kollar att det är ett giltigt personnummer
  3. Är personnumret giltigt så "skjuts" det in i databasens "custom profile"-fält (annars lägger jag till ett felmeddelande i $error-arrayen)
Frågeställning: Finns det, mot bakgrund av ovanstående, ett smidigt sätt att lägga in data i phpBB:s "custom fields"? Finns det rentav någon färdigdefinierad funktion för det, eller måste man själv "fulhacka" ett SQL-anrop? Kodexempel för SQL-nybörjade uppskattas, vad svaret än är :).

Skärmdump: Bild
Bananmuffins: Mjöl, bakpulver, några ägg, lite vaniljsocker, lite matolja och en fint skivad banan. Grädda i cirka 200C runt 10 minuter. Använd gärna en teflonform för stora muffins.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av tumba25 »

Utan att just nu närmare studera hur det ska gå till tror jag att jag skulle skapat ett eget fält i phpbb_users för personnumret.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
MuffinBoy
Ny medlem
Ny medlem
Inlägg: 5
Blev medlem: 2009-01-17 11:20
Svar: 0

Re: PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av MuffinBoy »

Tack för svaret, men det var tyvärr inte så mycket till hjälp. Tanken är ju att man "ska" använda phpBB 3:s fält för "custom fields" för just sådana här saker - eller? Min frågeställning är ju hur jag helt enkelt lägger till innehåll i ett "custom field" efter att jag har validerat innehållet.
Senast redigerad av tumba25 den 2009-01-18 05:09, redigerad totalt 1 gång.
Anledning: Citera inte in hela föergående inlägg. Det finns ändå alldeles ovanför så alla kan läsa där.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av tumba25 »

Custom profile fields är tänkt att användas via ACP > Användare och grupper > Egna profilfält. Där är det meningen att man ska lägga till dom extra fält man vill använda.

För att kunna verifiera personnumret måste du modifiera forumet och när man ändå håller på... Och ska det in när användare registreras så finns ju inget user_id än.

För att lägga till innehåll i ett custom field så förutsätter vi att du skapat fältet via ACP och kallar det för 'personnummer'.
Användar-registreringen måste vara klar så att du får ett user_id.

Kod: Markera allt

$sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . " (user_id, pf_personnummer)
  VALUES ($user_id, '$personnummer')";
$db->sql_query($sql);
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
MuffinBoy
Ny medlem
Ny medlem
Inlägg: 5
Blev medlem: 2009-01-17 11:20
Svar: 0

Re: PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av MuffinBoy »

tumba25 skrev:Och ska det in när användare registreras så finns ju inget user_id än.
Ah, nu förstår jag problematiken med att använda ett custom field direkt vid registreringen! :) Tack så mycket för förtydligandet, tumba25 (och för kodexemplet). Jag får fundera vidare lite på hur jag bäst går tillväga. Antagligen har du dock rätt, om man nu inte låter personnumret hänga med i en sessions-cookie för att lägga till det så fort man fått ett använder-id-nummer.
Bananmuffins: Mjöl, bakpulver, några ägg, lite vaniljsocker, lite matolja och en fint skivad banan. Grädda i cirka 200C runt 10 minuter. Använd gärna en teflonform för stora muffins.
Användarens profilbild
MuffinBoy
Ny medlem
Ny medlem
Inlägg: 5
Blev medlem: 2009-01-17 11:20
Svar: 0

Re: PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av MuffinBoy »

tumba25 skrev:Och ska det in när användare registreras så finns ju inget user_id än.
Jag har tittat vidare lite på hur användarhanteringen verkar fungera. Förstår jag saken rätt är det funktionen user_add() som lägger till all användardata i databasen vid registrering. Detta sker på rad 330 i includes/ucp/ucp_register.php. Det intressanta är att funktionen även verkar fylla i all data som ligger i custom_profiles.

Tydligen så tar funktionen mot följande argument: user_add($user_row, $cp_data) . Om "cp" i "cp_data" skall utläsas som "custom_profiles" tror jag att vi kan vara lösningen en bit närmare. Jag skall försöka se hur $cp_data-variabeln definieras och om man själv kan lägga in data i den på något vis. I så fall tror jag att det går att integrera något ganska snyggt i phpBB-koden.

Håll tummarna! :)
Bananmuffins: Mjöl, bakpulver, några ägg, lite vaniljsocker, lite matolja och en fint skivad banan. Grädda i cirka 200C runt 10 minuter. Använd gärna en teflonform för stora muffins.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av tumba25 »

cp i det fallet ska nog utläsas Controll Panel.

Custom Profile Fields brukar vara förkortade till pf_ i koderna, har jag för mig.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Marcus
Hedersmedlem
Hedersmedlem
Inlägg: 4321
Blev medlem: 2004-01-07 22:12
Svar: 0

Re: PHP-kod för att "skjuta in" innehåll i "custom fields"?

Inlägg av Marcus »

Nope, $cp_data står för "custom profile fields"-data.

Man kan lägga in Custom Data Fields som ska visas vid registrering. Så dessa hanterar via en "optional" funktionsvariebel i funktioen add_user(). Finns det inga $cp_data, sätts den default till "false" i funktionen (som för övrigt implementeras i /includes/functions_users.php).

Dock kan du inte hantera Custom Profile Fields som du beskriver, utan att ändra i koden för det.

Men som Tumba säger, detta är bättre att ändra i userdata... då det knappast är något som du vill göra men något annat fält.

/marcus
Marcus Farrington - Administratör på phpBB Sverige
OBS! På förekommen anledning ges ingen support via PM.

Webb- & Drupalutvecklare på Webbyrå Grebban.
Skriv svar

Vilka är online

Användare som besöker denna kategori: 1 och 0 gäst