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

كود في آلة حاسبة

بدأه Dr.UaE1 في 12 يوليو 2013 · 8 رد · 4,773 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورمضان كريم للجميع

 

عندي كود اكتبه وهو عمل آلة حاسبة بسيطة بإستخدام ال checkbox

 

0GraB.jpg

 

بحيث اني أكتب الرقم الاول والرقم الثاني في الخانتين ثم احدد نوع العملية الحسابية إن كانت تقسيم او جمع ثم بعد ان اضغط على Do Math يظهر لي في نفس الصفحة النتيجة تحت وهكذا مع جميع المرات

 

حاولت بهذا الكود واريد اعرف النقص

<html>
<head><title> test </title> </head>

<body>
<h1> Enter Comment </h1>
<form action="new.php" method="get">

Number1: <input type="text" name="num1">
Number2: <input type="text" name="num2">




<select name="cal">

<option> + </option>
<option> - </option>
<option> / </option>
<option> * </option>

</select>

<input type="submit" value="Do Math">





<?php
$cal = "";

	if ( $_GET["cal"] == + )
	echo $_GET["num1"] ."+". $_GET["num2"] ."=". $_GET["num1"] + $_GET["num2"];
	
	if ( $_GET["cal"] == - )
	echo $_GET["num1"] - $_GET["num2"];
	
	if ( $_GET["cal"] == / )
	echo $_GET["num1"] / $_GET["num2"];
	
	if ( $_GET["cal"] == * )
	echo $_GET["num1"] * $_GET["num2"];

	
setcookie ("cal" , "" , time()+3600);
	
echo $cal;


?>

</form>
</body> 
</html>

اتمنى المساعدة وجزا الله القارئين خيرا

تم تعديل هذه المشاركة بواسطة Dr.UaE1 في 12 يوليو 2013 في 16:03

#2

؟

#3

للرفع

#4

السلام عليكم

 

أذكر أنني قد نصحتك من قبل في موضوع سابق لك بدراسة أساسيات اللغة حتى لا تقف في كل خطأ يصادفك من الأخطاء اللغوية وغيرها , وعليك قراءة رسالة الخطأ التي تظهر لك في المتصفح وفهم فحواها لتستطيع حل المشكلة بنفسك .

 

الأخطاء الموجودة في الكود السابق الخاص بك :

1- عدم إغلاق النموذج form مما سيترتب عليه أخطاء فيما بعد ولكن لن تظهر أخطاءه هنا ولكن ستظهر إذا إستخدمت نماذج أخرى في نفس الصفحة فالأولى إتباع الأسلوب الصحيح في كتابة تعليمات اللغة الهيكلية HTML وإغلاق جميع الوسوم التي تم فتحها .

2- عدم ضبط القيم value للخصائص option للقائمة المنسدلة select .

3- عدم وضع علامات الجمع والطرح و ... داخل علامات إقتباس لمساواتها في الشرط مما سيترتب عليه أخطاء .

4- عدم اتخدام الأقواس () في عملية حصر العمليات مما ترتب علية بعض الأخطاء .

5- عدم التحقق من وجود قيم المتغيرات مما سيسبب أخطاء في حالة عدم وجودها .

6- عدم تحويل الأرقام لسلاسل نصية لعرضها على المتصفح حيث أن الرقم 0 لا يظهر على المتصفح .

7- عليك مراجعة درس الـ cookies لتستطيع استخدامها .

 

الكود بعد تصحيح الأخطاء السابقة سيصبح كالتالي :

<!DOCTYPE html>
<html>
<head><title> test </title> </head>

<body>
<h1> Enter Comment </h1>
<form action="" method="get">

Number1: <input type="text" name="num1">
Number2: <input type="text" name="num2">




<select name="cal">

<option value="+"> + </option>
<option value="-"> - </option>
<option value="/"> / </option>
<option value="*"> * </option>

</select>

<input type="submit" value="Do Math">
</form>




<?php
$cal = "";
if(isset($_GET["cal"]) and isset($_GET["num1"]) and isset($_GET["num2"]))
{
    if ( $_GET["cal"] == "+" )
    echo (string)$_GET["num1"] ."+". (string)$_GET["num2"] ."=".((string)($_GET["num1"] + $_GET["num2"]));
    
    if ( $_GET["cal"] == "-" )
    echo (string)$_GET["num1"] ."-". (string)$_GET["num2"] ."=".((string)($_GET["num1"] - $_GET["num2"]));
    
    if ( $_GET["cal"] == "/" )
    echo (string)$_GET["num1"] ."/". (string)$_GET["num2"] ."=".((string)($_GET["num1"] / $_GET["num2"]));
    
    if ( $_GET["cal"] == "*" )
    echo (string)$_GET["num1"] ."*". (string)$_GET["num2"] ."=".((string)($_GET["num1"] * $_GET["num2"]));
}
    
setcookie ("cal" , "" , time()+3600);
    
echo $cal;


?>

</form>
</body>
</html>

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#5

طريقتك صحيحة اخي العزيز لكنها لا تحفظ جميع العمليات بمعنى انك لو وضعت رقمين وصغطت على Do Math وثم قمت بإعادة العملية سوف تجد ان العملية الاولى انمسحت وانا اريد جميع العمليات تبقى موجوده

#6
اقتباس
طريقتك صحيحة اخي العزيز لكنها لا تحفظ جميع العمليات بمعنى انك لو وضعت رقمين وصغطت على Do Math وثم قمت بإعادة العملية سوف تجد ان العملية الاولى انمسحت وانا اريد جميع العمليات تبقى موجوده

- هذا لأن عملية الضغط على ذر الإرسال في النوذج تعني إعادة تحميل نفس الصفحة مع إرسال بيانات النموذج , فيمكنك فعل ما تريد من خلال حقل مخفي تقوم بحفظ الناتج به لإعادة إرساله مرة أخرى عبر النموذج أو استخدام لغة javaScript لفعل هذا .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#7

ممكن توضح لي الكود؟ بدون الجافا سكربت

#8
اقتباس
ممكن توضح لي الكود؟ بدون الجافا سكربت

 

تفضل الكود :

<?php
if(isset($_GET["cal"]) and isset($_GET["num1"]) and isset($_GET["num2"]) and isset($_GET["saveInput"]))
{
    if ( $_GET["cal"] == "+" )
    $_GET['saveInput'] .= '<br>'.(string)$_GET["num1"] ."+". (string)$_GET["num2"] ."=".((string)($_GET["num1"] + $_GET["num2"]));
    
    if ( $_GET["cal"] == "-" )
    $_GET['saveInput'] .= '<br>'.(string)$_GET["num1"] ."-". (string)$_GET["num2"] ."=".((string)($_GET["num1"] - $_GET["num2"]));
    
    if ( $_GET["cal"] == "/" )
    $_GET['saveInput'] .= '<br>'.(string)$_GET["num1"] ."/". (string)$_GET["num2"] ."=".((string)($_GET["num1"] / $_GET["num2"]));
    
    if ( $_GET["cal"] == "*" )
    $_GET['saveInput'] .= '<br>'.(string)$_GET["num1"] ."*". (string)$_GET["num2"] ."=".((string)($_GET["num1"] * $_GET["num2"]));
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title> test </title>
    </head>
<body>
    <h1> Enter Comment </h1>
    <form action="" method="get">
        Number1: <input type="text" name="num1">
        Number2: <input type="text" name="num2">
        <input type="hidden" name="saveInput" value="<?php echo isset($_GET['saveInput'])?$_GET['saveInput']:'';?>" />
        <select name="cal">
            <option value="+"> + </option>
            <option value="-"> - </option>
            <option value="/"> / </option>
            <option value="*"> * </option>
        </select>
        <input type="submit" value="Do Math">
    </form>
    <?php
        if(isset($_GET["saveInput"]))
        {
            echo $_GET["saveInput"];
        }
    ?>
</body>
</html>

- لاحظ أنك تستخدم get كطريقة ارسال أي جميع القيم سيتم إرسالها عبر الرابط .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#9

أعزك الله وبارك فيك

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