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

سؤال عن إضافة forign key

بدأه المتفائلة في 27 مارس 2011 · 11 رد · 853 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لو سمحتوا انا عندي form يدخل من خلالها الاسم الثلاثي وتعرض له drop list من الdata base

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

ادخال الاسم يمشي معي لكن لما يختار من الdrop list المفروض اخزن الid للاختيار اللي بختاره لانه يعتبرforign key

وهذي العملية ماتمشي معي

وهذا كود الform

<html dir="rtl"> 
<html>
<head>
</head>
<body>

<form name="myform"  method = "post" action ="addus.php">
<div>
<div>
<table align="center">

<tr><th>البيانات الشخصيه</th></tr>
<tr><td rowspan=2 >الاسم الثلاثي</td><td><h6>الاسم الاول</h6></td>
<td><h6>اسم الاب</h6></td><td><h6>العائله</h6></td></tr>
<tr><td><input name = "fname" type = "text" size = "20" maxlength = "40"></td>
<td><input name = "mname" type = "text" size = "20" maxlength = "40"></td>
<td><input name = "lname" type = "text" size = "20" maxlength = "40"></td></tr>
<tr><td>القسم</td><td>
<?
$connect=mysql_connect("localhost","root","123");
mysql_query("SET NAMES 'utf-8'");  

mysql_select_db("h");
$sq= mysql_query("select * from department");
echo "<select name =\"depart\">";
while($mysqlf= mysql_fetch_array($sq))
{
$D_id=$mysqlf['D_id'];
$D_name=$mysqlf['D_name'];
echo "<option>";
echo "$D_name"; 
echo "</option>";
}echo"</select>";?></td></tr>
</table>
 <p align="center">
               <input type = "submit" value ="إضافة" />
               <input type ="reset"  value = "الغاء الأمر" />
</p>
</div>

</body>
</html>

وهذا كود الاضافة للقاعدة البيانات

<?php

$fname=$_POST['fname'];
$mname=$_POST['mname'];
$lname=$_POST['lname'];
$did=$_POST['$D_id'];

mysql_connect("localhost","root","123");
mysql_select_db("h");


$sql= mysql_query("insert into h_user (H_fname,H_mname,H_lname,D_id)
values('$fname','$mname','$lname','$did')");
require ('user.php');
?>
#2

السلام عليكم

عليك وضع Value للخيارات وهي قيمة الحقل الاجنبي اي يجب ان تكون النتيجة كمايلي :

  <select name = "depart" >
 <option value="1">Name1</option>
 <option value="2">Name2</option>
 <option value="3">Name3</option>
 </select>
#3

طيب اخوي انا لما اسوي select مافيه عدد محدد للقيم اللي راح تطلع من قاعدة البيانات ممكن تزيد او تنقص

يعني على اي اساس اعطيها value وهي في while

ياليت تشرح قصدك

يمكن فهمتك غلط

#4

االسلام عليكم , فى تعديل بسيط فى صفحة ال addus.php , والتعديل ده هتستعيدى بيه D_name وده بسبب انك لم تعطى قيمة لل option !!

فالتعديل التالى لإستعادة اسم القسم :

<?php

$fname=$_POST['fname'];
$mname=$_POST['mname'];
$lname=$_POST['lname'];
$did=$_POST['depart'];

mysql_connect("localhost","root","123");
mysql_select_db("h");


$sql= mysql_query("insert into h_user (H_fname,H_mname,H_lname,D_id)
values('$fname','$mname','$lname','$did')");
require ('user.php');
?>

اما لو محتاجة تستعيدى ال D_id فأعطى قيمة لل option وتساوى الD_id

echo "<select name =\"depart\">";
while($mysqlf= mysql_fetch_array($sq))
{
$D_id=$mysqlf['D_id'];
$D_name=$mysqlf['D_name'];
echo "<option value=\"$D_id\">";
echo "$D_name"; 
echo "</option>";
}echo"</select>";?>

غير مجرب بس إن شاء الله شغال

#5

:huh: ماضبطت معي

وايضا اصبح يعرض id تبع كل قسم بجاور اسم القسم في الlist

والفكرة انه يعرض اسماء الاقسام فقط في list

ويختار المستخدم اي قسم

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

#6

:mellow: انا جربتها و اشتغلت ,

طيب فى حاجتين جربيهم , افتحى كود البى اتش بى ب

<?php

وبعد كل سيكول كويرى ضعى (() or die(mysql_error

مثلا :-

$sq= mysql_query("select * from departement") or die(mysql_error());

لمعرفة لو كان الخطأ فى السيكوال

تم تعديل هذه المشاركة بواسطة kareem_3d في 27 مارس 2011 في 19:40

#7

ماقصدته سابقا اني تكلمت عن كيفية ظهور النتيجة ولم اتكلم عن كود php .

لذا بعد كود الاخ كريم افتحي مصدر الصفحة في المصتفح وانظري كيف كانت النتيجة .

حيث يجب ان تكون على الشكل

  <select name = "depart" >
 <option value="1">Name1</option>
 <option value="2">Name2</option>
 <option value="3">Name3</option>
 </select>
#8

حاولت وحاولت ماضبط معي

انا ادري ممكن الغلط شي تافه

حتى بعد اضافة or die(mysql_error());

وهذا الكود

<html dir="rtl"> 
<html>
<head><title>موظف جديد</title>
</head>
<body>

<form name="myform"  method = "post" action ="addus.php">
<div>
<div>
<table align="center">

<tr><th>البيانات الشخصيه</th></tr>
<tr><td rowspan=2 >الاسم الثلاثي</td><td><h6>الاسم الاول</h6></td>
<td><h6>اسم الاب</h6></td><td><h6>العائله</h6></td></tr>
<tr><td><input name = "fname" type = "text" size = "20" maxlength = "40"></td>
<td><input name = "mname" type = "text" size = "20" maxlength = "40"></td>
<td><input name = "lname" type = "text" size = "20" maxlength = "40"></td></tr>
<tr><td>القسم</td><td>
<?
$connect=mysql_connect("localhost","root","123");
mysql_query("SET NAMES 'utf-8'");  
mysql_select_db("h");
$sq= mysql_query("select * from department")or die(mysql_error());
echo "<select name =\"depart\">";
while($mysqlf= mysql_fetch_array($sq))
{
$D_id=$mysqlf['D_id'];
$D_name=$mysqlf['D_name'];
echo "<option> value =\'$D_id\'";
echo "$D_name"; 
echo "</option>";
}echo"</select>";?></td></tr>
</table>
 <p align="center">
               <input type = "submit" value ="إضافة" />
               <input type ="reset"  value = "الغاء الأمر" />
</p>
</div>

</body>
</html>

وهذا كود اضافتها للقاغدة البيانات مايضيف الا اذا وضعت null ... بدل $did

<?php

$fname=$_POST['fname'];
$mname=$_POST['mname'];
$lname=$_POST['lname'];
$did=$_POST['$D_id'];

mysql_connect("localhost","root","123");
mysql_select_db("hesbah");


$sql= mysql_query("insert into hesbah_user (H_fname,H_mname,H_lname,D_id)
values('$fname','$mname','$lname','$did')");
require ('user.php');
?>
#9

فى بعض التعديلا , فى تاج ال option امسحى ال slash (\) بجانب ال single quotation (') واقفلى التاج بعد ال value مش قبلها وده الكود بعد التعديل :

echo "<select name =\"depart\">";
while($mysqlf= mysql_fetch_array($sq))
{
$D_id=$mysqlf['D_id'];
$D_name=$mysqlf['D_name'];
echo "<option value ='$D_id'>";
echo "$D_name"; 
echo "</option>";
}echo"</select>";?>

وفى الكود الثانى استبدلى قيمة الPOST ب depart انظرى الكود التالى

$did=$_POST['depart'];

تم تعديل هذه المشاركة بواسطة kareem_3d في 28 مارس 2011 في 21:55

#10

انا بصراحة تعبت كل الطرق مانفعت معي

#12

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

الكود طلع مضبوط مية في المية

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

وهي اللي مسببة لي كل هذي المشاكل

وخلاص الكود اليوم اشتغل بعد اكتشاف هذا الخطأ وتصحيحه

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