الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

If Statment

بدأه سعيد محمد في 21 مايو 2008 · 26 رد · 3,188 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

في البداية أشكر الأخ محمد معاشر لتشجيعه لي لوضع المشاركة في العام ..

في الحقيقة لدي مشكلة في الـ if statment

لدي منتج وأريد أن أنقص الكمية في كل مرة يشتري منها المستخدم وينقل البيانات الى الداتا بيس

كما اريد تغيير حالة المنتج اذا كان 1 فعند اشترائه اريده يتغير إلى حالة غير موجود ..

هذا الكود الذي توصلت له .. لكن لا اعلم أين الخطأ !!

$sql = "update product set pdt_quantity = pdt_quantity - 1 WHERE product_id = '$product_id' ";
$sql1 = "insert into sales (customer_id,product_id) VALUES ('$customer_id' ,$product_id)";
$sql2 = "update product set product_status = 'sold' WHERE product_id = '$product_id' ";


if ($product_quantity == 1 ) {
   mysql_query($sql) or  die("error");
   mysql_query($sql1) or  die("error");
   mysql_query($sql2) or  die("error");
}

elseif ($product_quantity == 0 ) {
	   echo" you cannot buy this product";
	   }

else {
   mysql_query($sql) or  die("error");
   mysql_query($sql1) or  die("error");

}

تم تعديل هذه المشاركة بواسطة سعيد محمد في 21 مايو 2008 في 14:24

#2

أتمنى نقل الموضوع إلى قسم الـ php لأني وضعته في قسم قواعد البيانات

تم تعديل هذه المشاركة بواسطة سعيد محمد في 21 مايو 2008 في 15:10

#3
اقتباس
هذا الكود الذي توصلت له .. لكن لا اعلم أين الخطأ !!

ما هي رسالة الخطأ التي تظهر لك؟

تم تعديل هذه المشاركة بواسطة المبرمج أحمد في 21 مايو 2008 في 16:47

سبحان الله وبحمده ... سبحان الله العظيم

#4

أخي الكريم:

أولاً: حاول وضع رسائل خطأ مختلفة في كل عبارة die حتى تستطيع تمييز الخطأ من أي عبارة:

mysql_query($sql) or  die("error in sql");
mysql_query($sql1) or  die("error in sql1");
mysql_query($sql2) or  die("error in sql2");

ثانياً: في العبارة الثانية ينقصك ' ، لتصبح العبارة:

$sql1 = "insert into sales (customer_id,product_id) VALUES ('$customer_id' ,'$product_id')";
#5
اقتباس
ثانياً: في العبارة الثانية ينقصك ' ، لتصبح العبارة:

$sql1 = "insert into sales (customer_id,product_id) VALUES ('$customer_id' ,'$product_id')";

لا اعتقد ذلك , فالـproduct_id عباره عن حقل من النوع العددي ولايحتاج الى علامه الاقتباس الاحادية ..

نقطه اخرى , هل قمت في البداية بالاستعلام عن product_quantity ووضعها في المتغير $product_quantity ؟

تم تعديل هذه المشاركة بواسطة محمد معاشر في 21 مايو 2008 في 17:03

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

#6
المبرمج أحمد كتب:
ما هي رسالة الخطأ التي تظهر لك؟

مثال عندما أضغط على منتج كميته 1 فقط ..

يطبع لي you cannot buy this product

لا أعلم لماذا ؟ وهذا على أي منتج سواء كميته 10 او حتى صفر ..

خالد_الحوراني كتب:
أخي الكريم:

أولاً: حاول وضع رسائل خطأ مختلفة في كل عبارة die حتى تستطيع تمييز الخطأ من أي عبارة:

mysql_query($sql) or  die("error in sql");
mysql_query($sql1) or  die("error in sql1");
mysql_query($sql2) or  die("error in sql2");

ثانياً: في العبارة الثانية ينقصك ' ، لتصبح العبارة:

$sql1 = "insert into sales (customer_id,product_id) VALUES ('$customer_id' ,'$product_id')";

حسناً .. سأغير رسائل الخطأ ..

بالنسبة للنقطة الثانية فهي ليست سبب المشكلة لأن القيم عددية ..

محمد معاشر كتب:
]

نقطه اخرى , هل قمت في البداية بالاستعلام عن product_quantity ووضعها في المتغير $product_quantity ؟

