הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאלה על קידוד והמרה (https://hosts.co.il/forums/showthread.php?t=87932)

בניה 12-02-11 09:56

אחרי המרות שאתה עושה תגדיר את התאים במסד כ hebrew_general_ci
ותריץ set names hebrew

SniR-S 12-02-11 13:17

אוקי חבר'ס, אז אני הצלחתי למצוא פתרון, קצת אחר,
אבל מכיוון ששמתי לב שהנתונים בטבלה הראשונה, הם בקידוד עברי
ולא פעמיים UTF-8 (שגם זה היה אפשרי להמיר, עם הסקריפט שבניתי, רק טיפה לשנות אותו)
אז הכנתי סקריפט שיעשה את העבודה.

הסקריפט הוא להמרת הכותרות של הנושאים מהמערכת VBULLETIN ל PHPBB3
אני כמעט בטוח שזה עובד על כל גירסאות ה VB, אני בטוח שעל 4 ו 3 זה עובד.
מה שהסקריפט עושה בעצם, הוא שולף את הכותרת וה ID מהטבלה של הנושאים במערכת VB
ומעדכן את הכותרת לפי ה ID של הנושא בטבלת הנושאים של המערכת PHPBB3
כמובן, זה רק לאחר ביצוע המרה של המערכת VB ל PHPBB3.
אז מי שזה גם קורה לו שכותרות הנושאים לא הומרו כמו שצריך (אגב אצלי זה גם השמות פורומים, אבל גם אותם אני אשנה, ע"י שינוי קטן בסקריפט, מה שגם אתם יכולים לעשות),
אז הוא יכול להשתמש בסקריפט.

PHP קוד:

<html dir="rtl">
    <head>
        <title>SCRIPT CONVERT TOPICS, HEBREW - VBULLETIN TO PHPBB3</title>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1255" />
    </head>
<body>
<?php
$connection 
mysql_connect("localhost""NAME_USER_DB""PASSWORD_USER_DB");
    
$connect mysql_select_db("NAME_DB"$connection);
$utf8 mysql_query("SET NAMES 'latin1'");

    
$query_n mysql_query("SELECT `topic_id` FROM `phpbb_topics`") or die ("Query Faild:" mysql_error());
    
$number mysql_num_rows($query_n);

if (
$_GET['start'] >= $number) {
    echo 
"<br /><br />כל הרשומות הומרו.";
    echo 
"<meta http-equiv=\"refresh\" content=\"1;url=http://www.google.co.il\" />";
} elseif (isset(
$_GET['start']) && is_numeric($_GET['start'])) {
$start $_GET['start'];
$limited 500// מספר נושאים להמרה בכל 10 שניות
    
$query mysql_query("SELECT * FROM `thread` ORDER BY `threadid` LIMIT $start,$limited") or die ("Query Faild:" mysql_error());
        while (
$r mysql_fetch_assoc($query)) {
            
$id $r['threadid'];
            
$title $r['title'];

            echo 
$id " | " $title "<br />";
            
mysql_query("SET NAMES 'hebrew'");
            
mysql_query("UPDATE `phpbb_topics` SET `topic_title` = '$title' WHERE `topic_id` = '$id'");
        }
    
$to_start $start+$limited;
    echo 
"<br /><br />הרשומות מרשומה $start ועד הרשומה $to_start הומרו,הינך מועבר לרשומות הבאות.";
    echo 
"<meta http-equiv=\"refresh\" content=\"10;url=?start=$to_start\" />";
}

?>
</body>
</html>

צריך להכניס את פרטי המסד כמובן,
לפנות להפעלת הסקריפט פשוט להוסיף "?start=0" .. בכתובת..
ודבר שני זה שאתם יכולים לשנות את הסקריפט כרצונכם ולייעל אותו איך שבא לכם.
להוסיף, לערוך, לשנות ולשדרג, אני מקווה שהוא יעזור גם לאחרים, ובמידה
ומישהו יתקל בבעיה הזו שלי, הוא יוכל להיעזר בזה.


בכל מקרה חברים, תודה רבה לכל מי שעזר |לב|


כל הזמנים הם GMT +2. הזמן כעת הוא 17:39.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