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

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



  #2  
ישן 04-12-2006, 13:28
צלמית המשתמש של DRagonRage
  DRagonRage DRagonRage אינו מחובר  
 
חבר מתאריך: 22.02.05
הודעות: 496
שלח הודעה דרך ICQ אל DRagonRage
בתגובה להודעה מספר 1 שנכתבה על ידי Depression שמתחילה ב "שאלה בנוגע להכנסת מערך בPHP אל מסד נתונים."

קוד PHP:
<?php
function query_insert($table ,$array ,$mysql_link ,$appendix '' ,$debug false) {
    
$query "INSERT INTO `".$table."` ";

    
$into "(";

    
$insert "(";

    foreach(
$array as $into_k => $value) {

        
$into .= "`".$into_k."`,";

        
$insert .= "'".$value."',";

    }

    
$into{strlen($into)-1} = ")";

    
$insert{strlen($insert)-1} = ")";



    
$query .= $into." VALUES ".$insert." ".$appendix.";";

    
$query_bool mysql_query($query ,$mysql_link);

    if(
$debug == true)
        echo 
$query;
        

    if(!
$query_bool)
        return 
mysql_error();

return 
0;
}
?>


אתה זורק ל$array:
קוד PHP:
 $array = array("feild1" => "data1" ,"feild2" => "data2"); 

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 05-12-2006, 15:30
  Fixxxer Fixxxer אינו מחובר  
 
חבר מתאריך: 21.09.02
הודעות: 408
בתגובה להודעה מספר 7 שנכתבה על ידי maxim k שמתחילה ב "הכל תלוי..."

אני לא רואה איך זה יותר נוח. מה שאני רואה פה זה קוד פחות קריא, כאשר רובו זה קוד קבוע שאם לא הייתה שגיאה בפעם הראשונה, לא צריכה ליהיות שגיאה בכל ההרצות שאחריה, ואם כבר יש שגיאה בשאליתא עצמה, איך הפונקציה הזאת אמורה לעזור לי לאתר את הבעיה? mysql_error אמור לעזור לי לאתר את הבעיה..

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

נערך לאחרונה ע"י Fixxxer בתאריך 05-12-2006 בשעה 15:33.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 05-12-2006, 18:38
צלמית המשתמש של maxim k
  maxim k maxim k אינו מחובר  
 
חבר מתאריך: 05.08.06
הודעות: 2,860
שלח הודעה דרך MSN אל maxim k
מחלקות לא משמשות רק ל"שינוי מידי" כמו שקראת לזה
בתגובה להודעה מספר 8 שנכתבה על ידי Fixxxer שמתחילה ב "אני לא רואה איך זה יותר נוח...."

היתרון במחלקות מבחינת כתיבת קוד, הוא שהקוד יותר אינטואיטיבי, מאפשר חלוקה מודולרית של התוכנית, ואפשר לטפל בחלקים באופן עצמאי. אם למי שכותב את הקוד נוח יותר לראות
קוד PHP:
 $db->insert(...); 

ולא להריץ שאילתות, זה בחירה שלו.

חוץ מזה, שדווקא במקרה הזה יכולים להיות עוד שיקולים חוץ מ-"האם הייתה שגיאה"...

חוץ מזה, לא דווקא במקרה הזה, אבל הרבה פעמים יש שוניות כאשר בונים שאילתות למסדים נתונים שונים, ומבנה המחלקה הזה מאפשר למתכנת לא לחשוב על זה בכלל ברגע שהוא סיים לבנות את המחלקה שתואמת את מסד הנתונים.

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 05-12-2006, 19:13
  Fixxxer Fixxxer אינו מחובר  
 
חבר מתאריך: 21.09.02
הודעות: 408
בתגובה להודעה מספר 9 שנכתבה על ידי maxim k שמתחילה ב "מחלקות לא משמשות רק ל"שינוי מידי" כמו שקראת לזה"

לא התכוונתי שבאופן כללי שהן משמשות רק לשנוי מידי, אלא שבמקרה הזה, של מחלקה לצורך שליטה נוחה במסד נתונים זה רוב התיפקוד שלה.

