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

مصفوفة ادوات HTML و PHP

بدأه Dr.Pain في 28 فبراير 2006 · 10 رد · 5,515 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كل الذين يعملون في مجال البرمجة يعرفون ما معنى المصفوفة :

int x[10];
x[6]=300 ;
cout<<x[6]

Dim ar(10) As String
ar(6) = 300
MsgBox ar(6)

ولكن دعني اعرفك على نوع جديد من المصفوفات الا وهو مصفوفة الادوات وبالذات مصفوفة أدوات HTML , وبالامكان تعريف مصفوفة ادوات HTML بانها عبارة عن مجموعه من ادوات HTML التي تحمل نفس الاسم .

فلو فرضنا انه لدينا صندوقي نص واردنا ان نحولهما الى مصفوفة فان طريقة تحويلهما الى مصفوفة تكون بإعطائهما نفس الاسم مع اتباع الاسم بالقوسين [] :

<INPUT TYPE='text' NAME='TextArray[]'>
<INPUT TYPE='text' NAME='TextArray[]'>

هل لاحظت ماذا تحمل الخاصية NAME , نعم انها تحمل القيمة TextArray متبوعه بالقوسين [] .

اذن الان وبكل بساطة اصبحت لدي مصفوفة ادوات وللتعرف اكثر على طريقة التعامل مع تلك المصفوفة دعنا نقوم ببناء مستند PHP يحمل الاسم Index.php والذي يحتوي على ثلاثة صناديق نص على شكل مصفوفة وكذا زر Submit :

<?php

echo "

<FORM METHOD='POST' ACTION=''>
<INPUT TYPE='text' NAME='TextArray[]'>
<INPUT TYPE='text' NAME='TextArray[]'>
<INPUT TYPE='text' NAME='TextArray[]'>
<INPUT TYPE='submit' value=' Send Control Array'>
</FORM>
";

?>

قم باستعراض الملف السابق ستلاحظ انك تحصلت على ثلاتة صناديق نص وزر يقوم بارسال بيانات صناديق النصوص .

والان وقبل بكتابة الكود اللازم لاستقبال قيم تلك المصفوفة دعنى نفصل العملية نظريا !!!!!

ان الذي سيحصل ان قيم صناديق النص سوف ترسل الى المخدم على شكل مصفوفة تحمل الاسم TextArray بحيث ان :

TextArray[0]

يمثل قيمة صندوق النص الاول .

TextArray[1]

يمثل قيمة صندوق النص الثاني ......... وهكذا .

والشئ الذي سيجعلنا نتعامل مع هذه المصفوفة هو استقبال المصمفوفة من خلال ال :

$_POST[Array name][index]

اذن لاستقبال عناصر المصفوفة المسماة TextArray فاننا سوف نكتب شيئا مماثلا للاتي :

echo $_POST[TextArray][0]."<br>";
echo $_POST[TextArray][1]."<br>";
echo $_POST[TextArray][2];

وذلك لان اول عنصر في المصفوفة يحمل ال Index صفر ..!!

اذن كا ما قمنا به هو استقبال المصفوفة عن طريق ال POST مع تمرير اسم المصفوفة ومن ثم رقم العنصر داخل المصفوفة TextArray .....

قم باستعراض الملف وقم بكتابة اي شي داخل صناديق النص ومن ثم قم بالضغط على زر الارسال .

رائعا اليس كذلك ..

نعم ان ذلك كان رائعا لكنني اظن انا شكل الكود معقد قليلا لذا دعنى نبسط الكود قليلا وذلك من خلال استقبال مصفوفة الادوات الى داخل متغير مصفوفة ومن ثم سنتعامل مع ذلك المتغير بدلا من ال POST :

$Arr = $_POST[TextArray];
echo $Arr[0]."<br>";
echo $Arr[1]."<br>";
echo $Arr[2];

اعتقد ان شكل الكود اصبح ابسط الان ...

المزيد ايضا ...

