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

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



  #1  
ישן 01-08-2014, 10:15
  0xfo7d 0xfo7d אינו מחובר  
 
חבר מתאריך: 08.02.05
הודעות: 20
שלח הודעה דרך ICQ אל 0xfo7d
שליפה איטית מאוד של נתונים ממסד נתונים - מה ניתן לעשות?

שלום,
ראשית,
אומר שהמערכת אותה אני מתכנת מבוססת PHP.
המערכת אמורה לנהל טפסי רישום של ילדים לרשת צהרונים.
נכון לרגע זה ישנן 11,470 רשומות בטבלה שנקראת rishum.
כך אני רוצה לשלוף את סטטיסטיקות הטפסים:
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
לוקחות כמה דק' עד שעמוד זה עולה.
הקוד לשליפת הנתונים הינו:
קוד PHP:
 <center>
    <
br />
<
table border=0 cellspacing=1 cellpadding=0 width="1000px">
            <
tr>
                <
td align='right' valign='middle' style='width: 40%;text-align: right;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>שם המוסד</td>
                <
td align='right' valign='middle' style='width: 15%;text-align: right;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רישום לקייטנה</td>
                <
td align='right' valign='middle' style='width: 15%;text-align: right;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>משלמים לקייטנה</td>
                <
td align='center' valign='middle' style='width: 10%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רישום לצהרון</td>
                <
td align='center' valign='middle' style='width: 10%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>משלמים לצהרון</td>
                <
td align='center' valign='middle' style='width: 5%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רשומים לבית ספר</td>
                <
td align='center' valign='middle' style='width: 5%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רשומים לגן</td>
            </
tr>
</
table>
<?

?>

<?php
    $res1 
mysql_query("SELECT * FROM `places` ORDER BY `name` desc");
    while(
$row1 mysql_fetch_array($res1)) {

                
$res_ci mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_ci mysql_num_rows($res_ci);
                
                
$res_ci_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `city`='".$row1["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_ci_PAY mysql_num_rows($res_ci_PAY);

                
$res2_ci mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2_ci mysql_num_rows($res2_ci);
                
                
$res2_ci_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `city`='".$row1["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2_ci_PAY mysql_num_rows($res2_ci_PAY);
                
                
$res_countPerCity_school mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `soog_mosad`='school' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_countPerCity_school mysql_num_rows($res_countPerCity_school);
                
                
$res_countPerCity_gan mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `soog_mosad`='gan' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_countPerCity_gan mysql_num_rows($res_countPerCity_gan);
    

                if((
$row_ci+$row2_ci) > 0) {
?>
<div class="module" style="width: 1000px"><div class="module_name" align='center' style='cursor: hand;cursor: pointer;'>
<table border=0 cellspacing=1 cellpadding=0 width="1000px">
<tr class="try">
    <td align="right" style="text-align: right;width: 40%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row1["name"];?></td>
    <td align="center" style="text-align: center;width: 15%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_ci;?></td>
    <td align="center" style="text-align: center;width: 15%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_ci_PAY;?></td>
    <td align="center" style="text-align: center;width: 10%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row2_ci;?></td>
    <td align="center" style="text-align: center;width: 10%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row2_ci_PAY;?></td>
    <td align="center" style="text-align: center;width: 5%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_countPerCity_school;?></td>
    <td align="center" style="text-align: center;width: 5%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_countPerCity_gan;?></td>
</tr>
</table>
</div><div class="module_links2" align='center'>

<table border=0 cellspacing=1 cellpadding=0 width="1000px">
<?
            $resCITY 
mysql_query("SELECT * FROM `schools` WHERE `city`='".$row1["id"]."' ORDER BY `type` desc,`name`");
            while(
$rowCITY mysql_fetch_array($resCITY)) {

                
$res mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row mysql_num_rows($res);
                
                
$res_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_PAY mysql_num_rows($res_PAY);

                
$res2 mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2 mysql_num_rows($res2);
                
                
$res2_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2_PAY mysql_num_rows($res2_PAY);
                
                

                if((
$row+$row2) > 0) {
?>
<tr>
    <td align="rigth" style="width: 40%;text-align: right;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><?=$rowCITY["name"];?></td>
    <td align="center" style="width: 15%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><a href="index.php?action=rishum&sa=statistics&year=<?=$filterByYear;?>&city=<?=$row1["id"];?>&school=<?=$rowCITY["id"];?>&tofesType=1&typeee=<?=$rowCITY["type"];?><? if($_GET["aougust_form"]) { echo "&aougust_form=1"; } ?>"><?=$row;?></a></td>
    <td align="center" style="width: 15%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><?=$row_PAY;?></td>
    <td align="center" style="width:10%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><a href="index.php?action=rishum&sa=statistics&year=<?=$filterByYear;?>&city=<?=$row1["id"];?>&school=<?=$rowCITY["id"];?>&tofesType=2&typeee=<?=$rowCITY["type"];?><? if($_GET["aougust_form"]) { echo "&aougust_form=1"; } ?>"><?=$row2;?></a></td>
    <td align="center" style="width:10%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><?=$row2_PAY;?></td>
    <td align="center" style="width:5%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"> --- </td>
    <td align="center" style="width:5%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"> --- </td>
</tr>
<?
            
}
            }
?>
</table>
</div></div>
<?
        
}
    }
    

                
$res_all mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all mysql_num_rows($res_all);
                
                
$res_all_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all_PAY mysql_num_rows($res_all_PAY);

                
$res_all2 mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all2 mysql_num_rows($res_all2);
                
                
$res_all2_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all2_PAY mysql_num_rows($res_all2_PAY);
    
    
?>
<table border=0 cellspacing=1 cellpadding=0 width="1000px">
            <tr>
                <td align='right' valign='middle' style='width: 40%;text-align: right;padding: 10px;background: #000;color: #FFF;font-weight: bold;'>סה"כ טפסי רישום</td>
                <td align='center' valign='middle' style='width: 15%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all;?></td>
                <td align='center' valign='middle' style='width: 15%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all_PAY;?></td>
                <td align='center' valign='middle' style='width: 10%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all2;?></td>
                <td align='center' valign='middle' style='width: 10%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all2_PAY;?></td>
                <td align='center' valign='middle' style='width: 5%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'> --- </td>
                <td align='center' valign='middle' style='width: 5%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'> --- </td>
            </tr>
</table>
</center> 
_____________________________________
חתימתך הפרסומית, שהיא בניגוד לחוקי האתר, הוסרה. אם תחזיר אותה, נאלץ לחסום אותך משימוש באתר.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 01-08-2014, 10:29
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 1 שנכתבה על ידי 0xfo7d שמתחילה ב "שליפה איטית מאוד של נתונים ממסד נתונים - מה ניתן לעשות?"

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

אבל לפי הקוד שהצגת, אפשר בקלות להבחין בכמה דברים:
1. אתה מייצר טבלה זמנית, שמאוחסנת ב-RAM וללא אינדקסים, בגלל תת-שאילתת ה-SELECT שקיימת כמעט בכל שאילתא. זה כבר מוריד ביצועים משמעותית.
2. אני מניח שאין אינדקסים בטבלה - כדאי להוסיף
3. אתה מנסה להציג סיכום של כל הנתונים בטבלאות כלשהן במסד.
במקרים מסוימים ניתן גם ליצור טבלה של סיכום, שאותה תעדכן בכל פעם שצריך. זה כמובן יכול לייעל משמעותית את העמוד הספציפי הזה, אבל להאט ביצוע שאר הפעולות בעמודים אחרים.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 01-08-2014, 10:34
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,301
בתגובה להודעה מספר 1 שנכתבה על ידי 0xfo7d שמתחילה ב "שליפה איטית מאוד של נתונים ממסד נתונים - מה ניתן לעשות?"

א. חתימתך הפרסומית שהיא בניגוד לחוקי האתר הוסרה. החזרתה תגרור את חסימתך מהאתר.

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

ג. אין שום סיבה הגיונית בעולם לשלוף את כל הרשומות רק כדי לספור כמה חזרו. במקום לעשות SELECT * עושים (SELECT COUNT(1 ואז התוצאה היא פשוט המספר. זה הרבה יותר מהר

ד. כיוון שיש לך סינונים, צריך שיהיו אינדקסים מתאימים לטבלאות כדי שמסד הנתונים לא יצטרך לבצע Full Table Scan בכל פעם על מנת למצוא את המידע. אתה יכול לקחת שאילתות לדוגמה (כפי שהן יצאו אחרי העיבוד אל מסד הנתונים - כלומר אחרי החלפת הפרמטרים במה שזה לא יהיה) - ולהריץ אותן ב MySQL תוך כדי שאתה מקדים אותן במילה EXPLAIN. כלומר EXPLAIN SELECT... וכו'. כשתעשה את זה, MySQL יכתוב לך כיצד הוא מתכוון להשיג את הנתונים הנדרשים עבור השאילתא שלך, ומהפלט ניתן יהיה להעריך היכן נמצאות נקודות האיטיות. עבור כל טבלה, הצג גם את הפלט של SHOW INDEXES FROM tbl_name כדי שנראה איזה אינדקסים זמינים יש ועל איזה טורים הם חלים.

בעריכה: התחלתי לכתוב תגובה זו לפני שפורסמה התגובה שמעלי, כך שייתכן ויש חזרות מיותרות.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 01-08-2014, 10:54
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,301
בתגובה להודעה מספר 6 שנכתבה על ידי 0xfo7d שמתחילה ב "היי שימי, תודה על..."

זה תמיד היה לא חוקי.

זה לא משנה מה יש בפנים - אתה לא צריך לקבל את השורות בפועל אם כל מטרתך היא לספור כמה מהן יש. זה דורש הכנת כל המידע ושליחתו ממסד הנתונים אל האפליקציה שלך (PHP) ואז עבודה של PHP לספור את הרשומות. והמון הקצאות ושחרורי זיכרון מיותרים לשם כך. כשאתה עושה (COUNT(1, מסד הנתונים פשוט מקדם מונה עבור כל שורה שהוא מצא, ובסוף מחזיר את המונה. כלומר מספר בודד, במקום בעצם כל תוכן מסד הנתונים שלך.

אין לך אינדקסים במסד הנתונים בכלל (למעט המפתח העיקרי, שהוא אינדקס אוטומטי). אתה תצטרך ליצור. יש לך עוד בעייה שאתה מפר את כללי הנורמליזציה, ואז החיפושים שאתה מבצע הם לפי מחרוזות במקום לפי מספר. צריכות להיות טבלאות נפרדות של כל הנתונים שהם חוזרים בין השורות - כמו שם של עיר, סטטוסים, ובכל טבלה יהיה הטקסט וה id, ואצלך יהיה רק רפרנס ל id הזה. החיפושים האלה, גם הם הרבה יותר מהירים, וזה גם מקטין את נפח הטבלה שלך כי אתה לא כותב שם אותו מידע שוב ושוב בכל שורה (מה שבעצמו מאיץ את העבודה). קרא כאן: http://en.wikipedia.org/wiki/Database_normalization

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

לגבי מה זה אינדקס: http://he.wikipedia.org/wiki/%D7%90...%D7%A9%D7%91%29

אני אתן לך את הכיוון שלדעתי אתה צריך ללכת אליו:

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

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

בפועל זה אומר שאם תשלוף את רשימת כל המוסדות (כשלצד כל מוסד, העיר שלו) - ועבור כל מוסד תקבל את סך הרישום/משלמים לקיטנה/צהרון (על ידי (COUNT(1 של GROUP BY בתוך תתי השאילתא עבור כל שדה) - תקבל בפועל ממסד הנתונים טבלה שמכילה את כל נתונים הטבלה שלך, רק בלי הסיכומים של הערים. את הטבלה הזו אתה תמיין עוד בשלב מסד הנתונים עם ORDER BY לפי שדה העיר (ואולי לפי שדה העיר ואז שדה המוסד, אם חשוב לך המיון א-ב בפנים), והתוצאה תהיה מערך דו מימדי שמכיל את כל הנתונים על כל המוסדות - ללא חלוקה לערים שאותה אתה מממש היום, למיטב הבנתי, באמצעות הלולאה. כיוון שאתה רוצה את כל הנתונים, אז פילטור כל אחת מהערים בנפרד רק כדי לקבל בסוף את כולן, גם הוא מיותר.

הנ"ל יהיה מעט מאוד מידע. מה שישאר לך לעשות, בצד האפליקציה, זה לרוץ על כל התוצאות, ולפזר את זה למערך תלת-מימדי שראשו הוא מזהה העיר. אחרי זה תוכל לרוץ עם foreach על המערך, ועבור כל עיר, לרנדר את ה HTML שאתה רואה היום. ת'אכלס לא באמת חייבים את המערך התלת מימדי באמצע, אתה תוכל לרנדר ישירות מהתוצאות, אבל זה אומר שאתה תצטרך להבין מתי לייצר את הכותרות של כל עיר (רמז: כשהרשומה הנוכחית היא בעלת עיר שונה מהעיר הקודמת שרינדרת). הבחירה בידך...
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 01-08-2014, 11:20
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,301
בתגובה להודעה מספר 8 שנכתבה על ידי 0xfo7d שמתחילה ב "רק לוודא שהבנתי נכון- בסופו..."

לדעתי כן. אבל אל תשכח שאני לא יודע מה שאתה יודע על מבני הנתונים שלך. על מה יכול להיות בכל שדה, וכו'.

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 01-08-2014, 12:01
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,301
בתגובה להודעה מספר 10 שנכתבה על ידי 0xfo7d שמתחילה ב "אוקיי אני אנסה את זה. איך אני..."

ההנחה שלי היא שאתה מצליח להוציא ממסד הנתונים פלט שנראה כך:

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

נניח שזה חזר למשתנה $res מ mysql_query שהכיל את השאילתא שתוצאתה הטבלה שלעיל...

קוד PHP:
 while ($r mysql_fetch_assoc($res)) {
  
$cities["{$r['city_id']}"]["{$r['mossad_id']}"][] = $r;
  
$city_summary["{$r['city_id']}"]['total_reg_summer'] += $r['reg_summer'];
  
$city_summary["{$r['city_id']}"]['total_pay_summer'] += $r['pay_summer'];



ואז:
קוד PHP:
 foreach($cities as $city_name => $city_mossadot) {
  
// show HTML content for city, like table header in your output
  // Can use $city_summary["$city_name"]["needed_total_key"] to fill in the totals

  
foreach($city_mossadot as $city_mossad) {
    
// print row for specific mossad
  
}



זהו, ת'אכלס...
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

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

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

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

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

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



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

הדף נוצר ב 1.67 שניות עם 10 שאילתות

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

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