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

استفسار بشأن اضافة من خلال صفحة عرض بيانات

مغلق
بدأه أصيل في 3 مايو 2006 · 15 رد · 987 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بشكل اكثر تفصيلا لدي قاعدة بها 3 حقول : الاسم البريد طبيعة العمل

الصفحة الاولى add.php يتم فيها تعبئة حقلين فقط الاسم البريد عند الضغط على ارسال تظهر طبعا النتائج المدخلة v1.php

المطلوب ادراج حقل ثالث مثلا طبيعة العمل من خلال صفحة عرض نتيجة الادخال الاولv1.php وعند الضغط على ارسال او موافق مثلا تظهر جميع الثلاثة حقول في صفحة ثالثة مثلا fullv.php . لذا اود المساعدة ومرفق لكم صور توضح المطلوب .

myproblem.rar

#2

السلام عليكم

هل يمكن شرح اكثر للمشكله أو تزويدنا بالكود ؟

رَبِّ إِنِّي لِمَا أَنزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ

#3

الحل أنك تستخدم الجلسات في هذه الصفحات

$_SESSION['email'] = $_POST['email'];
$_SESSION['name'] = $_POST['name'];
////////////
echo $_SESSION['email']."<br />";
echo $_SESSION['name']"<br />";
echo "<input name=\"work\"type=\"text\">\n";
//////////////////
$_SESSION['work'] = $_POST['work'];

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#4

الاخوة الكرام ما ني قادر ارفق الكود ما ادري كيف اقرب المشكلة بشكل افضل

المشكلة في;كتابة كود update عندي حاولت فيه مانجح حيث كتبته بالشكل التالي

$Sql = "Update $tbl_name set work='$work' where id ='$id' ";

$Result = mysql_query($Sql);

طبعا هذه الصفحة تستقبل من زر ارسال المجود في الصفحة الثانية اللي فيها يتم عرض الحقلين الاول والثاني name ,email وارغب في ادخال الحقل الثالث work .

المشكلة ماني قادر اربط التغير مع الاسم الحالي مثلا .

الطريقة نجحت عندما اكتب في الكود بدلا name$ اسما من الاسماء اللي اضفتها المطلوب هو التغير مع id

#5

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

وتصحيح عبارة التحديث هو كالتالي :

$Sql = "Update $tbl_name set work=$work where (id =$id)";

$Result = mysql_query($Sql);

لأن علامتي التنصيص '' المفردتين تأخذ اسم المتغير مثل $id ولا تأخذ قيمته التي 1 مثلاُ

بخلاف علامتي التنصيص المزدوجتين فإن تأخذ قيم المتغيرات .

أرجوا أنك فهم هذا الاختصار

أخي باستخدامك لمتغيرات الجلسة تستطيع تجميع البيانات ومن ثم إضافتها جملة واحدة في عبارة sql INSERT واحدة أفضل من التحديث والاتصال بقاعدة البيانات كل مرة .

$SQL = sprintf('INSERT INTO %S (name, email, work) VALUE (%s, %s , %s)',$tb_name, $name, $email , $word);

هذا الكود اجعله في الأخير يعني عندما تكتمل البيانات كاملة الاسم والبريد والعمل .

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#6

في الصفحة الثانية v1.php ضع فيها حقل مخفي hidden وضع قيمته = الحقل الموجود في الصفحة الاولى add.php

وبالتالي ستكون جميع الحقول متوفرة في صفحة v1.php ( واحد ظاهر والاثنان مخفيان ) ..

460.gif

#7

اخي ابو محمد هل تقصد بان لااضع علامتي تنصيص نهائيا بين id= $id وانا مبتدئ ولا افهم استخدام الجلسات نهائيا هذا من ناحية وما ودي استخدم شي انا ما اعرفه .

اخي المتميز : ما ادري لم افهم ماتقصد انا لااحتاج يكون الاثنان مخفيان بل ظاهران .

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

#8

وضعت جميع الاكواد التي استخمدتها مع شرحها

الصفحة الاولى ad.php ادخال البيانات في السجلين الاسم والايميل

<html dir="rtl">

<head>

<title>سجل الزوار</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
</head>