نعم كتبت

 $product_quantity = $_GET['product_quantity'];
#7

جرب الآتي :

$sql = "update product set pdt_quantity = pdt_quantity - 1 WHERE product_id = '$product_id' ";
$sql1 = "insert into sales (customer_id,product_id) VALUES ('$customer_id' ,$product_id)";
$sql2 = "update product set product_status = 'sold' WHERE product_id = '$product_id' ";
$result= mysql_query("SELECT * FROM product", $link);
$product_quantity = mysql_num_rows($result);
if ($product_quantity >= 1 ) {
   mysql_query($sql) or  die("error");
   mysql_query($sql1) or  die("error");
   mysql_query($sql2) or  die("error");
}

elseif ($product_quantity == 0 ) {
	   echo" you cannot buy this product";
	   }

else {
   mysql_query($sql) or  die("error");
   mysql_query($sql1) or  die("error");

}

تم تعديل هذه المشاركة بواسطة SIFE-C في 21 مايو 2008 في 17:04

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#8
SIFE-C كتب:
جرب الآتي :

$sql = "update product set pdt_quantity = pdt_quantity - 1 WHERE product_id = '$product_id' ";
$sql1 = "insert into sales (customer_id,product_id) VALUES ('$customer_id' ,$product_id)";
$sql2 = "update product set product_status = 'sold' WHERE product_id = '$product_id' ";
$result= mysql_query("SELECT * FROM product", $link);
$product_quantity = mysql_num_rows($result);
if ($product_quantity >= 1 ) {
   mysql_query($sql) or  die("error");
   mysql_query($sql1) or  die("error");
   mysql_query($sql2) or  die("error");
}

elseif ($product_quantity == 0 ) {
	   echo" you cannot buy this product";
	   }

else {
   mysql_query($sql) or  die("error");
   mysql_query($sql1) or  die("error");

}

بدل

 $result= mysql_query("SELECT * FROM product", $link);
$product_quantity = mysql_num_rows($result);

استخدمت

 $product_quantity = $_GET['product_quantity'];

وأيضا استخدمت