بالامكان الحصول على طول المصفوفة بواسطة الداله sizeof :

sizeof(ArrayName)

والان يمكننا استخراج طول المصفوفة TextArray بواسطة كتابة شيئا كهذا :

echo sizeof($_POST[TextArray]);

وكذلك يمكننا الدوران على عناصر المصفوفة بالشكل الاتي :

for($i = 0; $i < sizeof($_POST[TextArray]); $i++)

{
	echo "<h1>".$_POST[TextArray][$i]."</h1>";
}

في العادة ان اردنا ان نتاكد من ان المتغير يحمل قيمة فاننا نستخدم الدالة isset فلو كان لدينا المتغير a واردنا ان نتاكد من انه يحمل قيمة فاننا سوف نكتب شيئا كالاتي :

$a;

if(isset($a))
{
echo "a has a vlaue";
}
else
{
echo "a hasn't a value";
}

في هذه الحالة نلاحظ ان a لا يحمل قيمة لذا فاننا سوف نتحصل على الرسالة a hasn't a value ولكن ان اعطينا a قيمة كالاتي :

$a =100;

if(isset($a))
{
echo "a has a vlaue";
}
else
{
echo "a hasn't a value";
}

فاننا سوف نتحصل على الرسالة a has a value .

بالمثل فانه بالامكان التاكد من ان العنصر داخل المصفوفة يحمل قيمة او لا اثناء عملية الدوران كالاتي :

for($i = 0; $i < sizeof($_POST[TextArray]); $i++)

{

	if(isset($_POST[TextArray][$i]))
  {
 	 echo "<H1>".$_POST[TextArray][$i]."</h1>";
  }
}

كما قلنا سابقا ان اسم مصفوفة الادوات هو TextArray واننا لو اردنا قراءة قيمة العنصر الاول فاننا سوف نكتب شيئا كالاتي :

TextArray[0]

فاذا كانت القيمة التي يحملها العنصر رقم صفر او اي عنصر اخر عبارة عن قيمة نصية String فانه بالامكان الوصول الى عناصر تلك القيمة النصية بذكر رقم ال Indexالخاص بها .

فلو فرضنا ان العنصر رقم صفر يحمل القيمة Green فانه بالامكان الوصول الى احد حروف القيمة Green بواسطة ذكر رقم ال Index الخاص بالحرف .

فاذا اردنا الوصول الى الحرف G فاننا سوف نكتب شيئا كالاتي :

TextArray[0][0]

نظرا لان ال Index الخاص باول عنصر في المصفوفة TextArray هو صفر وكذا ال Index الخاص بالحرف G هو صفر .

وبما ان القيمة :

TextArray[0][0]

تمثل قيمة نصية فانه بالامكان الحصول على طول تلك القيمة بواسطة الدالة strlen التي تقوم باحظار طول السلسلة الممرة لها كوسيط :

echo strlen($_POST[TextArray][0]);

والان بما اننا حصلنا على طول السلسة فانه بالامكان القيام بعملية الدوران بكل سهولة :

for($i = 0; $i < strlen($_POST[TextArray][0]); $i++)
{
echo "<h1>".$_POST[TextArray][0][$i];
}

والان بالامكان الدوران على كامل المصفوفة TextArray وكذا على قيم كل عنصر من عناصر المصفوفة :

for($i = 0; $i < sizeof($_POST[TextArray]); $i++)

{
 	 
 	 echo "<H1>Element No : $i<br>Value :".$_POST[TextArray][$i]."<br>";
 	 echo "The elements of the element No $i is :<br>";
 	 for($j = 0; $j < strlen($_POST[TextArray][$i]); $j++)
    {
   	 echo $_POST[TextArray][$i][$j]."<br>";
    }
 	 echo "<hr>";
}

لاحظ انني لم اقم باختبار القيم بواسطة الدالة isset وذلك من اجل تبسيط الكود فقط ليس الا .

