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

تحديد قاعدة البينات قبل أنشاء جدول معين

بدأه SalehZubir في 22 سبتمبر 2010 · 8 رد · 506 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

قمت بكتابة HTML Form يطلب من المستخدم إدخال أسم (أسم الجدول الذي أريد أنشائه داخل قاعدة بينات معينة) ومن ثم الضغط على زر Submit Query لأنشاء الجدول،

بطبيعة الحال فالنموذج مرتبط بطفحة اخرة تحتوي على كود php يقوم ببناء الجدول في القاعدة المحددة مسبقاً داخل الكود، ولله الحمد والمنة العملية كانت تتم بنجاح وبدون اي عقبات،

ولكن ما اريده هو ان تكون عملية اختيار القاعدة بيد المستخدم وليس المبرمج اي يستطيع المستخدم الأطلاع على قواعد البينات الموجودة في الـ MySql و من ثم يقوم بأختيار القاعدة التي يرد إنشاء جدول بداخلها

وبتوفيق من الله و من ثم مساعدة الأخ العضو في المنتدى A_Alakkad أستطعت حل مشكلة عرض القواعد الموجودة في الـ MySql للمستخدم بستخدام Drob-Down Box وشرح العملية في هذا الرابط

أما ما أريده الأن هو ان اجعل المستخدم يختار القاعدة من خلال Drob-Down Box و من ثم يقوم بكابة اسم الجدول (طبعأ نموذج الأختيار والأدخال في صفحة واحدة)

كود php لأضافة جدول لمن اراد الأطلاع عليه

<html>
<head>
<title>Table Creator</title>
</head>
<body>
<?php
$con = mysql_connect("localhost","root","");
$B = $_POST["branch"];
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("db1", $con);
$sql = "CREATE TABLE $B
(
Name varchar(15),
No int(15),PRIMARY KEY(No),
Nationality varchar(15),
ResidenceValidity varchar(15),
IDNO varchar(15),
PassportValidity varchar(15),
Workplace varchar(15),
Profession varchar(15),
ContactNumber varchar(15),
Notes varchar(250)
)";

mysql_query($sql,$con);

mysql_close($con);
?>

</body>
</html>

كود php لعرض قواعد MySql بستخدام Drob-Down Box

<html> 
<body> 
<?php 
$con = mysql_connect("localhost", "root", ""); 
$db_list = mysql_list_dbs($con); 
$i = 0; 
$db_count = mysql_num_rows($db_list); 
$dbname = mysql_db_name; 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
echo "<select name='databases'>"; 
while ($i < $db_count) 
  { 
  echo "<option value='$i'>" .$dbname($db_list, $i). "</option>"; 
  $i++; 
  } 
echo "</select>"; 


mysql_close($con); 
?> 


</body> 
</html>

اتمنى مساعدتي في حل هذا الموضوع

وجزاكم الله كل خير ووفقكم لما يحبه ويرضاه

تم تعديل هذه المشاركة بواسطة SalehZubir في 22 سبتمبر 2010 في 14:31

#2

أي موضوع تريدنا أن نساعدك به أخي الكريم !!

المثال واضح وجاهز لما تريده أي أن المستخدم يمكنه إختيار قاعدة البيانات وإسم الجدول وتطبيق ذلك وهذا موجود في الكود الذي أرفقته فماذا تريد ؟

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#3

أخي bastr3

أولاً جزاك الله خير على الأستجابة

ثانياً صحيح انني استطيع أن اختار قاعدة البينات التي اريدها عن طريق Drob-Down Box وكذلك استطيع أنشاء الجدول الذي اريده ولكن المشكلة هي عند التنفيذ (لا يتم بناء جدول في القاعدة التي اريدها)

السؤال بأسلوب مختلف

أريد من كود تنفيذ الجدول ان يحدد القاعدة التي سيبني داخلها بناء على ما اقوم بأختياره من Drob-Down Box

اتمنى أن اكون قد اوضحت المشكلة

#4

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

أخي أين يتم ادخال اسم الجدول؟

على كل حال عليك استقبال المتغير

$_POST['databases']

في صفحة انشاء الجدول فتقوم بوضع قيمته في هذا السطر

$db=$_POST['databases'];
mysql_select_db($db, $con);

من الأفضل و تجنباً للأخطاء ضعه في متحول و قم بتحديد قيمة افتراضية في حال لم يتم ارسال قيمة (اسم قاعدة البيانات)

أي قم بتحديد اسم قاعدة بيانات افتراضية هكذا مثلاً

$db=isset($_POST['databases'])?$_POST['databases']:"db1";
mysql_select_db($db, $con);

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

ملاحظة أخيرة : يجب أن تكون الـ Drop-Down list التي تحوي اسماء قواعد البيانات في نفس الـ Form الذي ترسل منه اسم الجدول المراد انشاؤه

إذا كان هناك أي نقطة غير مفهومة اسأل عنها و ضع لنا الكود كاملاً أي مع الفورم الذي ترسل منه اسم الجدول

بتوفيق الله..

Everything will be fine when we TALK LESS, DO MORE


#5

قمت بكل ما سبق لكن المشكلة ما زالت قائمة إلى الأن (أقوم بأختيار القاعدة ولكن الجدول ينشئ في قاعدة اخرة)

