تغطية مباشرة لأحداث منتدى الإعلام الجديد المقام بمدينة أبوظبي
هل تقترح تمديد مسابقة سوالف كاست؟

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو جديد
تاريخ التسجيل: May 2007-
#1 (permalink)  
مطلوب الإستعلام من 4 جداول في في أقصر أسطر ..


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

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

-------------------- شرح الأستعلام
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>"






الصور المصغرة للصور المرفقة
اضغط على الصورة لعرض أكبر

الاســـم:	untitled.JPG‏
المشاهدات:	21
الحجـــم:	16.3 كيلوبايت
الرقم:	41039  

التعديل الأخير تم بواسطة : ameenov بتاريخ 19-06-2008 الساعة 10:34 PM.
ameenov غير متواجد حالياً   قديم 19-06-2008, 09:48 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#2 (permalink)  

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

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

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






محمد منذر غير متواجد حالياً   قديم 19-06-2008, 10:33 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: May 2007-
#3 (permalink)  

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

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

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






ameenov غير متواجد حالياً   قديم 19-06-2008, 10:36 PM
رد مع اقتباس
عضو جديد
تاريخ التسجيل: May 2007-
#4 (permalink)  

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






ameenov غير متواجد حالياً   قديم 24-06-2008, 10:49 PM
رد مع اقتباس
رد


 

أدوات الموضوع

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

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
هل هناك برنامج لعمل قواعد بيانات MySQL مثل الأكسس؟ N-DES تطوير الويب 5 28-12-2007 12:12 AM
---( 35) --- برنامج بالسورس كود للبيع ضع سومك واسلتم lcoom خدمات البيع والشراء والإعلانات التجارية 0 01-08-2007 04:30 AM
مطلوب عمل قواعد بيانات لموقع على servage $$ mohdy قسم تبادل خبرات الاستضافة 9 14-07-2007 02:05 PM
مطلوب محترف asp + java script لتطوير برنامج صوتي SuperTech خدمات البيع والشراء والإعلانات التجارية 2 05-02-2007 11:25 AM
برنامج عربي من تصميمي لإدارة الأخبار لا يحتاج قواعد بيانات الخبير تطوير الويب 20 15-05-2001 03:58 AM


الساعة الآن: 09:05 AM بتوقيت المملكة العربية السعودية