حسنا ذلك كان بالنسبة لصناديق النص , ولكن ماذا عن ال CheckBox ؟؟؟!!!!!

حسنا اقول لك ان ما سبق ينطبق ايضا على ال CheckBox عدل المستند وذلك باضافة ال CheckBox التالية مع اعطائهم الاسمCheckBoxArray كالتالي :

VB.Net<INPUT TYPE='checkbox' NAME='CheckBoxArray[]' value='VB.Net'>
ASP.Net<INPUT TYPE='checkbox' NAME='CheckBoxArray[]' value='ASP.Net'>
Flash MX<INPUT TYPE='checkbox' NAME='CheckBoxArray[]' value='Flash MX'>
SQL Server<INPUT TYPE='checkbox' NAME='CheckBoxArray[]' value='SQL Server'>

حيث اننا سوف نفترض هنا ان المستخدم سوف يقوم باختيار مجموعة الكتب التي يريدها ومن ثم سوف يقوم بارسالها .

بعد ان يقوم المستخدم بارسال الكتب التي قام بانتقائها فاننا سوف نتلقاها ومن ثم سوف نقوم بعرض ما قام المستخدم باختياره وذلك كالاتي :

for($i = 0; $i < sizeof($_POST[CheckBoxArray]); $i++)
{
  echo $_POST[CheckBoxArray][$i];
}

لاحظ انني لم استخدم الداله isset وذلك لاختبار قيمة العنصر وذلك لان العناصر التي ثم اختيارها هي فقط التي سوف ترسل , وللتحقق من ذلك استخدم الدالة sizeof :

echo sizeof($_POST[CheckBoxArray]);

وكذلك الحال بالنسبة لعنصر ال Select وهو في حالة ال ListBox والاختيار المتعدد :

<SELECT NAME='ListBoxArray[]' size='3' MULTIPLE>
<option>Car</option>
<option>House</option>
<option>Education</option>
</SELECT>

هذا هو الكود اللازم لاظهر قيم ال LsitBox :

for($i = 0; $i < sizeof($_POST[ListBoxArray]); $i++)
{
  echo $_POST[ListBoxArray][$i];
  
}

كلنا نعرف ان لغة PHP مرنة للغاية بحيث اننا نستطيع ان نقوم بتعريف مصفوفة تحمل في طياتها انواع مختلفة من البيانات كالتالي :

$ar[0]=100;
$ar[1]="Dr.pain";
$ar[2]=10.2;

for($i = 0; $i < sizeof($ar); $i++)
{
echo "<h1>".$ar[$i];
}

هل لاحظت ان القيمة الاولى تحمل قيمة صحيحة والثانية نصية والثالثة كسرية .

مصفوفة الادوات بالمثل بحيث بالامكان ان تكون مكونات المصفوفة عبارة ازرار وصناديق نص وازرار اختيار وووووووووووو ... الخ .

الان دعنى نقوم ببناء مصفوفة من هذا النوع :

 <FORM METHOD='POST' ACTION='index.php'>

SharedArray(Text Box)<INPUT TYPE='text' NAME='SharedArray[]'><br>
SharedArray(Check Box)<INPUT TYPE='checkbox' NAME='SharedArray[]' value='SharedArray(Check Box)'><br>
SharedArray(Radio)<INPUT TYPE='radio' NAME='SharedArray[]' value='SharedArray(Radio)'><BR>
SharedArray(TEXTAREA)<TEXTAREA NAME='SharedArray[]' ROWS='10' COLS='100'></TEXTAREA><BR>
SharedArray(Combo Box)<SELECT NAME='SharedArray[]'>
<Option>car
<Option>house
<Option>Building
</SELECT><BR>
SharedArray(List Box)<SELECT NAME='SharedArray[]' size='3' multiple>
<Option>Blue
<Option>Green
<Option>Red
</SELECT><BR><BR><BR>
SharedArray(Button)<INPUT TYPE='submit' value=' Send Control Array' NAME='SharedArray[]'>
</FORM>

عملية الدوران سوف تكون بالشكل التالي :

for($i = 0; $i < sizeof($_POST[SharedArray]); $i++)
{
  echo "<h1>".$_POST[SharedArray][$i]."<br>";
  
}

ملاحظــــــــــــــــــــــــــه هامـــــــــــــــــــــــــة :

في حالتنا السابقة نلاحظ ان ال ListBox يحتوي على ثلاث قيم :

SharedArray(List Box)<SELECT NAME='SharedArray[]' size='3' multiple>
<Option>Blue
<Option>Green
<Option>Red
</SELECT>

فما هي يا ترى الطريقة التي سوف تعامل بها هذه العناصر في مصفوفة النوع المتعدد ؟؟!!!!!

تلك العناصر تعامل على اساس انها عنصر مستقل بذاته داخل المصفوفة , فلو اخترت الثلاث القيم كلها مجتمعه فان كل عنصر سوف يعطى Index خاص به يميزه عن بقية العناصر وكانه عنصر مستقل بذاته .

والدليل غلى ذلك انك لو قمت بملاء كل العناصر السابقة ومن ثم قمت باختبار طول المصفوفة فانك ستجد ان طول المصفوفة هو تسعة بينما عدد الادوات هو سبعة .

اذا احتوت المصفوفة على ازرار Button فان قيمها لن ترسل , فقط قيم الازرار من النوع Submit هي التي ترسل وهذه ايضا لا ترسل كلها فقط الزر الذي قام بالارسال هو الذي ترسل قيمته .

الان دعنا نقوم بضرب مثال اخر نعرض من خلاله فائدة اخرى من فوائد مصفوفة الادوات !!!!

اذا قال لك احدهم قم بعمل زرين Submit بحيث انه لو انضغط الاول فانه يتم اخراج الكلمة Hello ولو انضغط الثاني فانه يتم اخراج الكلمة World !!

الحل ببساطة تقدمه مصفوفة الادوات وبشكل رائع , حسنا قم ببناء المستند بالشكل التالي :

<?php

echo "

<FORM METHOD='POST' ACTION='index.php' name='frmControlArray'>
<INPUT TYPE='submit' Name='ShowTextArray[]' Value='Hello'> 
<INPUT TYPE='submit' Name='ShowTextArray[]' Value='World'>
<INPUT TYPE='' Name='txtHelloWorld'> 
</FORM>

";

switch(strtolower($_POST[ShowTextArray][0]))
{
case "hello":
	echo "Hello";
	break;
case "world":
	echo "World";
}

?>

والان لو اردنا اخراج الكلمة على صندوق النص فاننا سوف نطور المستند قليلا بحيث يحتوي على نص Java Script الخاص باسناد القيمة لصندوق النص وذلك كالتالي :

<script LANGUAGE='JavaScript'>
function SetText(Text)
	{
  frmControlArray.txtHelloWorld.value=Text;
	}
</SCRIPT>

الدالة السابقة تاخذ وسيطا واحدا يمثل النص الذي سوف يتم اسناده لصندوق النص .

ومن ثم بعد بناء دالة Java Script فاننا سوف نقوم باختبار قيمة الازرار كالسابق ولكن هذه المرة سوف نقوم باسناد القيم الى صندوق النص وذلك عن طريق الدالة السابقة التي قمنا بكتابتها بواسطة Java Script :

case "hello":
	echo "
<script LANGUAGE='JavaScript'>
 SetText('Hello')
</SCRIPT>
	";
	break;

	case "world":
	echo "
<script LANGUAGE='JavaScript'>
 SetText('World')
</SCRIPT>
	";
	break;

وبهذا يصبح شكل المستند النهائي كالتالي :

<?php

echo "

<script LANGUAGE='JavaScript'>
function SetText(Text)
	{
  frmControlArray.txtHelloWorld.value=Text;
	}
</SCRIPT>