قمت برفع صفحة الإختيار والأدخال وكذلك صفحة التنفيذ للأطلاع على المشكلة بشكل اوضح

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

نموذج الإختيار و أنشاء القاعدة

sdbactb.php

صفحة التنفيذ

tb_creator.php

تم تعديل هذه المشاركة بواسطة SalehZubir في 23 سبتمبر 2010 في 13:42

#6

أخي هناك ملاحظة في نهاية مشاركتي

اقتباس

ملاحظة أخيرة : يجب أن تكون الـ Drop-Down list التي تحوي اسماء قواعد البيانات في نفس الـ Form الذي ترسل منه اسم الجدول المراد انشاؤه

أنت قمت بوضع كل منها في Form منفصل و لذلك عند الضغط على Submit يتم ارسال من Form واحد فقط (أي يتم ارسال اسم الجدول فقط ولا يتم ارسال اسم قاعدة البيانات)

بدل كود صفحة الـ sdbactb.php بالتالي :

<html> 
<body> 
<form action="tb_creator.php" method="post"> 
<?php 
$con = mysql_connect("localhost", "root", ""); 
$db_list = mysql_list_dbs($con); 
$i = 0; 
$db_count = mysql_num_rows($db_list); 
$dbname = mysql_db_name;  
if (!$con)  
  {  
  die('Could not connect: ' . mysql_error());  
  } 
echo "<select name='databases'>"; 
while ($i < $db_count) 
  {  
  echo "<option value='$i'>" .$dbname($db_list, $i). "</option>"; 
  $i++;  
  } 
echo "</select>"; 


mysql_close($con); 
?> 
Branch:<input type="text" name="branch"/> 
<input type="submit"/> 
</form> 


</body> 
</html>

جرب الآن و أخبرنا بالنتيجة

بتوفيق الله..

Everything will be fine when we TALK LESS, DO MORE


#7

قمت بتجربة الكود الذي اعطيتني ايه

<html>  
<body>  
<form action="tb_creator.php" method="post">  
<?php  
$con = mysql_connect("localhost", "root", "");  
$db_list = mysql_list_dbs($con);  
$i = 0;  
$db_count = mysql_num_rows($db_list);  
$dbname = mysql_db_name;   
if (!$con)   
  {   
  die('Could not connect: ' . mysql_error());   
  }  
echo "<select name='databases'>";  
while ($i < $db_count)  
  {   
  echo "<option value='$i'>" .$dbname($db_list, $i). "</option>";  
  $i++;   
  }  
echo "</select>";  


mysql_close($con);  
?>  
Branch:<input type="text" name="branch"/>  
<input type="submit"/>  
</form>  


</body>  
</html>

ولكن إالى الأن المشكلة قائمة

وهذه هي الملفات

sdbactb.php

tb_creator.php

#8

لا بأس أخي

المشكلة والله أعلم أنك لا تقوم بارسال اسم قاعدة البيانات بل ترسل رقم

حسنا الحل في أن تقوم بالتالي الآن و بإذن الله ستنجح الفكرة :

<html>  
<body>  
<form action="tb_creator.php" method="post">  
<?php  
$con = mysql_connect("localhost", "root", "");  
$db_list = mysql_list_dbs($con);  
$i = 0;  
$db_count = mysql_num_rows($db_list);  
$dbname = mysql_db_name;   
if (!$con)   
  {   
  die('Could not connect: ' . mysql_error());   
  }  
echo "<select name='databases'>";  
while ($i < $db_count)  
  {   
  echo "<option value='".$dbname($db_list, $i)."'>" .$dbname($db_list, $i). "</option>";  
  $i++;   
  }  
echo "</select>";  


mysql_close($con);  
?>  
Branch:<input type="text" name="branch"/>  
<input type="submit"/>  
</form>  


</body>  
</html>

جرب الآن و إن لم تنجح اطبع لي قيمة المتغير

$_POST['databases']

و قيمة المتحول :

$dbname($db_list, 1)

و اكتب لنا قيمتهم

ولكن بإذن الله من المفترض أن تعمل الآن

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 23 سبتمبر 2010 في 23:52

Everything will be fine when we TALK LESS, DO MORE


#9

نجحت العملية ولله الحمد

<html>   
<body>   
<form action="tb_creator.php" method="post">   
<?php   
$con = mysql_connect("localhost", "root", "");   
$db_list = mysql_list_dbs($con);   
$i = 0;   
$db_count = mysql_num_rows($db_list);   
$dbname = mysql_db_name;    
if (!$con)    
  {    
  die('Could not connect: ' . mysql_error());    
  }   
echo "<select name='databases'>";   
while ($i < $db_count)   
  {    
  echo "<option value='".$dbname($db_list, $i)."'>" .$dbname($db_list, $i). "</option>";   
  $i++;    
  }   
echo "</select>";   


mysql_close($con);   
?>   
Branch:<input type="text" name="branch"/>   
<input type="submit"/>   
</form>   


</body>   
</html>

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

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

تم تعديل هذه المشاركة بواسطة SalehZubir في 24 سبتمبر 2010 في 00:18

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