يوم سوالف، في 7 أغسطس القادم

 

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

رد
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: May 2006-
#1 (permalink)  
ما الخطأ في هذا الكود ارجو المساعدة


السلام عليكم ورحم الله
ارجو من الاخوة الخبراء في php ان يطلعوني على الخطأ الموجود في هذا الكو د حيث ان العمليات الحسابية لا تتم بشكل صحيح
لدينا جدولين واحد لاسماء المستخدمين ومعلوماتهم ورصيدهم وآخر لمعلومات بطاقات تعبئة الرصيد
المطلوب هو اخذ القيمة من جدول البطاقات values عندما رقم البطاقة السري يساوي الرقم المدخل
وأخذ قيمة رصيد المستخدم من جدول المستخدمين pts
وجمعهما
ثم تحديث جدول المستخدمين ووضع قيمة الرصيد الجديدة الناتجة عن جمع القيمتين قيمة رصي المستخدم + قيمة البطاقة
قمت بتجربة الكود ولكن يبدو ان هناك مشكلة ما حيث ان المتغير $ardvalue يكون فارغا وا يحمل اي قيمة
وكذلك المتغير $pts
أو ربما عمية الجمع لا تتم او انني كتبت الود بشكل خاطئ
ارجو المساعدة بارك الله فيكم واحسن الله اليكم

كود PHP:
<html>
<body>
<?
$date
date ("j/n/y");
$conn mysql_connect ("localhost","root","")
    or die (
"هناك خطأ في الاتصال بقواعد البيانات  يرجى مراسلتنا على [email]sdfadfsdsfsdwss@hotmail.com[/email]");

$sql mysql_db_query ("database","select values from cards where secret_number = '$secret_number' and status = '1'");
while (
$row mysql_fetch_array ($sql)) {
$cardvalue $row[values];

}
$hash=MD5($Password);
$sql2 mysql_db_query ("database","select pts from users_accounts where user_name = '$user_name' and password = '$hash'");
while (
$row mysql_fetch_array ($sql2)) {
$pts $row[pts];
}
$new_value $pts $cardvalue;

if (
$new_value>$cardvalue>0) {
$updatecards mysql_db_query ("database","UPDATE `cards` SET , `status` = '1', `for_user` = '$user_name', `date` = '$date' WHERE `secret_number` = `$secret_number`");
$updatepts mysql_db_query ("database","UPDATE `users_accounts` SET `pts` = '$new_value' WHERE `user_name` = `$user_name`");
}else{
echo 
"لم يتم اضافة القيمة الى رصيدك تأكد من اسم المستخدم وكلمة المرور ورقم البطاقة السري ثم أعد المحاولة مرة أخى";
}
<?
</
body>
</
html>






i2h.org غير متواجد حالياً   قديم 04-08-2006, 09:46 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Jul 2003-
#2 (permalink)  

عزيزي المشكلة بسيطة جدا إن شاء الله ..


الفكرة هي ، قبل اي استعلام يجب ان تسال نفسك .. النتيجة او ال result من عملية الاستعلام ممكن يكون اكثر من نتيجة ؟

لا ؟ اذا لا داعي لاستعمال while

لأن النتيجة ستكون واحدة باي من الاحوال

هذا هو نفس كود :
كود PHP:
 <html> 
<body> 
<? 
$date
date ("j/n/y"); 
$conn mysql_connect ("localhost","root",""
    or die (
"هناك خطأ في الاتصال بقواعد البيانات  يرجى مراسلتنا على [email]sdfadfsdsfsdwss@hotmail.com[/email]"); 

$sql mysql_db_query ("database","select values from cards where secret_number = '$secret_number' and status = '1'"); 
$row mysql_fetch_array ($sql); 
$cardvalue $row[values]; 

$hash=MD5($Password); 
$sql2 mysql_db_query ("database","select pts from users_accounts where user_name = '$user_name' and password = '$hash'"); 
$row mysql_fetch_array ($sql2);
$pts $row[pts]; 

$new_value $pts $cardvalue

if (
$new_value>$cardvalue>0) { 
$updatecards mysql_db_query ("database","UPDATE `cards` SET , `status` = '1', `for_user` = '$user_name', `date` = '$date' WHERE `secret_number` = `$secret_number`"); 
$updatepts mysql_db_query ("database","UPDATE `users_accounts` SET `pts` = '$new_value' WHERE `user_name` = `$user_name`"); 
}else{ 
echo 
"لم يتم اضافة القيمة الى رصيدك تأكد من اسم المستخدم وكلمة المرور ورقم البطاقة السري ثم أعد المحاولة مرة أخى"

<? 
</
body
</
html>


المشكلة كانت أن المتغيرات داخل while يتم اعتبارها local variable ولا يمكنك استخدام قيمها خارج ال while إلا بطريقة واحدة .. وهي تعريفها global

هذا او انك تستبعد ال while تماما إن لم تكن بحاجة إليها .. كما فعلت في الكود المرفق


تحياتي






__________________
النسخة الثانية من ابلود بلس قريبا جدا :
+ شريط مئوي لرفع الملفات
+ دعم اكثر من سيرفر لرفع الملفات Multi-Server
+ مكتبة ملفات مؤرشفة
Egyptechno غير متواجد حالياً   قديم 04-08-2006, 09:56 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2006-
#3 (permalink)  

بارك الله فيك اخي الكريم ولك جزيل الشكر على سرعة الرد

فهمت من ردك ان المتغير داخل while يتم حذفه من الاكرة بعد كتابة
}
وفعلا لست بحاجة لاستخدام while هنا لان النتيجة واحدة فقط
في الحقيقة لا ادري لماذا لا استطيع فهم حلقات التكرار وعملها
على كل حال بارك الله فيك اتضحت الصورة بشكل جيد الآن






i2h.org غير متواجد حالياً   قديم 04-08-2006, 10:29 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Jan 2005-
#4 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة Egyptechno
عزيزي المشكلة بسيطة جدا إن شاء الله ..



المشكلة كانت أن المتغيرات داخل while يتم اعتبارها local variable ولا يمكنك استخدام قيمها خارج ال while إلا بطريقة واحدة .. وهي تعريفها global


تحياتي

ممكن لو سمحت تشرحلنا ازاي الطريقه ؟

وجزاك الله خيرا






king vb غير متواجد حالياً   قديم 04-08-2006, 06:12 PM
رد مع اقتباس
رد


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

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

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



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