<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><div align="center"><strong><span lang="ar-sa">سجل الزوار</span></strong></div></td>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="POST"  action="ok.php">
<td>
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="117">
<p align="center"><span lang="ar-sa">الاسم </span></td>
<td width="14">:</td>
<td width="357"><input name="name" type="text" id="name" size="40" /></td>
</tr>
<tr>
<td>
<p align="center"><span lang="ar-sa">البريد</span></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="40" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="ارسل" />
<input type="reset" name="Submit2" value="امسح" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>

</html>

الصفحة الثانية : ok.php

<?php
$host="localhost"; // المستضيف
$username="ali"; // اسم المستخدم
$password="123"; // باسورد المستخدم
$db_name="work"; // اسم قاعدة البيانات
$tbl_name="twork"; // اسم الجدول

// هنا خطوة الاتصال بالسيرفر والقاعدة
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");



// هنا سوف يتم اداخال البيانات وهي الاسم والايميل 
$sql="INSERT INTO $tbl_name(name, email)VALUES('$name', '$email')";
$result=mysql_query($sql);

//check if query successful
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='vw22.php'>شاهد السجل</a>"; // للذهاب الى الصفحة الرئيسية
}

else {
echo "ERROR";
}
mysql_close();
?>

الصفحة vw22.php

<html dir="rtl">

<tr>
<td><div align="center"><strong>ÓÌá ÇáÒæÇÑ | <a href="guestbook.php">ÃÖÝ ÊæÞíÚß</a>
        </strong></div></td>
</tr>
</table>
<br>

<?php


$host="localhost"; // المستضيف المحلي
$username="ali"; //اسم مستخدم قاعدة البيانات
$password="123"; // الباسورد لمستخدم قاعدة البيانات
$db_name="work"; // اسم قاعدة البيانات
$tbl_name="twork"; // اسم الجدول

// للأتصال بالسيرفر وقاعدة البيانات نستخدم هذا السياق
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name ";
$result=mysql_query($sql);

while($rows=mysql_fetch_array($result)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
</tr>
<tr>
<td width="117" align="center">الأسم</td>
<td width="14">:</td>
<td width="357"><? echo $rows['name']; ?></td>
</tr>
<tr>
<td align="center">الايميل</td>
<td>:</td>
<td><? echo $rows['email']; ?></td>
</tr>
</table>
// هنا المكان الذي ارغب الاضافة فيه للحقل الثالث 
  <form method="POST" action="vwww2.php">
	<p><input type="text" name="work" size="20"></p>
	<p><input type="submit" value="إرسال" name="B1"><input type="reset" value="إعادة تعيين" name="B2"></p>
</form>
<BR>
<?
}
mysql_close(); //خلاص انتهينا قفل
?>

الصفحة vwww2.php

<?php
$host="localhost"; // المستضيف
$username="ali"; // اسم المستخدم
$password="123"; // باسورد المستخدم
$db_name="work"; // اسم قاعدة البيانات
$tbl_name="twork"; // اسم الجدول

// هنا خطوة الاتصال بالسيرفر والقاعدة
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="INSERT INTO $tbl_name(work)VALUES('$work')";
$result=mysql_query($sql);
//check if query successful
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='vw222.php'>شاهد السجل</a>"; // للذهاب الى الصفحة الرئيسية
}

mysql_close();
?>

الصفحة vw222.php وفيها يتم عرض جميع الحقول

<html dir="rtl">

<tr>
<td><div align="center"><strong>ÓÌá ÇáÒæÇÑ | ÃÖÝ ÊæÞíÚß</a>
        </strong></div></td>
</tr>
</table>
<br>

<?php

$host="localhost"; // المستضيف المحلي
$username="ali"; //اسم مستخدم قاعدة البيانات
$password="123"; // الباسورد لمستخدم قاعدة البيانات
$db_name="work"; // اسم قاعدة البيانات
$tbl_name="twork"; // اسم الجدول

// للأتصال بالسيرفر وقاعدة البيانات نستخدم هذا السياق
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name ";
$result=mysql_query($sql);

while($rows=mysql_fetch_array($result)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td> </td>
<td>:</td>
<td><? echo $rows['id']; ?></td>
</tr>
<tr>
<td width="117" align="center">الأسم</td>
<td width="14">:</td>
<td width="357"><? echo $rows['name']; ?></td>
</tr>
<tr>
<td align="center">الايميل</td>
<td>:</td>
<td><? echo $rows['email']; ?></td>
</tr>
<tr>
<td valign="top" align="center">طبيعة العمل</td>
<td valign="top">:</td>
<td><? echo $rows['work']; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
<?
}
mysql_close(); //خلاص انتهينا قفل
?>

عذرا على الاطالة لكن هذي كل الاكواد اللي استخدمتها .

#9

للرفع

#10

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

عذاً على التأخر

مشكلتك يا أخي أنك تستخدم علامة التنصيص المفردة هذه ' وهي لا تستخدم مع اسماء المتغيرات يعني لا تكتب '$word' بل اكتب هكذا "$word"

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

الخطأ :

$sql="INSERT INTO $tbl_name(name, email)VALUES('$name', '$email')";

الصواب :

$sql="INSERT INTO $tbl_name(name, email)VALUES($name, $email)";

الخطأ :

$sql="INSERT INTO $tbl_name(work)VALUES('$work')";
$result=mysql_query($sql);

الصواب :

$Sql = "Update $tbl_name set work=$work where (id =$id)";
$Result = mysql_query($Sql);

جرب هذه الأكواد وإن شاء الله تكون صحيحة

وأيضاً المتغير $id هو الذي يجلب لك البيانات المضافة أول مرة لا بد أن تعرف من أين تأخذه

هناك دالة mysql_insert_id(); وهي مهمة لابد أن تستخدمها حتى تصل إلى البيانات المضافة من قبل الشخص المسجل .

وبعدها يكون المتغير في العنوان هكذا page.php?id=1

وبعد ذلك لما تريد تحديث السجل وإضافة القيمة work لا بد أن تسخدم $id حتى تستطيع تعديل السجل المراد وإلا فسيكون التحديث لجميع السجلات

ثم الجملة الآخرى الخاطئة

هي :

$sql="SELECT * FROM $tbl_name ";

الصواب :

$sql="SELECT * FROM $tbl_name WHERE (id=$id)";

وهذا $id مأخوذ من عنوان الصفحة page.php?id=1 مثلاً

ابدأ أولا بتعديل الخطأ كما ذكرت لك ثم جرب ثم أخبرنا بارك الله فيه

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#11

اخي الكريم عذرا على ازعاجك واسأل الله ان يجعل هذا في مزان حسناتك .

انامبتدئ وتعلم المبتدئين واسئلتهم . ومنها :

1- واجهتني مشكلة عند التغيير في صفحة ادخال البيانات ok.php

حيث غيرت الكود

$sql="INSERT INTO $tbl_name(name, email)VALUES('$name', '$email')";
$result=mysql_query($sql);

الى

$sql="INSERT INTO $tbl_name(name, email)VALUES($name, $email)";

حيث اعطى EROR ولم يضف للقاعدة اما لما اعدته كما كان اضاف للقاعدة واعطى Successful

فهل هناك خلل اصلا في كتابة اكواد الصفحة كاملة .

2- بخصوص الدالة mysql_insert_id();

اين استخمها بالضبط . لم افهم فكرتها .

شكرا على تواصلك وعذرا على اخذ جزء من وقتك .

#12

غيرت لك ثلاثة ملفات

وبإضافة الدالة sprintf

work.rar

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#13

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

اخي ابو محمد اللحياني

الكود التالي

$sql="INSERT INTO $tbl_name(name, email)VALUES('$name', '$email')";

صحيح نظريا وليس فيه أي مشكلة ..

460.gif

#14

الاخوة الكرام انا مبتدئ واعتذر عن ازعاجكم بكثرة اسئلتي لكن والله اريد ان اتعلم اكثر من اني استخدم كود جاهز .

حاولت اعيد ترتيب بياناتي بحيث اقتصر على صفحتين الاولى لادخال البيانات ad1.php

<html dir="rtl">

<head>

<title>ÓÌá ÇáÒæÇÑ</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
</head>

<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><div align="center"><strong><span lang="ar-sa">ÓÌá ÇáÒæÇÑ</span></strong></div></td>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="POST"  action="vw22.php">
<td>
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="117">
<p align="center"><span lang="ar-sa">ÇáÇÓã </span></td>
<td width="14">:</td>
<td width="357"><input name="name" type="text" id="name" size="40" /></td>
</tr>
<tr>
<td>
<p align="center"><span lang="ar-sa">ÇáÈÑíÏ</span></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="40" /></td>
</tr>
<tr>
<td>
<p align="center"><span lang="ar-sa">ÇáÚãá</span></td>
<td>:</td>
<td><input name="work" type="text" id="work" size="40" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="ÇÑÓá" /><input type="reset" name="Submit2" value="ÇãÓÍ" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>

</html>

والثانية لادخال وعرض البيانات وهي تعمل لكن عندما اريد العرض فقط ب ID وطبعا حقل ID هوauto لم تعمل

<html dir="rtl">

<tr>
<td><div align="center"><strong>ÓÌá ÇáÒæÇÑ | <a href="guestbook.php">ÃÖÝ ÊæÞíÚß</a>
        </strong></div></td>
</tr>
</table>
<br>

<?php

$host="localhost"; // ÇáãÓÊÖíÝ ÇáãÍáí
$username="ali"; //ÇÓã ãÓÊÎÏã ÞÇÚÏÉ ÇáÈíÇäÇÊ
$password="123"; // ÇáÈÇÓæÑÏ áãÓÊÎÏã ÞÇÚÏÉ ÇáÈíÇäÇÊ
$db_name="amr"; // ÇÓã ÞÇÚÏÉ ÇáÈíÇäÇÊ
$tbl_name="data"; // ÇÓã ÇáÌÏæá

// ááÃÊÕÇá ÈÇáÓíÑÝÑ æÞÇÚÏÉ ÇáÈíÇäÇÊ äÓÊÎÏã åÐÇ ÇáÓíÇÞ
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="INSERT INTO $tbl_name(name, email ,work )VALUES('$name', '$email' , '$work')";
$result=mysql_query($sql);


$sql2="SELECT * FROM $tbl_name  where id= '$id' ";
$result2=mysql_query($sql2);

while($rows=mysql_fetch_array($result2)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td width="117" align="center">ÇáÃÓã</td>
<td width="14">:</td>
<td width="357"><? echo $rows['id']; ?></td>
</tr>
<tr>
<td width="117" align="center">ÇáÃÓã</td>
<td width="14">:</td>
<td width="357"><? echo $rows['name']; ?></td>
</tr>
<tr>
<td align="center">ÇáÇíãíá</td>
<td>:</td>
<td><? echo $rows['email']; ?></td>
</tr>
<tr>
<td align="center">ÇáÚãá</td>
<td>:</td>
<td><? echo $rows['work']; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
<?
}
mysql_close(); //ÎáÇÕ ÇäÊåíäÇ ÞÝá
?>

وعند تغير جملة select الى :

$sql2="SELECT * FROM $tbl_name  where name= '$name' ";

تعمل وتقرأ الاسم

لذا آمل المساعدة بحيث يتم العرض وفق حقل ID وشكرا .

#15

أخي الكريم أصيل:

انظر لهذا السطر:

$sql2="SELECT * FROM $tbl_name  where id= '$id' ";

هذا المتغير $id من أين سيحصل عليه البرنامج؟

أنت لم تقم بتحديد هذا المتغير ابدا لذلك فالنتائج لن تعرض لان البرنامج لا يرى قيمة المتغير id:

طبعا أنت تريد أن يتحدد هذا المتغير تلقائيا بعد اضافة المعلومات لذلك عليك اضافة هذا الكود قبل السطر السابق:

$sql3="SELECT id FROM $tbl_name  where like  '$name' ";
$result3=mysql_query($sql3);
while($rows=mysql_fetch_array($result3)){
$id = $rows['id'];
}

لاحظ هنا أنه يقوم بتحديد الاي دي بدلالة الاسم

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

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

تم تعديل هذه المشاركة بواسطة عبادة_كاتب في 12 مايو 2006 في 04:21

#16

شكرا لطيب تواصلك الحمد لله مشكلة ID تم حلها

المشكلة باختصار بس ما ادري انا مو قادر اوضحها ام ماذا ؟

الجدول به 4 حقول id ,name ,email ,work

صفحة ادخال البيانات يدخل فقط name ,email

طبعا id تلقائي

عند ارسال تظهر صفحة فيها السجلات وعند كل سجل رابط view

حيث يعرض السجل حسب id واقدر ادخل الحقل الرابع work هذا كل المطلوب من هنا .

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…