if ($product_quantity >= 1 ) {

لكن نفس المشكلة لازالت موجوده فهو يطبع لي

you cannot buy the product

#9

عفواً على الخطأ فعلاً لا تحتاج ل "

حاول الإطلاع على محتوى جدولك من برنامج phpmyadmin

#10

الفكرة كانت حساب عدد السجلات الموجودة أتمنى لو تعطينا تفاصيل أكثر لجداولك مع شرح محتوى كل واحد .

تم تعديل هذه المشاركة بواسطة SIFE-C في 21 مايو 2008 في 18:53

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#11
SIFE-C كتب:
الفكرة كانت حساب عدد السجلات الموجودة أتمنى لو تعطينا تفاصيل أكثر لجداولك مع شرح محتوى كل واحد .

لدي 3 جداول ..

جدول المنتجات .. يحتوي على رقم المنتج واسمه وسعره والكمية المتوفرة منه .

جدول المشتري .. يحتوي على اسم المشتري والبيانات الخاصة به .

جدول المشتريات .. وهو يربط بين الجدولين السابقين ويحتوي على اسم المشتري ورقم المنتج

#12

أعتقد بأن الخطأ يقع في السطر التالي :

$product_quantity = $_GET['product_quantity'];

جرب وضع الكود التالي بدل السابق ( نفس فكرة أخي سيف ) ، وأخبرنا بالنتائج :

$quantity = mysql_fetch_array(mysql_query("Select * from Products WHERE product_id = $product_id;"));
$product_quantity=$quantity['pdt_quantity'];

تم تعديل هذه المشاركة بواسطة المبرمج أحمد في 21 مايو 2008 في 19:22

سبحان الله وبحمده ... سبحان الله العظيم

#13

اذا لم تكن تمرر الكمية من صفحه الادخال الى صفحه المعالجه من خلال GET او POST , فيجب ان تقوم بما قاله لك المبرمج احمد ..

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

#14
المبرمج أحمد كتب:
أعتقد بأن الخطأ يقع في السطر التالي :

$product_quantity = $_GET['product_quantity'];

جرب وضع الكود التالي بدل السابق ( نفس فكرة أخي سيف ) ، وأخبرنا بالنتائج :

$quantity = mysql_fetch_array(mysql_query("Select * from Products WHERE product_id = $product_id;"));
$product_quantity=$quantity['pdt_quantity'];

عندما جربت الكود الجديد تطلع لي ايرور

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\www\buy.php on line 6

line 6 هو

[code]$quantity = mysql_fetch_array(mysql_query("Select * from Products WHERE product_id = $product_id;"));

جربت ازيل ; من بعد $pdt_id لكن يطبع لي نفس المسج مرة ثانية

محمد معاشر كتب:
اذا لم تكن تمرر الكمية من صفحه الادخال الى صفحه المعالجه من خلال GET او POST , فيجب ان تقوم بما قاله لك المبرمج احمد ..

لم استخدم الـ POST ولكن استخدمت الـ GET فقط لـ رقم المنتج ..

#15
اقتباس
لم استخدم الـ POST ولكن استخدمت الـ GET فقط لـ رقم المنتج ..

إذن لماذا استخدمت $_GET['product_quantity']; ؟

سبحان الله وبحمده ... سبحان الله العظيم

#16
اقتباس
line 6 هو

$quantity = mysql_fetch_array(mysql_query("Select * from Products WHERE product_id = $product_id;"));

اخ محمد سعيد , حاول ان تركز عند كتابتك للاكواد , لاحظ انك اضفت فاصلة منقوطه ; وذلك في بداخل الاستلام وتحديد بعد المتغير $product_id , لماذا ؟؟

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

#17
المبرمج أحمد كتب:
إذن لماذا استخدمت $_GET['product_quantity']; ؟

لأعرف كمية المنتج

محمد معاشر كتب:
اخ محمد سعيد , حاول ان تركز عند كتابتك للاكواد , لاحظ انك اضفت فاصلة منقوطه ; وذلك في بداخل الاستلام وتحديد بعد المتغير $product_id , لماذا ؟؟

نبهته على هذا الشيء سابقاً ولكن حتى مع إزالتها يبقى هناك خطأ لكن لا اعلم أين

#18

أخي سعيد محمد عليك أن تضيف مقبض الإتصال .

$connect = mysql_connect($server,$user,$pass);
$quantity = mysql_fetch_array(mysql_query("Select * from Products WHERE product_id = $product_id"),$connect);

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#19

@محمد معاشر : الفاصلة المنقوطة هي لاستعلام ال MySQL ... ويمكن عدم كتابتها

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

#20
SIFE-C كتب:
أخي سعيد محمد عليك أن تضيف مقبض الإتصال .

$connect = mysql_connect($server,$user,$pass);
$quantity = mysql_fetch_array(mysql_query("Select * from Products WHERE product_id = $product_id"),$connect);

وأخيرا .. الحمد لله اشتغل

لكن حبيت اعرف سبب اضافة الكونكت في هذا الكود

$quantity = mysql_fetch_array(mysql_query("Select * from Products WHERE product_id = $product_id"),$connect);

وجزاك الله خير الجزاء وكل من شارك في الموضوع وساهم بالمشاركة

#21

كلامك صحيح خالد , ولكن لاداعي لعمل ذلك , فهو الان يستخدم PHP , ولايستخدم MySQL console .

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

#22
خالد_الحوراني كتب:
@محمد معاشر : الفاصلة المنقوطة هي لاستعلام ال MySQL ... ويمكن عدم كتابتها

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

تم حل المشكلة ..

شكرا أخي الفاضل ..

#23
اقتباس
لكن حبيت اعرف سبب اضافة الكونكت في هذا الكود

من بين الفوائد التي أعرفها أنه يكون بمثابة مراقب أي أنه يفحص الإتصال إن قطع أم لا .

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

تم تعديل هذه المشاركة بواسطة SIFE-C في 21 مايو 2008 في 22:20

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#24

الحمدلله :rolleyes:

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

#25
SIFE-C كتب:
من بين الفوائد التي أعرفها أنه يكون بمثابة مراقب أي أنه يفحص الإتصال إن قطع أم لا .

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

اهاا .. معلومة جديدة .. شكرا مرة أخرى

محمد معاشر كتب:
الحمدلله :rolleyes:

الحمد لله فقد تعلمت اشياء جديدة لم أكن اعرفها من قبل

مواضيع مشابهة