לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #9  
ישן 09-09-2007, 17:54
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 1 שנכתבה על ידי shuraki שמתחילה ב "br2nl - זקוק לכתוב טקסט שיש בו מעבר שורה ללא ירידת שורה"

תחליף את "\n" ב-'\n'.

קוד PHP:
<?=str_replace(array("\r\n", "\n", "\r"), '\n', $text)?>

הבעיה העיקרית שתהיה לך עם הפתרון בדרך שאתה מחפש זה בעת הזנת השאילתות חזרה.

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

function sql_fetch($rowSql)
{
    
$sql = array();
    
$rowSql str_replace(array("\r\n""\r"), "\n"$rowSql);

    for(
$i=0$i<strlen($rowSql);)
    {
        if(
$rowSql[$i] == "'")
        {
            do
                
$pos strpos($rowSql"'", ++$i);
            while(
$rowSql[$pos-1] == '\\');

            
$i $pos+1;
        }
        if(
$rowSql[$i] == '"')
        {
            do
                
$pos strpos($rowSql'"'$i);
            while(
$rowSql[$pos-1] != '\\');

            
$i $pos;
        }
        else if(
$rowSql[$i] == '#')
        {
            
$rowSql str_truncate($rowSql$i"\n");
        }
        else if(
$rowSql[$i]=='-' && strlen($rowSql)>($i+1))
        {
            if(
$rowSql[$i+1]=='-' && ($rowSql{$i+2}==' ' || $rowSql[$i+2]=="\n" || $rowSql[$i+2]=="\t"))
                
$rowSql str_truncate($rowSql$i"\n");
        }
        else if(
$rowSql[$i]=='/' && strlen($rowSql)>($i+1) && $rowSql[$i+1]=='*')
        {
            
$rowSql str_truncate($rowSql$i'*/');
        }
        else if(
$rowSql[$i]==';')
        {
            
//array_push($sql, trim(substr($rowSql, 0, $i)));
            
array_push($sqlstr_replace("\n"' 'trim(substr($rowSql0$i))));// include str_replace("\n", ' ', $query)

            
$rowSql trim(substr($rowSql$i+1));
            
$i 0;
        }
        else
        {
            ++
$i;
        }
    }

    if(
$rowSql trim($rowSql))
        
array_push($sql$rowSql);

    return 
$sql
}
?>


תיאורטית, הפונקציה לעיל אמורה לקבל מחרוזת שהיא שאילתות sql רציפות והפונקציה תחזיר מערך מספרי שכל איבר בה הוא שאילתת sql תקינה.
הפונקציה דורשת שימשו בפונקציה נוספת שאצרף גם אותה תיכף, אני רק חייב לציין ששתי פונקציות אלו הינן פונקציות שכתבתי לפני זמן רב, כך שאני לא לוקח אחריות...
בנוסף, הפונקציה לעיל משמשת אצלי כשיטה במחלקה המיועדת לגיבוי/שיחזור, כך שיתכן מאד שמבהלך ההתאמה המהירה שעשיתי לה כרגע, יצרתי באגים, כדי לבדוק זאת ולא להשתמש בה כמות שהיא (מקסימום ניתן להריץ אותה בנסיון ולבדוק את הפלט).

תעדכן את התוצאות, אויל זה יועיל למשתמשים נוספים.

קוד PHP:
<?php

function str_truncate($str$a$z)
{
    
$str1 substr($str0$a);

    if(
is_int($z)){
        if(
$z $a)
            
$str2 substr($str$z);
        else
            return 
false;
    }
    else if(
$pos strpos($str$z$a))
        
$str2 substr($str$pos);
    else
        return 
false;

    return 
$str1.$str2;
}

?>
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 05:49

הדף נוצר ב 0.04 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר