Doporučujeme: CZ doména zdarma | 5 GB Email hosting | JSP & Java hosting | Nejlevnější domény | Psí Park | Zkracovač dlouhých adres | 60 GB FTP hosting
| Zavřít |
klikni pro zmenšení fotky

Můj blog – až 10 % špičkového kódu navíc!

Problémy s přechodem na novější verze phpBB

Datum: 9. 7. 2006 1.00 | Autor: Lukáš | 34667× | Kategorie: PHP | Komentáře: 1

Dneska jsem na IDF instaloval novou verzi phpBB modified by Przemo. Po dřívějších zkušenostech s přechody na novější verze jsem si zazálohoval databázi, celou ji smáznul a pak pokračoval čistou instalací. Jako vždy byly struktury nových tabulek trochu jiné, než těch starých, tak jsem nemálokrát musel SQL dump upravovat. Až u obnovování registrovaných uživatelů jsem s tím nemohl hnout, protože struktura tabulky byla úplně jiná. Protože jsem líný a nechtělo se mi ručně u všech uživatelů upravovat formát dumpu, napsal jsem si script, který to tak trochu dělá za mě. Nevím, jestli to takto funguje i v normální verzi phpBB (tam je to totiž zase o něco jiné), ale snad to někomu pomůže.

 1 <?

 2
 3
/* Následující proměnná $r bude obsahovat všechna data tabulky phpbb_users. Protože pak z jednotlivých řádků budeme zjišťovat hodnoty rozdělením dle čárek, je třeba zajistit, aby neměl žádný uživatel nikde ve svém infu vyplněnou jakoukoli čárku - to lze jednoduše zajistit pomocí MySQL fce replace, kterou změníme všechny čárky v podpisu a infu o uživateli třeba na *čárka* - po té, co se vloží všechna data do databáze, uděláme to samé, ale opačně..*/
 4
$r="INSERT INTO `phpbb_users` VALUES (neco, neco)...;
 5 INSERT INTO `phpbb_users` VALUES (neco, neco)...;
 6 INSERT INTO `phpbb_users` VALUES (neco, neco)..."

 7
 8
 9
/* $r rozdělíme na řádky. */
10
$radky=explode("\n"$r);
11
12
13
/* No a teď už jen každý řádek zpracujeme..*/
14
for($i=0;$i<count($radky);$i++){
15
16
17
/* Zbavíme se počátečních 34. znaků ("INSERT INTO `phpbb_users` VALUES (") a taky ");" na konci každého řádku*/
18
$radky[$i]=substr($radky[$i], 34);
19
$radky[$i]=trim($radky[$i], ");");
20
21
22
/* Jak jsem již psal na začátku, teď díky čárce získáme hodnoty jednotlivých sloupců*/
23
$hodnoty=explode(","$radky[$i]);
24
25
26
/* Vložíme prázdná data do tabulky. Samozřejmě bychom už mohli vložit původní data, ale s tím se mi nechtělo dělat)*/
27
mysql_query("INSERT INTO `phpbb_users` VALUES ('', '1', '', '', '0', '0', '0', '0', '0', '0', '0.00', '1', '', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '', '0', '', '', '', '', NULL , '', '', '', '', '', '', '', '', '', '999999', '0', '', '', '0', '', '0', '0', '', '', '1', '1', '0', '1', '0', '1', '0', '0', '0', NULL , NULL , NULL , '1', NULL , '1', '0', '0', '0', '0', '0')");
28
29
30
/* Zjistíme prozatím maximální vložené user_id, u kterého se má provést UPDATE*/
31
$last_id=mysql_insert_id();
32
33
34
/* Tak, a teď už jen do databáze updatneme správné hodnoty včetně původního id uživatele (budou mu přiřazeny jeho dříve napsané příspěvky). Neupdatuju všechny hodnoty - s tím se mi opět nechtělo dělat, samozřejmě si to tam můžete přidat. */
35
mysql_query("UPDATE phpbb_users SET user_id=".trim($hodnoty[0]).", user_active=".trim($hodnoty[1]).", username=".trim($hodnoty[2]).", user_password=".trim($hodnoty[3]).", user_lastvisit=".trim($hodnoty[6]).", user_regdate=".trim($hodnoty[7]).", user_level=".trim($hodnoty[8]).", user_posts=".trim($hodnoty[9]).", user_timezone=".trim($hodnoty[10]).", user_style=".trim($hodnoty[11]).", user_lang=".trim($hodnoty[12]).", user_rank=".trim($hodnoty[31]).", user_avatar=".trim($hodnoty[32]).", user_avatar_type=".trim($hodnoty[33]).", user_email=".trim($hodnoty[34]).", user_icq=".trim($hodnoty[35]).", user_website=".trim($hodnoty[36]).", user_from=".trim($hodnoty[37]).", user_sig=".trim($hodnoty[38]).", user_sig_bbcode_uid=".trim($hodnoty[39]).", user_sig_image=".trim($hodnoty[40]).", user_aim=".trim($hodnoty[43]).", user_yim=".trim($hodnoty[44]).", user_msnm=".trim($hodnoty[45]).", user_occ=".trim($hodnoty[46]).", user_interests=".trim($hodnoty[47]).", user_actkey=".trim($hodnoty[48]).", user_newpasswd=".trim($hodnoty[49]).", user_next_birthday_greeting=".trim($hodnoty[54]).", user_custom_rank=".trim($hodnoty[55]).", user_gender=".trim($hodnoty[68]).", user_ip=".trim($hodnoty[85])." WHERE user_id='".$last_id."'");
36
37 echo 
mysql_error();
38
39 }
40
41
42
/* Ukončíme spojení s MySQL */
43
mysql_close($conn);
44
45
?>


Podobné články:
Mujblog.info verze 3.0!


Komentáře:

  1. write my custom essays21. 6. 2017 10.14

    Such a very useful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article.



    odpovědět

Přidat nový komentář:




Ochrana proti spamu. Napište prosím číslici pět: