النتائج 1 إلى 4 من 4

الموضوع: مطلوب استعلام قواعد بيانات بشكل محترف .. الغرض برنامج حسابي

  1. #1
    عضو جديد
    تاريخ التسجيل
    May 2007
    المشاركات
    13

    مطلوب الإستعلام من 4 جداول في في أقصر أسطر ..



    أقوم حاليا بتطوير برنامج حسابي ... وهو دقيق جدا ..
    قمت بإنشاء استعلام أدى الواجب المطلوب منه ولكني احس ان الأستعلام طويل ومعقد نوعا ما
    فأنا لست خبيرا في مجال قواعد البيانات والأستعلامات المحترفة.
    وكنت اتمنى ان توفر سوالف سوفت قسم خاص بقواعد البيانات وطريقة كتابة الأستعلامات.

    عموما ..
    قمت بإنشاء 3 استعلامات لإظهار سطر واحد فقط .. والمطلوب التقليل من الأستعلامات :con2:
    الرجاء مراجعة المرفقات لمشاهدة طريقة ظهور البيانات..

    -------------------- شرح الأستعلام
    1- المطلوب:
    - أستخراج مجموع أسعار البضائع ووضعها في فاتورة تظهر المبلغ المستحق ..
    - أستخراج مجموع الأرصدة والمبالغ التي دفعها الزبون.
    - (جزء قمت بها بشكل جيد) أستخراج المتبقي بعملية حسابية صغيرة .. بطرح مجموع الأرصدة من مجموع أسعار البضائع المشترى.


    2- قواعد البيانات:
    هناك 4 قواعد ..
    أ- images وهي تحوي البضائع
    ب- orders .. وهي تحوي الفواتير
    ت -orders_receipts .. وهي تحوي الأرصدة
    ث - users .. وهي تحوي اسماء العملاء

    كود PHP:

    -- phpMyAdmin SQL Dump
    -- version 2.8.2
    -- http://www.phpmyadmin.net
    -- 
    -- 
    Hostlocalhost
    -- Generation TimeJun 192008 at 10:53 PM
    -- Server version5.0.22
    -- PHP Version5.1.4
    -- 
    -- 
    Database: `account`
    -- 

    -- --------------------------------------------------------

    -- 
    -- 
    Table structure for table `images`
    -- 

    CREATE TABLE `images` (
      `
    imageidint(11NOT NULL auto_increment,
      `
    catidint(11NOT NULL default '0',
      `
    useridint(11NOT NULL default '0',
      `
    comp_idint(11NOT NULL default '0',
      `
    namevarchar(255NOT NULL default '',
      `
    codevarchar(255) default NULL,
      `
    detailstext NOT NULL,
      `
    pricedecimal(11,3) default NULL,
      `
    quantityint(11NOT NULL default '0',
      `
    quantity_storeint(11NOT NULL,
      `
    dateint(25NOT NULL default '0',
      `
    activetinyint(1NOT NULL default '0',
      `
    hitsint(11NOT NULL default '0',
      `
    imagevarchar(255) default NULL,
      `
    thumbnailvarchar(255) default NULL,
      `
    typetinyint(1NOT NULL default '0',
      `
    widthint(11NOT NULL default '0',
      `
    heightint(11NOT NULL default '0',
      `
    sizeint(11NOT NULL default '0',
      `
    buy_typetinyint(1NOT NULL default '0',
      `
    buy_timeint(25) default NULL,
      `
    timeint(25NOT NULL default '0',
      `
    expire_dateint(25NOT NULL,
      `
    periodint(25) default NULL,
      
    PRIMARY KEY  (`imageid`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

    -- 
    -- 
    Dumping data for table `images`
    -- 

    INSERT INTO `imagesVALUES (1000'ÓãäÊ''54''ÇáÊÝÇÕíá åäÇ ...''25.000'33453000NULLNULL00000NULL00NULL);
    INSERT INTO `imagesVALUES (2000'Ãáãäíæã''dgfd''''200.000'33453000NULLNULL00000NULL00NULL);
    INSERT INTO `imagesVALUES (3000'ßäßÑí''none''''100.000'150120000NULLNULL00000NULL00NULL);

    -- --------------------------------------------------------

    -- 
    -- 
    Table structure for table `orders`
    -- 

    CREATE TABLE `orders` (
      `
    idint(11NOT NULL auto_increment,
      `
    useridint(11NOT NULL default '0',
      `
    itemstext NOT NULL,
      `
    amountdecimal(11,3NOT NULL,
      `
    discountdecimal(11,3NOT NULL,
      `
    trans_idbigint(25NOT NULL,
      `
    payment_idbigint(25NOT NULL,
      `
    messagetext NOT NULL,
      `
    dateint(25NOT NULL default '0',
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

    -- 
    -- 
    Dumping data for table `orders`
    -- 

    INSERT INTO `ordersVALUES (24'3,3,1''0.000''0.000'00''1213815142);
    INSERT INTO `ordersVALUES (35'1''0.000''0.000'00''1213816354);
    INSERT INTO `ordersVALUES (44'2''0.000''0.000'00''1213870333);

    -- --------------------------------------------------------

    -- 
    -- 
    Table structure for table `orders_receipts`
    -- 

    CREATE TABLE `orders_receipts` (
      `
    idint(11NOT NULL auto_increment,
      `
    orderidint(11NOT NULL,
      `
    amountdecimal(11,3NOT NULL,
      `
    received_fromvarchar(255NOT NULL,
      `
    typetinyint(1NOT NULL,
      `
    dateint(25NOT NULL,
      `
    bank_namevarchar(255NOT NULL,
      `
    check_numvarchar(255NOT NULL,
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

    -- 
    -- 
    Dumping data for table `orders_receipts`
    -- 

    INSERT INTO `orders_receiptsVALUES (52'200.000''ÇáÓíÏ ãÍãÏ'01213876957'''');
    INSERT INTO `orders_receiptsVALUES (62'25.000'''01213879058'''');
    INSERT INTO `orders_receiptsVALUES (74'200.000''hassan'01213888806'''');

    -- --------------------------------------------------------

    -- 
    -- 
    Table structure for table `users`
    -- 

    CREATE TABLE `users` (
      `
    useridint(10unsigned NOT NULL auto_increment,
      `
    user_groupint(11NOT NULL,
      `
    useremailvarbinary(255NOT NULL default '                                                                                                                                                                                                                                                               ',
      `
    infotext NOT NULL,
      `
    fnamevarchar(255character set latin1 collate latin1_bin NOT NULL default '',
      `
    companyvarchar(255NOT NULL,
      `
    cprint(10NOT NULL,
      `
    zipvarchar(15character set latin1 collate latin1_bin NOT NULL default '',
      `
    telvarchar(255character set latin1 collate latin1_bin NOT NULL default '',
      `
    mobilevarchar(255NOT NULL,
      `
    faxvarchar(255character set latin1 collate latin1_bin NOT NULL default '',
      `
    countryint(11NOT NULL default '0',
      `
    cityvarchar(255character set latin1 collate latin1_bin NOT NULL default '',
      `
    websitevarchar(255NOT NULL default '',
      `
    poboxvarchar(255NOT NULL,
      `
    areavarchar(255NOT NULL,
      `
    blockvarchar(255NOT NULL,
      `
    roadvarchar(255NOT NULL,
      `
    buildingvarchar(255NOT NULL,
      `
    reg_dateint(25NOT NULL default '0',
      `
    photovarchar(255NOT NULL default '',
      
    PRIMARY KEY  (`userid`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

    -- 
    -- 
    Dumping data for table `users`
    -- 

    INSERT INTO `usersVALUES (400x616d65656e40686f746d61696c2e636f6d'ãáÇÍÙÇÊ åäÇ'0xc387c3a1c393c3adc38f20c3a3c38dc3a3c38f20c383c3a3c3adc3a4'æÇíÏ ÊßäæáæÌí'801110653''0x3937333339353430353633'97339540563'0x31373535363638380'''http://www.malkiya.net''2001''ÇáãÇáßíÉ''15463''45487''9898'0'');
    INSERT INTO `usersVALUES (500x616d65656e40686f746d61696c2e636f6d'ãáÇÍÙÇÊ åäÇ'0xc3a3c38dc393c3a420c38cc39ac39dc391''0''0x3937333339353430353633'97339540563'0x31373535363638380'''http://www.malkiya.net''''ÇáãÇáßíÉ''15463''45487''9898'0'');
    INSERT INTO `usersVALUES (70''''0x537465766965''801210653''0x353433353433'5435435'''0''''''''''''''0''); 
    --------------------------------------------------
    3- الأستعلامات المستخدمة:


    كود PHP:

    config
    .php file here

    if(!isset($_GET['page'])){
        
    $page 1;
    } else {
        
    $page $_GET['page'];
    }

    // Define the number of results per page
    $max_results 30;

    // Figure out the limit for the query based
    // on the current page number.
    $from = (($page $max_results) - $max_results);

    // Perform MySQL query on only the current page number's results


    $view_orders mysql_query("SELECT * FROM orders ORDER BY id DESC LIMIT $from$max_results")Or Die(MySQL_Error());

    /////////////////////////////////////////////////////////////////////////////////////////////

    /////////
    echo "
    <table width='95%' border='1' align='center' cellpadding='2' cellspacing='0' bordercolor='#666666' bgcolor='#F5F4F3' id='AutoNumber1' style='border-collapse: collapse'>
    <tr align='center'>
      <td width='6%' bgcolor='#CCCCCC'>حذف</td>
      <td width='7%' bgcolor='#CCCCCC'>تعديل</td>
      <td width='11%' bgcolor='#CCCCCC'>الحالة</td>
      <td width='12%' bgcolor='#CCCCCC'>المتبقي</td>
      <td width='10%' bgcolor='#CCCCCC'>المدفوع</td>
      <td width='15%'  valign='middle' bgcolor='#CCCCCC'>السعر</td>
      <td width='39%' valign='middle' bgcolor='#CCCCCC'>أسم العميل</td>
      </tr>
    </table>
    "
    ;

    ///////
    while($order_row mysql_fetch_array($view_orders)){


     
    ///////////////////////// COULCULATE ITEMS PRICES TOTAL
    $total 0;

    $items explode(',',$order_row['items']);
    $contents = array();
    foreach (
    $items as $item) {
    $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1;
    }
    foreach (
    $contents as $imageid=>$qty) {
    // Query
    $Products_querymysql_query("select * from images WHERE imageid='$imageid' ") Or Die(MySQL_Error());
    while(
    $row_images mysql_fetch_array($Products_query)){ 
    $total += ($row_images['price'] * $qty);
    // END WHILE
    // END FOR EACH
    //////////////-----------------------------

    $total number_format(($total$order_row['discount']), 3'.''');
     
    ///////////////////////// END COULCULATE ITEMS PRICES TOTAL
     
    /////+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ////----------------------------------------
    $paid_info "00.000";
    $view_orders_receipts mysql_query("SELECT * FROM orders_receipts WHERE orderid='{$order_row['id']}' ")Or Die(MySQL_Error());
    $num_orders_receipts mysql_num_rows($view_orders_receipts);

    while(
    $orders_receipts_row mysql_fetch_array($view_orders_receipts)){
    $paid_info += stripslashes($orders_receipts_row['amount']);
    // end while
    $paid_info number_format($paid_info3'.''');
    mysql_free_result($view_orders_receipts);
    //----
    $view_users mysql_query("SELECT fname FROM users WHERE userid='{$order_row['userid']}' ")Or Die(MySQL_Error());
    $num_users mysql_num_rows($view_users);
    if (
    $num_users 1) {
    $CLIENT_NAME "";
    } else {
    while(
    $users_row mysql_fetch_array($view_users)){
    $CLIENT_NAME stripslashes($users_row['fname']);
    }
    // end while
    // end if no result 
    mysql_free_result($view_users);
    ////----------------------------------------

    $balance_info number_format(($total$paid_info), 3'.''');

    if (
    $balance_info <= 0) { $status_info "<font color='green'>مدفوع</font>"; } else {$status_info "<font color='red'>غير مدفوع</font>"; }
    /////+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    // go on
    echo "
    <table width='95%' border='1' align='center' cellpadding='2' cellspacing='0' bordercolor='#666666' bgcolor='#F5F4F3' id='AutoNumber2' style='border-collapse: collapse'>
      <tr align='center'>
        <td width='6%'><a href='orders.php?action=delcon&id=
    {$order_row['id']}'>حذف</a></td>
        <td width='7%'><a href='orders_cart.php?id=
    {$order_row['id']}' target='_blank'>تعديل</a></td>
        <td width='11%'>
    $status_info</td>
        <td width='12%'  dir='rtl'>
    $balance_info</td>
        <td width='10%'  dir='rtl'>
    $paid_info</td>
        <td width='15%'  valign='middle' dir='rtl'>
    {$total}</td>
        <td width='39%' valign='middle'><a href='orders_cart.php?id=
    {$order_row['id']}' target='_blank'>$CLIENT_NAME</a></td>
      </tr>
    </table>
    "
    ;
    }

    /////////////////////////
    // Figure out the total number of results in DB:
    $total_results mysql_result(mysql_query("SELECT COUNT(*) as Num FROM orders "),0);

    // Figure out the total number of pages. Always round up using ceil()
    $total_pages ceil($total_results $max_results);

    // Build Page Number Hyperlinks
            
    if ($total_pages>1){
    echo 
    "<center dir='rtl'>اختر الصفحة<br />";
    }
    // Build Previous Link
    if($page 1){
        
    $prev = ($page 1);
        echo 
    "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\"><<السابق</a> ";
    }

    for(
    $i 1$i <= $total_pages$i++){
        if((
    $page) == $i){
            if (
    $total_pages>1){
            echo 
    "$i ";
                    }
            } else {
                echo 
    "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
        }
    }

    // Build Next Link
    if($page $total_pages){
        
    $next = ($page 1);
        echo 
    "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">التالي>></a>";
    }
    echo 
    "</center>"






    الصور المرفقة الصور المرفقة  
    التعديل الأخير تم بواسطة ameenov ; 19-06-2008 الساعة 11:34 PM


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    202


    لست محترف لكن احببت ان اساعدك لانه يوجد ثغرة في هذا الكود
    وهي :

    if(!isset($_GET['page'])){
    $page = 1;
    } else {
    $page = $_GET['page'];
    }

    استخدم الدالة inteval لحماية السكربت
    بحيث تكون بالشكل التالي
    if(!isset($_GET['page']))
    {
    $page =intval($_GET['page']);






  3. #3
    عضو جديد
    تاريخ التسجيل
    May 2007
    المشاركات
    13


    الأخ محمد منذر

    أشكرك كثيرا للتنبيه .. دائما استخدم هذا الدال ولكن لكثر الأسطر والكودات انسى
    لتطوير السكربت المتكامل تحتاج للكثير من الجهد

    أشكرك كثيرا مرة أخرى






  4. #4
    عضو جديد
    تاريخ التسجيل
    May 2007
    المشاركات
    13


    إما ان يكون السؤال غير واضح او ان المسألة صعبة !!
    فهل من مجيب










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض