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

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

بدأه muzamil87 في 21 يوليو 2010 · 29 رد · 2,003 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اعزائي الكرام

مطلوب اني اقوم بربط قاعدة بيانات مع موقع الشركه ويكون فيها بحث متقدم ولكن بشكل معين.

بمعنى اخر ان يقوم المستخدم باختيار اكثر من بلد دفعه واحده من قائمة ومن ثم يقوم باكثر من سنه وكذلك اختيار اكثر من متغير وذلك للمقارنه بينهما

مثال على ذلك:

ان يقوم المستخدم باختيار مصر - السودان و السعوديه, ومن ثم يقوم باختيار الاعوام 1998, 1999, 2005 و 2010 على سبيل المثال وبعد ذلك يقوم باختيار المتغير المراد المقارنه فيه

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

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

حتى الان وجدت طريقتين لعمل ذلك:

احدهما عن طريق check box بحيث يقوم المستخدم باختيار اكثر من دوله والى ذلك

ومثالها على الرابط التالي: http://www.sesric.org/baseind-step1.php

الطريقه الاخرى تكون عن طريق الاختيار من selection list

بالنسبه للطريقه الثانيه فلا يمكنكم الوصول الى الصفحه الى من داخل الشبكه ولذلك وضعت لكم صور منها في الملحقات

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

اسف على الاطاله وجزاكم الله خيرا

post-210278-098052800 1279710313_thumb.j

post-210278-075405400 1279710320_thumb.j

post-210278-069569800 1279710326_thumb.j

post-210278-043350900 1279710332_thumb.j

المرفقات
1.JPG2.JPG3.JPG4.JPG
#2

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

أخي بحسب فهمي لطلبك سأعطيك مثالا بسيطاً عن الفكرة

هذا كود المثال : (أرجو أن يكون واضحاً و أن تكون فكرته مطابقة لطلبك)


<?php
if(isset($_POST['country'])) {
$countries = $_POST['country'];
for($i=0;$i<count($countries);$i++){
if($i<count($countries)-1) {
$cond .= "'".$countries[$i]."',";
} else {
$cond .= "'".$countries[$i]."'";
}
}
}
$con = mysql_connect('localhost','user','pass');
mysql_select_db('db_name',$con);
$res=mysql_query("select * from Tablename where country in (".$cond.")");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post">
<select name="country[]" multiple>
<option value="Syria">Syria</option>
<option value="Jordan">Jordan</option>
<option value="Egypt">Egypt</option>
</select>
<input type="submit" value="Send">
</form>
</body>
</html>

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

طبعا يبقى عرض ناتج الاستعلام في الجدول المطلوب و إن اردنا دراسة حقول أخرى غير الدولة ليس علينا إلا أن نضيفه إلى الاستعلام بنفس الطريقة بعد And

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

Everything will be fine when we TALK LESS, DO MORE


#3
MoHaMMaD Pro كتب:

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

أخي بحسب فهمي لطلبك سأعطيك مثالا بسيطاً عن الفكرة

هذا كود المثال : (أرجو أن يكون واضحاً و أن تكون فكرته مطابقة لطلبك)


<?php
if(isset($_POST['country'])) {
$countries = $_POST['country'];
for($i=0;$i<count($countries);$i++){
if($i<count($countries)-1) {
$cond .= "'".$countries[$i]."',";
} else {
$cond .= "'".$countries[$i]."'";
}
}
}
$con = mysql_connect('localhost','user','pass');
mysql_select_db('db_name',$con);
$res=mysql_query("select * from Tablename where country in (".$cond.")");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post">
<select name="country[]" multiple>
<option value="Syria">Syria</option>
<option value="Jordan">Jordan</option>
<option value="Egypt">Egypt</option>
</select>
<input type="submit" value="Send">
</form>
</body>
</html>

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

طبعا يبقى عرض ناتج الاستعلام في الجدول المطلوب و إن اردنا دراسة حقول أخرى غير الدولة ليس علينا إلا أن نضيفه إلى الاستعلام بنفس الطريقة بعد And

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

اخي الكريم

المطلوب ان ال selection يُقرأ من قاعدة البيانات بالنسبه للدول وبعدها للسنين وهكذا ولكن في الكود المعطى فإن البلدان موجوده من الاساس