<FORM METHOD='POST' ACTION='index.php' name='frmControlArray'>
<INPUT TYPE='submit' Name='ShowTextArray[]' Value='Hello'> 
<INPUT TYPE='submit' Name='ShowTextArray[]' Value='World'>
<INPUT TYPE='' Name='txtHelloWorld'> 
</FORM>
";


switch(strtolower($_POST[ShowTextArray][0]))
{
case "hello":
	echo "
<script LANGUAGE='JavaScript'>
 SetText('Hello')
</SCRIPT>
	";
	break;

	case "world":
	echo "
<script LANGUAGE='JavaScript'>
 SetText('World')
</SCRIPT>
	";
	break;

}
?>

ملاحظــــــــــــــــــــــــــه هامـــــــــــــــــــــــــة :

خلال الدرس استخدمنا :

$_POST[]

وذلك لاننا اخترنا ال POST كطريقة للارسال ولكن ان كانت طريقة الارسال هي Get فاننا سوف نستخدم :

$_GET[]

انتهــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــى .......!!!!

اخوكم Dr.Pain

#2

مجهود يستحق جزيل الشكرDr.Pain (;

الموضوع مثبت لحين تجهيز قائمة بالمواضيع الهامة و ارفاقه معهم

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#3

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

تسلم يا غالي , لا تنسونا بالدعاء بالله عليكم :rolleyes: :rolleyes:

اخوكم Dr.pain

#5

الف شكر والله يبارك فيك على هذه المعلومات .

#6

معلومة قيمة ولك الشكر

#7

رااااااااااااااااائع

شكرا لك اخي العزيز

#8

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

بسم الله نبدأ .......

اذا كان لديك مجموعة من ال CheckBox وال TextBox كالتالي :

16943266.png

واردت ان تقوم باحضار قيمة ال Textbox المؤشر عليها فقط فماذا عساك تفعل ؟؟؟؟

الحل :

اولاً سوف نقوم بتحويل كلاً من ال Checkbox وال Textbox الى مصفوفة .

ثانياً سنقوم بعمل Index لل Checkbox وذلك من اجل استخدام هذا ال Index لكي يؤشر على رقم ال Textbox !!

بمعنى انه اذا كان رقم ال Index الخاص بال Checkbox هو ثلاثة فاننا سوف نقوم باحضار قيمة ال Textbox رقم ثلاثة

واذا كان رقم ال Index الخاص بال Checkbox هو سبعه فاننا سوف نقوم باحضار قيمة ال Textbox رقم سبعة ..

وهكذا ... لذا فاننا نقوم بجلب قيمة ال Textbox تبعاً لقيمة ال Index الخاص بال Checkbox .

زلكن كيف ترانا سنقوم بعمل Index ونحن لا نملك الا الخاصية التي اسمها Value !!

حسنا من اجل ذلك سوف نقوم باستخدام الخاصية Value نفسها من اجل هذا الغرض !!

بحيث اننا سوف نستخدمها كمخزن لل Index وذلك بدمج رقم ال Index مع الخاصية Value ولكن مع وضع بعض الاشارات

التي تدلنا على انه من هنا تبدأ قيمة ال Value ومن تبدأ قيمة ال Index ..

فمثلا سوف نقوم بأخذ الاشارة ( & ) لكي تقوم بدور الفاصل بين القيم , فلو فرضنا ان قيمة ال value هي ArabTeam2000

او اي شي اخر وقيمة ال Index هي 1 فاننا سوف نقوم بكتابة شي مماثل للاتي :

<INPUT TYPE="checkbox" NAME="chk[]" value="ArabTeam2000&1">

فلو فرضنا ان انه لدينا ثلاثة Checkbox فاننا سوف نكتب شي مماثلاً للاتي :

<INPUT TYPE="checkbox" NAME="chk[]" value="ArabTeam2000&0">
<INPUT TYPE="checkbox" NAME="chk[]" value="ArabTeam2000&1">
<INPUT TYPE="checkbox" NAME="chk[]" value="ArabTeam2000&2">

ولاحظ اننا قمنا بوضع قيمة اول Index تساوي صفراً وذلك لان اول عنصر في اي مصفوفة يبدأ ترقيمه بصفر ( الم اقل سابقاً اننا سوف نقوم بتحويل ال ال Checkbox وال Textbox الى مصفوفة ) .

حسناً و ماذا الان !!!

الان جاء دور كلاً من الدالتين substr و strrpos .

الدالة substr وظيفتها ارجاع سلسلة نصية مستقطعه من سلسلة نصية اخرى وبها سوف نقوم بفصل قيمة ال value عن قيمة ال Index فمثلاً نحن لدينا :

ArabTeam2000&0

بحيث ان :

ArabTeam2000 هي قيمة ال Value و قيمة ال Index هي صفر .

فلو اردنا الان ارجاع قيمة الخاصية value فاننا سوف نكتب شي كالتالي :

echo substr("ArabTeam2000&0",0,12);

#9

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

هذا حل أخر !!

وذلك بإسناد ارقام ال TextBox للخاصية Vlaue الخاصة بال CheckBox :

<?php
echo '<FORM METHOD=POST ACTION=""><table>';


for($i=0;$i<5;$i++){
	echo '
<tr>
	<td><INPUT TYPE="checkbox" NAME="chk[]" value="'.$i.'">
	<td><INPUT TYPE="text" NAME="firsttxt[]" value="Text '.$i.'">
';
}

echo '</table><INPUT TYPE="submit"><BR><BR></FORM>';

for($i=0;$i<count($_POST[chk]);$i++){

	if(isset($_POST[chk][$i])){
	echo $_POST[firsttxt][$_POST[chk][$i]]."<br>";
	}
}


?>

في أمان الله ..

Dr.Pain

تم تعديل هذه المشاركة بواسطة Dr.Pain في 17 مايو 2008 في 04:56

#10

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

ملاحظة :

الاسطر التي يتم ذكر الكلمتان Java و Script فيهما والتي تشبه هذا :

<A HREF="java script:MsgBox()"> [ Send Form ]</A>

يتم وضع فراغ بين الكلمتان لماذا لا أعلم !!

انت فقط قم بتعديل الكود وذلك بإزالة الفراغ بين بين كلمة Java و Script

ماذا لو أردت إرسال ال Form باستخدام الطريقتان Post و Get بنفس الوقت وذلك من خلال رابط مثل هذا :

<A HREF="index.php"> [ Send Form ]</A>

من أجل هذا الغرض سوف نستخدم بعض الطرق الخاصة بال Form وسوف نجعل JavaScript تقوم هي بإرسال ال Form !!

وللتوضيح فقط :

يمكنك تنفيذ كود JavaScript من خلال الضغط على Link كالتالي :

<HTML>
<HEAD>
<TITLE> New Document </TITLE>

<script LANGUAGE="JavaScript">
<!--
function MsgBox(){
alert("Hello World !!");
}
//-->

</SCRIPT>
</HEAD>

<BODY>

<A HREF="java script:MsgBox()"> [ Send Form ]</A>

</BODY>
</HTML>

كلنا يعلم أن تحديد نوع الإرسال يتم من خلال الخاصية Method الخاصة بال Form والصفحة التي سوف يتم إليها الإرسال اليها يتم تحديدها من خلال الخاصية Action , فمثلاً لو أردت الإرسال من خلال POST وإلى الصفحة المسماة index.php فأنك سوف تكتب شيئاً مماثلاً للاتي :

<FORM METHOD="POST" ACTION="index.php" NAME="frm">

</FORM>

ولتغيير قيمة كلاً من الخاصية ACTION و METHOD من خلال JacaScript فأننا سوف نكتب شيئاً مماثلاً للأتي :

document.forms.frm.method="post";
document.forms.frm.action="index.php?action=test";

ومن أجل إرسال ال Form من JavaScript فإننا سوف نستخدم الطريقة submit :

document.forms.frm.submit();

والان جاء دور التطبيق العملي :

إذا كان لدينا المستند الاتي :

<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>

<BODY>

<FORM METHOD=POST ACTION="" NAME="frm">
<INPUT TYPE="text" NAME="txt" value="test post Request"> 
<A HREF="index.php?action=test"> [ Send Form ]</A>
</FORM>

</BODY>
</HTML>

<?php

echo $_GET["action"]."<br>";
echo $_POST["txt"];

?>

من المستند السابق نلاحظ أننا لن نستطيع أن نجعل الرابط يقوم بإرسال ال Form ومن ثم قراءة كلاً من قيمتي ال action بواسطة GET وقيمة ال TextBox بواسطة POST !!

ولهذا فأننا سوف نقوم بتعديل المستند لكي يصبح بالشكل التالي :

<HTML>
<HEAD>
<TITLE> New Document </TITLE>

<script LANGUAGE="JavaScript">
<!--
function sendform(){
//document.forms.frm.method="post";
document.forms.frm.action="index.php?action=test";
document.forms.frm.submit();
}

//-->

</SCRIPT>
</HEAD>

<BODY>

<FORM METHOD=POST ACTION="" NAME="frm">
<INPUT TYPE="text" NAME="txt" value="test post Request"> 
<A HREF="java script:sendform()"> [ Send Form ]</A>
</FORM>

</BODY>
</HTML>

<?php

echo $_GET["action"]."<br>";
echo $_POST["txt"];

?>

أعتقد ان عملية الارسال قد نجحت ولكن هناك ملاحظة صغيرة !!

نلاحظ بأن الدالة sendform تقوم باسناد القيمة test للمتغير action وذلك من خلال :

document.forms.frm.action="index.php?action=test";

حسناً ماذا لو أردنا إسناد أي قيمة للمتغير action وعدم التقيد بالقيمة test ؟

من اجل ذلك سوف نقوم بإضافة دالة جديدة أسمها sendformwithURL وسوف يصبح شكل المستند النهائي

كالتالي :

<HTML>
<HEAD>
<TITLE> New Document </TITLE>

<script LANGUAGE="JavaScript">
<!--
function sendform(){
//document.forms.frm.method="post";
document.forms.frm.action="sendform.php?action=test";
document.forms.frm.submit();
}

function sendformwithURL(action){
//document.forms.frm.method="post";
document.forms.frm.action="index.php?action=" + action;
document.forms.frm.submit();
}
//-->

</SCRIPT>
</HEAD>

<BODY>

<FORM METHOD=POST ACTION="" NAME="frm">
<INPUT TYPE="text" NAME="txt" value="test post Request"> 
<A HREF="java script:sendformwithURL('hello world')"> [ Send Form ]</A>
</FORM>

</BODY>
</HTML>

<?php

echo $_GET["action"]."<br>";
echo $_POST["txt"];

?>

ملاحظة :

أعلم أنني لم اغطي حق JavaScript ولا ال Forms وذلك فقط لان المقام هنا ليس مقامها :wub:

في أمان الله ..

Dr.Pain

تم تعديل هذه المشاركة بواسطة Dr.Pain في 17 مايو 2008 في 05:28

#11

جزاك الله خيراً واسمح لي بأن أضيف بعض التعليقات:

1- للدوران في عناصر مصفوفة يمكن استخدام foreach كخيار أسهل من for

2- يمكن استدعاء الجافا سكربت داخل الأزرار بدون كلمة java script:

3- نحاول الابتعاد قدر الإمكان عن الجافا سكربت في حال استطعنا ذاك لأنه يوجد عدد لا بأس به من مستخدمي الإنترنت ليس لديهم أو غير مفعلين الجافا سكربت في متصفحاتهم

اعذرني أخي الكريم على مداخلتي

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