נכון, יש אנשים שיותר נוח להם לקרוא את זה ככה, אבל אני באמת לא רואה את ההבדל הגדול בין לרשום:
קוד PHP:
 $db->insert("QUERY"); 

לבין
קוד PHP:
 $db->query("INSERT INTO QUERY"); 

נראה לי סתם מיותר לבנות כל כך הרבה פונצקיות שעושות פעולה שהמתמש יכול היה לפתור בחוסר עצלנות של כתיבת שתי מילים. ואם כבר, אז אני הייתי עושה פרמטר שדרכו אפשרי להעביר מספר ביקורת, או טקסט קבוע מראש שמכריז על סוג השאליתא.

בקשר לתאימות של מסדים, בדיוק לזה התכוונתי שאמרתי שנוי מידי. שינוי בסוג המסד, בצורת הפלט של השגיאות, באירגון התוצאות (אם זה ע"י השמת MYSQL_NUM, לדוגמא).

בסופו של דבר, אין לי בעיה עם השיטה הזאת, אני פשוט לא מוצא אותה לטעמי מהסיבה הנ"ל שפירטתי. לדעתי יש צורך בקוד עדין יותר (סקסי, כמו שאמרתם), קריא יותר ויעיל יותר. המחלקה הקבועה שלי למסדי נתונים כוללת בדרך כלל את כל הפונקציות הבסיסיות, תוספת בשליפת נתונים של MYSQL_ASSOC, פונקציה מותאמת אישית ששולפת רק את התוצאה הראשונה מהמסד לפי שאליתא מסויימת ולקינוח, פונקציה של הודעת שגיאה מותאמת אישית (לפי צורכי האתר). אני לא רואה טעם בלהגזים עם פונקציות מוטעמות אישית יותר מידי, הפשטות לדעתי היא מה שצריכה לשלוט במחלקות, בעוד הסיבוכים הם בקוד עצמו (כל עוד כמובן זה לא סיבוך שחוזר על עצמו לאורך התוכנית, במקרה הזה כמובן שיהיה נחמד לעשות אותו קבוע).
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 06-12-2006, 12:15
צלמית המשתמש של DRagonRage
  DRagonRage DRagonRage אינו מחובר  
 
חבר מתאריך: 22.02.05
הודעות: 496
שלח הודעה דרך ICQ אל DRagonRage
הרצתי בדיקה של מי יותר מהיר:
בתגובה להודעה מספר 3 שנכתבה על ידי Fixxxer שמתחילה ב "הפונקציה שלך נחמדה, אך אפשר..."

קוד PHP:
 #!/usr/bin/php -q
<?php

$array 
= array();

for(
$i=0;$i<1000;$i++)
        
$array[$i] = chr($i);

$start_for microtime();
        foreach(
$array as $into_k => $value) {
                
$into .= "`".$into_k."`,";
                
$insert .= "'".$value."',";
        }
        
$into{strlen($into)-1} = ")";
        
$insert{strlen($insert)-1} = ")";
$end_for microtime();

$start_implode microtime();
        
$fields "(`" implode("`, `"array_keys($array)) . "`)";
        
$values "('" implode("', '"$array) . "')";
$end_implode microtime();

echo 
$for_time $end_for $start_for ."\n";
echo 
$implode_time $end_implode $start_implode;
?> 

יצא ששלך יותר מהיר:
קוד:
leon@Dserv2:~$ ./benchmark.php 0.005009 0.004319 leon@Dserv2:~$ ./benchmark.php 0.005102 0.00456 leon@Dserv2:~$ ./benchmark.php 0.005076 0.00439 leon@Dserv2:~$ ./benchmark.php 0.005108 0.004352 leon@Dserv2:~$ ./benchmark.php 0.005219 0.005707 leon@Dserv2:~$ ./benchmark.php 0.005131 0.004304 leon@Dserv2:~$ ./benchmark.php 0.005027 0.005067 leon@Dserv2:~$

עברתי לשיטה שלך...

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

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

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

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

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



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

הדף נוצר ב 0.06 שניות עם 12 שאילתות

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

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