بمعنى اخر ان اي تغيير في قاعدة البيانات يظهر تلقائيا في قائمة ال selection

بالنسبه لتعليقك بان دراسة حقول اخرى يكون باضافة الاستعلام بعد And فاني احب اذكر ان المستخدم يقوم اولا باختيار الدول المطلوبه ثم يقوم بالضغط على زر insert على سبيل المثال وذلك لنقلها لقائمة الدول المختاره وبعد ذلك يقوم بالضغط على next للذهاب لصفحه اخرى ويقوم فيها باختيار السنين وهكذا كما في الامقله اللي ذكرتها في الرد الاول

تقبل تحياتي وشكرا على المساعده

#4

بسم الله الرحمن الرحيم ...

من زمان ماشاركت :) بس ظروف العمل

على كل لنفرض أن لدينا جدول الدول وجدول للبيانات وأقصد بالبيانات المساحة الجغرافيه والتعداد السكاني وعلى فرض أن هذه البيانات تحتوي بيانات لكل دوله بناء على السنه فيكون الجدول الأول - الدول كالتالي

countries 
-----------
id  | countries 
 1  | Jordan
 2  | Egypt
3  | Saudi Arabia

وجدول البيانات كالتالي

info_country
--------------
id | country_id | type_info | year | data_info
1  |	1   	| 	1   | 2008 |   352
2  | 	1  	| 	2   | 2009 |   569
3  | 	1  	| 	3   | 2010 |   642
4  | 	2  	| 	1   | 2008 |   258
5  | 	2  	| 	2   | 2009 |   685
6  | 	2  	| 	3   | 2010 |   620
7  | 	3  	| 	1   | 2008 |   912
8  | 	3  	| 	2   | 2009 |   364

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

نبدأ:

على فكرة يمكن إستخدام أكثر من طريقة لسرد الدول مثلا , وأفضل طريقة التكميل التلقائي وذلك لسهوله عرض البيانات خصوصا إذا كان كثيره ولكن لعدم تعقيد الأمور سأستخدم الطرق التقليديه

لنبدأ بإنشاء النموذج وتبعبئة البيانات من قاعدة البيانات وبدون الحاجه لزر التالي

<?
//connect mysql
define('db_host', 'localhost');
define('db_name', 'cdcol');
define('db_user', 'root');
define('db_pass', '');
$link = mysql_connect(db_host,db_user,db_pass)or die ('I cannot connect to the database because: ' . mysql_error());
$db_selected = mysql_select_db(db_name, $link);

$countries="";// for hacks!
$sql_countries=mysql_query("select * from countries");
while ($row_countries = mysql_fetch_array($sql_countries, MYSQL_BOTH)) {
	$countries.="<option value='$row_countries[0]'>$row_countries[1]</option>\n\r";
}

$types="";// for hacks!
$sql_types=mysql_query("select * from types");
while ($row_types = mysql_fetch_array($sql_types, MYSQL_BOTH)) {
	$types.="<option value='$row_types[0]'>$row_types[1]</option>\n\r";
}

$yesrs="";// for hacks!
$sql_yesrs=mysql_query("select * from info_country GROUP BY `year` ORDER BY `year`");
while ($row_yesrs = mysql_fetch_array($sql_yesrs, MYSQL_BOTH)) {
	$yesrs.="<option>$row_yesrs[year]</option>\n\r";
}

?>
<form method="post">
please select<br />
<select name="country" size="5" multiple="multiple">
<?=$countries?>
</select>
<br /><br />
please select<br />
<select name="types" size="5" multiple="multiple">
<?=$types?>
</select>
<br /><br />
please select<br />
<select name="yesrs" size="5" multiple="multiple">
<?=$yesrs?>
</select>
<br /><br />

<input type="submit" value="search" />

</form>

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

الآن ماذا سيحدث عن إختيار البيانات وإرسالها ؟

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

CMS Sfhati , Website Generator


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


 


small-logo.png

#5
bastr3 كتب:

بسم الله الرحمن الرحيم ...

من زمان ماشاركت :) بس ظروف العمل

على كل لنفرض أن لدينا جدول الدول وجدول للبيانات وأقصد بالبيانات المساحة الجغرافيه والتعداد السكاني وعلى فرض أن هذه البيانات تحتوي بيانات لكل دوله بناء على السنه فيكون الجدول الأول - الدول كالتالي

countries 
-----------
id  | countries 
 1  | Jordan
 2  | Egypt
3  | Saudi Arabia

وجدول البيانات كالتالي

info_country
--------------
id | country_id | type_info | year | data_info
1  |	1   	| 	1   | 2008 |   352
2  | 	1  	| 	2   | 2009 |   569
3  | 	1  	| 	3   | 2010 |   642
4  | 	2  	| 	1   | 2008 |   258
5  | 	2  	| 	2   | 2009 |   685
6  | 	2  	| 	3   | 2010 |   620
7  | 	3  	| 	1   | 2008 |   912
8  | 	3  	| 	2   | 2009 |   364

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

نبدأ:

على فكرة يمكن إستخدام أكثر من طريقة لسرد الدول مثلا , وأفضل طريقة التكميل التلقائي وذلك لسهوله عرض البيانات خصوصا إذا كان كثيره ولكن لعدم تعقيد الأمور سأستخدم الطرق التقليديه

لنبدأ بإنشاء النموذج وتبعبئة البيانات من قاعدة البيانات وبدون الحاجه لزر التالي

<?
//connect mysql
define('db_host', 'localhost');
define('db_name', 'cdcol');
define('db_user', 'root');
define('db_pass', '');
$link = mysql_connect(db_host,db_user,db_pass)or die ('I cannot connect to the database because: ' . mysql_error());
$db_selected = mysql_select_db(db_name, $link);

$countries="";// for hacks!
$sql_countries=mysql_query("select * from countries");
while ($row_countries = mysql_fetch_array($sql_countries, MYSQL_BOTH)) {
	$countries.="<option value='$row_countries[0]'>$row_countries[1]</option>\n\r";
}

$types="";// for hacks!
$sql_types=mysql_query("select * from types");
while ($row_types = mysql_fetch_array($sql_types, MYSQL_BOTH)) {
	$types.="<option value='$row_types[0]'>$row_types[1]</option>\n\r";
}

$yesrs="";// for hacks!
$sql_yesrs=mysql_query("select * from info_country GROUP BY `year` ORDER BY `year`");
while ($row_yesrs = mysql_fetch_array($sql_yesrs, MYSQL_BOTH)) {
	$yesrs.="<option>$row_yesrs[year]</option>\n\r";
}

?>
<form method="post">
please select<br />
<select name="country" size="5" multiple="multiple">
<?=$countries?>
</select>
<br /><br />
please select<br />
<select name="types" size="5" multiple="multiple">
<?=$types?>
</select>
<br /><br />
please select<br />
<select name="yesrs" size="5" multiple="multiple">
<?=$yesrs?>
</select>
<br /><br />

<input type="submit" value="search" />

</form>

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

الآن ماذا سيحدث عن إختيار البيانات وإرسالها ؟

اخي الكريم

بعد تعديل الكود ليتوافق مع اسم قاعدة البيانات لدي وكذلك الجداول التي فيها تظهر لي الشاشه بالشكل التالي و قائمة ال selection خاليه من اي معلومات كما في المرفقات

post-210278-018267000 1279952788_thumb.j

المرفقات
test.JPG
#6
CREATE TABLE IF NOT EXISTS `countries` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `countries` varchar(20) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

--
-- Dumping data for table `countries`
--

INSERT INTO `countries` (`id`, `countries`) VALUES
(1, 'Jordan'),
(2, 'Egypt'),
(3, 'Saudi Arabia');

-- --------------------------------------------------------

--
-- Table structure for table `info_country`
--

CREATE TABLE IF NOT EXISTS `info_country` (
  `id` int(6) NOT NULL,
  `country_id` int(6) NOT NULL,
  `type_info` int(6) NOT NULL,
  `year` int(6) NOT NULL,
  `data_info` int(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=latin1_general_ci;

--
-- Dumping data for table `info_country`
--

INSERT INTO `info_country` (`id`, `country_id`, `type_info`, `year`, `data_info`) VALUES
(1, 1, 1, 2008, 352),
(2, 1, 2, 2009, 569),
(3, 1, 3, 2010, 642),
(4, 2, 1, 2008, 258),
(5, 2, 2, 2009, 685),
(6, 2, 3, 2010, 620),
(7, 3, 1, 2008, 912),
(8, 3, 2, 2009, 364);

-- --------------------------------------------------------

--
-- Table structure for table `types`
--

CREATE TABLE IF NOT EXISTS `types` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `types` varchar(20) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

--
-- Dumping data for table `types`
--

INSERT INTO `types` (`id`, `types`) VALUES
(1, 'geographical area'),
(2, 'Census'),
(3, 'Education');

CMS Sfhati , Website Generator


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


 


small-logo.png

#7
bastr3 كتب:

CREATE TABLE IF NOT EXISTS `countries` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `countries` varchar(20) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

--
-- Dumping data for table `countries`
--

INSERT INTO `countries` (`id`, `countries`) VALUES
(1, 'Jordan'),
(2, 'Egypt'),
(3, 'Saudi Arabia');

-- --------------------------------------------------------

--
-- Table structure for table `info_country`
--

CREATE TABLE IF NOT EXISTS `info_country` (
  `id` int(6) NOT NULL,
  `country_id` int(6) NOT NULL,
  `type_info` int(6) NOT NULL,
  `year` int(6) NOT NULL,
  `data_info` int(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=latin1_general_ci;

--
-- Dumping data for table `info_country`
--

INSERT INTO `info_country` (`id`, `country_id`, `type_info`, `year`, `data_info`) VALUES
(1, 1, 1, 2008, 352),
(2, 1, 2, 2009, 569),
(3, 1, 3, 2010, 642),
(4, 2, 1, 2008, 258),
(5, 2, 2, 2009, 685),
(6, 2, 3, 2010, 620),
(7, 3, 1, 2008, 912),
(8, 3, 2, 2009, 364);

-- --------------------------------------------------------

--
-- Table structure for table `types`
--

CREATE TABLE IF NOT EXISTS `types` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `types` varchar(20) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

--
-- Dumping data for table `types`
--

INSERT INTO `types` (`id`, `types`) VALUES
(1, 'geographical area'),
(2, 'Census'),
(3, 'Education');

اخي الكريم

المشكله التي لدي ليست من ناحية الجداول الموجوده في قاعدة البيانات ولكنها في طريقة ربطها مع ال selection box ومن ثم انشاء تقرير على حسب الاختيارات التي قام بها المستخدم

#8

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

المرحله الثانيه لم أفهم ماتريد بالضبط !! هل أعرض البيانات فقط ؟ إذا كان الأمر كذلك فهذا هو الكود :

<?
//connect mysql
define('db_host', 'localhost');
define('db_name', 'cdcol');
define('db_user', 'root');
define('db_pass', '');
$link = mysql_connect(db_host,db_user,db_pass)or die ('I cannot connect to the database because: ' . mysql_error());
$db_selected = mysql_select_db(db_name, $link);

function get_sql($table,$id){
	$f=mysql_fetch_array(mysql_query("select $table from $table where id=$id"));
	return $f[0];
}
$countries="";// for hacks!
$sql_countries=mysql_query("select * from countries");
while ($row_countries = mysql_fetch_array($sql_countries, MYSQL_BOTH)) {
	$countries.="<option value='$row_countries[0]'>$row_countries[1]</option>\n\r";
}

$types="";// for hacks!
$sql_types=mysql_query("select * from types");
while ($row_types = mysql_fetch_array($sql_types, MYSQL_BOTH)) {
	$types.="<option value='$row_types[0]'>$row_types[1]</option>\n\r";
}

$yesrs="";// for hacks!
$sql_yesrs=mysql_query("select * from info_country GROUP BY `year` ORDER BY `year`");
while ($row_yesrs = mysql_fetch_array($sql_yesrs, MYSQL_BOTH)) {
	$yesrs.="<option>$row_yesrs[year]</option>\n\r";
}

if($_POST[country] && $_POST[types] && $_POST[yesrs]){
	$echo="<table width='100%' border='1'>
  <tr style='background:#333;color:#fff'>
	<td>country</td>
	<td>type_info</td>
	<td>year</td>
	<td>data</td>
  </tr>
";
$sql="(";$or=""; foreach ($_POST[country] as $c){ $sql.=" $or country_id=$c  "; $or="or";} $sql.=") ";
$sql.=" and (";$or=""; foreach ($_POST[types] as $c){ $sql.=" $or type_info=$c  "; $or="or";} $sql.=") ";
$sql.=" and (";$or=""; foreach ($_POST[yesrs] as $c){ $sql.=" $or year=$c  "; $or="or";} $sql.=") ";
$sql_result=mysql_query("select * from info_country where $sql");
while ($row_result = mysql_fetch_array($sql_result, MYSQL_BOTH)) {
	$echo.="
  <tr>
	<td>".get_sql("countries",$row_result[country_id])."</td>
	<td>".get_sql("types",$row_result[type_info])."</td>
	<td>".$row_result[year]."</td>
	<td>".$row_result[data_info]."</td>
  </tr>
";
}


	$echo.="</table>";
	echo $echo;
exit();
}

?>
<form method="post">
please select<br />
<select name="country[]" size="5" multiple="multiple">
<?=$countries?>
</select>
<br /><br />
please select<br />
<select name="types[]" size="5" multiple="multiple">
<?=$types?>
</select>
<br /><br />
please select<br />
<select name="yesrs[]" size="5" multiple="multiple">
<?=$yesrs?>
</select>
<br /><br />

<input type="submit" value="search" />

</form>

وهذه النتيجة بالصور

post-21336-097436000 1280062962_thumb.pn

المرفقات
25-07-2010 04-01-02 م.png

تم تعديل هذه المشاركة بواسطة bastr3 في 25 يوليو 2010 في 16:02

CMS Sfhati , Website Generator


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


 


small-logo.png

#9

اخي الكريم

انا شاكر لك مجهودك متعبك معايا

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

على كل حال انا لازلت في المرحله الاولى وهي ربط الجداول مع الليست بوكس ودائما تظهر الجداول خاليه من اي بيانات

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

تقبل تحياتي واسف على الازعاج

#10

أخي الكريم الكود هو نفسه الموجود في المشاركه رقم 8 لا داعي لأن أقوم بأخذه ولصقه في ملف نصي وتخزين الملف بإسم وإمتداد php قم أنت بعمل هذه العمليه !!

فكر في أمور أكثر تحدي , مثل إظهار النتيجه على شكل رسم بياني بأشكال عديده وتصدير النتيجه على شكل ملف إكسل أو بي دي أف وسأساعدك في هذا إن رأيت منك جديه في العمل :)

CMS Sfhati , Website Generator


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


 


small-logo.png

#11
bastr3 كتب:

أخي الكريم الكود هو نفسه الموجود في المشاركه رقم 8 لا داعي لأن أقوم بأخذه ولصقه في ملف نصي وتخزين الملف بإسم وإمتداد php قم أنت بعمل هذه العمليه !!

فكر في أمور أكثر تحدي , مثل إظهار النتيجه على شكل رسم بياني بأشكال عديده وتصدير النتيجه على شكل ملف إكسل أو بي دي أف وسأساعدك في هذا إن رأيت منك جديه في العمل :)

اخي الكريم

انا بالفعل قمت بوضع الكود في ملف php ولكن كما ذكرت انه تأتيني الجداول خاليه واليك الصفحه التي تظهر عندي في المتصفح

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

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

على كل حال لا داعي للاستعجال وشاكر لك طولة بالك معي

تقبل تحياتي اخي

post-210278-047667300 1280155408_thumb.j

المرفقات
5.JPG

تم تعديل هذه المشاركة بواسطة muzamil87 في 26 يوليو 2010 في 17:59

#12
muzamil87 كتب:

اخي الكريم

انا بالفعل قمت بوضع الكود في ملف php ولكن كما ذكرت انه تأتيني الجداول خاليه واليك الصفحه التي تظهر عندي في المتصفح

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

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

على كل حال لا داعي للاستعجال وشاكر لك طولة بالك معي

تقبل تحياتي اخي

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

أعتذر أخي عن اغفال فكرة التعبئة من قاعدة البيانات في الكود ولكن لم تخطر ببالي

على كل حال الأخ bastr3 كتب لك الجواب الكافي الوافي ما شاء الله عنه

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

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

$countries.="<option value='$row_countries[0]'>$row_countries[1]</option>\n\r";

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

Everything will be fine when we TALK LESS, DO MORE


#13

جرب تغيير وسم البي أتش بي من

<? ......code here .... ?>

إلى

<?php ......code here .... ?>

وردلي خبر بنجاح العمليه :)

CMS Sfhati , Website Generator


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


 


small-logo.png

#14
MoHaMMaD Pro كتب:

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

أعتذر أخي عن اغفال فكرة التعبئة من قاعدة البيانات في الكود ولكن لم تخطر ببالي

على كل حال الأخ bastr3 كتب لك الجواب الكافي الوافي ما شاء الله عنه

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

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

$countries.="<option value='$row_countries[0]'>$row_countries[1]</option>\n\r";

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

اخي الكريم لا داعي للاعتذار, كلنا ننسى وكلنا نخطئ وانا مبتدئ في عالم ال php وعلى ايديكم اتعلم

تقبل تحياتي

bastr3 كتب:

جرب تغيير وسم البي أتش بي من

<? ......code here .... ?>

إلى

<?php ......code here .... ?>

وردلي خبر بنجاح العمليه :)

اخي الكريم

بعد اضافة phpالى كود ظهر لي خطأ وهو كالتالي

Notice:  Use of undefined constant country - assumed 'country' in  C:\wamp\www\drsd\Untitled-1.php on line 32

Notice:  Undefined index: country in C:\wamp\www\drsd\Untitled-1.php  on line 32

مع العلم باني استخدمت نفس الكود وفقط قمت بتغيير اسم قاعدة البيانات من الكود وذلك للتأكد من امكانية تشغيل الكود

وايضا الجداول ظهرت خاليه من اي بيانات !!

تقبل تحياتي

#15

معنى هذا أن الكود إشتغل :)

انت تستخدم إعدادات بي أتش بي 5

لا أعلم بالنسبه للمتغيرات ماذا جد عليها مع أنني أستخدم نفس الإصدار ولكن لم تظهر لي مشكله من هذا النوع , يجب عليك تحديد الإعدادات لتتناسب مع العمل المرن

على كل جرب إستخدام الكوتيشن يعني ضع المتغيرات داخل علامات تنصيص ... غير

if($_POST[country] && $_POST[types] && $_POST[yesrs]){

إلى

if($_POST["country"] && $_POST["types"] && $_POST["yesrs"]){

CMS Sfhati , Website Generator


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


 


small-logo.png

#16
bastr3 كتب:

معنى هذا أن الكود إشتغل :)

انت تستخدم إعدادات بي أتش بي 5

لا أعلم بالنسبه للمتغيرات ماذا جد عليها مع أنني أستخدم نفس الإصدار ولكن لم تظهر لي مشكله من هذا النوع , يجب عليك تحديد الإعدادات لتتناسب مع العمل المرن

على كل جرب إستخدام الكوتيشن يعني ضع المتغيرات داخل علامات تنصيص ... غير

if($_POST[country] && $_POST[types] && $_POST[yesrs]){

إلى

if($_POST["country"] && $_POST["types"] && $_POST["yesrs"]){

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

Notice:  Undefined index: country in C:\wamp\www\drsd\Untitled-1.php  on line 32
#17

إخي الحبيب هذا لا يعتبر خطأ وإنما تحذير ولا يؤثر على عمل الكود على الإطلاق ,,,

هل عمل معك السكريبت أم لا ؟

تأكد من وضع علامة تنصيص لكل المتغيرات الموجوده داخل مصفوفات مثل :

$sql="(";$or=""; foreach ($_POST["country"] as $c){ $sql.=" $or country_id=$c  "; $or="or";} $sql.=") ";
$sql.=" and (";$or=""; foreach ($_POST["types"] as $c){ $sql.=" $or type_info=$c  "; $or="or";} $sql.=") ";
$sql.=" and (";$or=""; foreach ($_POST["yesrs"] as $c){ $sql.=" $or year=$c  "; $or="or";} $sql.=") ";
$sql_result=mysql_query("select * from info_country where $sql");

CMS Sfhati , Website Generator


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


 


small-logo.png

#18
bastr3 كتب:

إخي الحبيب هذا لا يعتبر خطأ وإنما تحذير ولا يؤثر على عمل الكود على الإطلاق ,,,

هل عمل معك السكريبت أم لا ؟

تأكد من وضع علامة تنصيص لكل المتغيرات الموجوده داخل مصفوفات مثل :

$sql="(";$or=""; foreach ($_POST["country"] as $c){ $sql.=" $or country_id=$c  "; $or="or";} $sql.=") ";
$sql.=" and (";$or=""; foreach ($_POST["types"] as $c){ $sql.=" $or type_info=$c  "; $or="or";} $sql.=") ";
$sql.=" and (";$or=""; foreach ($_POST["yesrs"] as $c){ $sql.=" $or year=$c  "; $or="or";} $sql.=") ";
$sql_result=mysql_query("select * from info_country where $sql");

اخي الكريم

حتى بعد وضع علامة التنصيص لا تزال المشكله قائمه والجداول خاليه من اي بيانات

هذا هو الكود بعد اضافة علامة التنصيص الى المصفوفات

<?php
//connect mysql 
define('db_host', 'localhost'); 
define('db_name', 'test'); 
define('db_user', 'root'); 
define('db_pass', ''); 
$link = mysql_connect(db_host,db_user,db_pass)or die ('I cannot connect to the database because: ' . mysql_error()); 
$db_selected = mysql_select_db(db_name, $link); 

function get_sql($table,$id){ 
    	$f=mysql_fetch_array(mysql_query("select $table from $table where id=$id")); 
    	return $f[0]; 
} 
$countries="";// for hacks! 
$sql_countries=mysql_query("select * from countries"); 
while ($row_countries = mysql_fetch_array($sql_countries, MYSQL_BOTH)) { 
    	$countries.="<option value='$row_countries[0]'>$row_countries[1]</option>\n\r"; 
} 

$types="";// for hacks! 
$sql_types=mysql_query("select * from types"); 
while ($row_types = mysql_fetch_array($sql_types, MYSQL_BOTH)) { 
    	$types.="<option value='$row_types[0]'>$row_types[1]</option>\n\r"; 
} 

$yesrs="";// for hacks! 
$sql_yesrs=mysql_query("select * from info_country GROUP BY `year` ORDER BY `year`"); 
while ($row_yesrs = mysql_fetch_array($sql_yesrs, MYSQL_BOTH)) { 
    	$yesrs.="<option>$row_yesrs[year]</option>\n\r"; 
} 

if($_POST["country"] && $_POST["types"] && $_POST["yesrs"]){ 
    	$echo="<table width='100%' border='1'> 
  <tr style='background:#333;color:#fff'> 
    	<td>country</td> 
    	<td>type_info</td> 
    	<td>year</td> 
    	<td>data</td> 
  </tr> 
"; 
$sql="(";$or=""; foreach ($_POST["country"] as $c){ $sql.=" $or country_id=$c  "; $or="or";} $sql.=") "; 
$sql.=" and (";$or=""; foreach ($_POST["types"] as $c){ $sql.=" $or type_info=$c  "; $or="or";} $sql.=") "; 
$sql.=" and (";$or=""; foreach ($_POST["yesrs"] as $c){ $sql.=" $or year=$c  "; $or="or";} $sql.=") "; 
$sql_result=mysql_query("select * from info_country where $sql"); 
while ($row_result = mysql_fetch_array($sql_result, MYSQL_BOTH)) { 
    	$echo.=" 
  <tr> 
    	<td>".get_sql("countries",$row_result["country_id"])."</td> 
    	<td>".get_sql("types",$row_result["type_info"])."</td> 
    	<td>".$row_result["year"]."</td> 
    	<td>".$row_result["data_info"]."</td> 
  </tr> 
"; 
} 


    	$echo.="</table>"; 
    	echo $echo; 
exit(); 
} 

?> 
<form method="post"> 
please select<br /> 
<select name="country[]" size="5" multiple="multiple"> 
<?=$countries?> 
</select> 
<br /><br /> 
please select<br /> 
<select name="types[]" size="5" multiple="multiple"> 
<?=$types?> 
</select> 
<br /><br /> 
please select<br /> 
<select name="yesrs[]" size="5" multiple="multiple"> 
<?=$yesrs?> 
</select> 
<br /><br /> 

<input type="submit" value="search" /> 

</form>
#19

أخي الكريم حتى هذا الكود

<?=$countries?>

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

لذلك استبدل كل سطر بهذا الشكل إلى الشكل التالي :

<?php echo $countries; ?>

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

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

Everything will be fine when we TALK LESS, DO MORE


#20

أرجو منك البحث عن ملف

php.ini

واستبداله بهذا الملف المرفق

php.rar

CMS Sfhati , Website Generator


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


 


small-logo.png

#21
bastr3 كتب:

أرجو منك البحث عن ملف

php.ini

واستبداله بهذا الملف المرفق

php.rar

للاسف نفس النتيجه

استبدلت الملف الموجود في المسار التالي:

C:\wamp\bin\php\php5.3.0

#22
MoHaMMaD Pro كتب:

أخي الكريم حتى هذا الكود

<?=$countries?>

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

لذلك استبدل كل سطر بهذا الشكل إلى الشكل التالي :

<?php echo $countries; ?>

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

اخي الكريم

لقد قمت باستبدال

$countries="";
$types=""
$yesrs=""

بالتالي

echo $countries="";
echo $types="";
echo $yesrs="";

ولكن للاسف لم يحدث اي تغيير !!

#23
muzamil87 كتب:

اخي الكريم

لقد قمت باستبدال

$countries="";
$types=""
$yesrs=""

بالتالي

echo $countries="";
echo $types="";
echo $yesrs="";

ولكن للاسف لم يحدث اي تغيير !!

لا أخي لم أقصد هذه

في نهاية الكود لدينا التالي :

<form method="post"> 
please select<br /> 
<select name="country[]" size="5" multiple="multiple"> 
<?=$countries?> 
</select> 
<br /><br /> 
please select<br /> 
<select name="types[]" size="5" multiple="multiple"> 
<?=$types?> 
</select> 
<br /><br /> 
please select<br /> 
<select name="yesrs[]" size="5" multiple="multiple"> 
<?=$yesrs?> 
</select> 
<br /><br /> 

<input type="submit" value="search" /> 

</form>

استبدله بالتالي :


<form method="post">
please select<br />
<select name="country[]" size="5" multiple="multiple">
<?php echo $countries; ?>
</select>
<br /><br />
please select<br />
<select name="types[]" size="5" multiple="multiple">
<?php echo $types; ?>
</select>
<br /><br />
please select<br />
<select name="yesrs[]" size="5" multiple="multiple">
<?php echo $yesrs; ?>
</select>
<br /><br />

<input type="submit" value="search" />

</form>

جرب ذلك أخي و أخبرني بالنتيجة طبعا بعد إعادة الكود كما كان قبل التعديل الأخير :)

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

Everything will be fine when we TALK LESS, DO MORE


#24
MoHaMMaD Pro كتب:

لا أخي لم أقصد هذه

في نهاية الكود لدينا التالي :

<form method="post"> 
please select<br /> 
<select name="country[]" size="5" multiple="multiple"> 
<?=$countries?> 
</select> 
<br /><br /> 
please select<br /> 
<select name="types[]" size="5" multiple="multiple"> 
<?=$types?> 
</select> 
<br /><br /> 
please select<br /> 
<select name="yesrs[]" size="5" multiple="multiple"> 
<?=$yesrs?> 
</select> 
<br /><br /> 

<input type="submit" value="search" /> 

</form>

استبدله بالتالي :


<form method="post">
please select<br />
<select name="country[]" size="5" multiple="multiple">
<?php echo $countries; ?>
</select>
<br /><br />
please select<br />
<select name="types[]" size="5" multiple="multiple">
<?php echo $types; ?>
</select>
<br /><br />
please select<br />
<select name="yesrs[]" size="5" multiple="multiple">
<?php echo $yesrs; ?>
</select>
<br /><br />

<input type="submit" value="search" />

</form>

جرب ذلك أخي و أخبرني بالنتيجة طبعا بعد إعادة الكود كما كان قبل التعديل الأخير :)

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

اخيرا ولله الحمد تم حل المشكله واشتغل السكريبت

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

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

ولكن لازالت الرساله :

Notice:  Undefined index: country in C:\wamp\www\drsd\Untitled-1.php  on line 32

موجوده في اعلى الصفحه في المتصفح ,, هل توجد امكانيه لمنع عرضها عفي المتصفح ؟

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

#25

error_reporting(0);

في بداية الصفحة بعد وسم البي أتش بي

CMS Sfhati , Website Generator


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


 


small-logo.png

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