انا كتبت الاستعلام كـسكيول خارج ال php لجل تعدله بما تريد
ياليت ترسلي جزء بسيط من القاعدة (البنية + جزء من السجلات)
انا كتبت الاستعلام كـسكيول خارج ال php لجل تعدله بما تريد
ياليت ترسلي جزء بسيط من القاعدة (البنية + جزء من السجلات)
__________________
مجتمع حرس الأمني في خدمة الجميع
تفضل اخي ابو نجم قاعدة البيانات
كود PHP:
-- بنية الجدول `t1`
--
CREATE TABLE `t1` (
`id` int(4) NOT NULL auto_increment,
`nu` varchar(11) NOT NULL,
`ryo` varchar(50) NOT NULL,
`unix` varchar(50) NOT NULL,
`dar` varchar(100) NOT NULL,
`search` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 DELAY_KEY_WRITE=1 AUTO_INCREMENT=75 ;
--
-- إرجاع أو إستيراد بيانات الجدول `t1`
--
INSERT INTO `t1` (`id`, `nu`, `ryo`, `unix`, `dar`, `search`) VALUES
(6, '145787', '455', '1237410000', 'dsq', 'all'),
(71, '144577', '45665', '1237842000', 'msh', 'all'),
(72, '777544', '4654', '1237842000', 'msh', 'all'),
(73, '4565557', '3334', '1237928400', 'msh', 'all'),
(74, '7788', '4564', '1238446800', 'msh', 'all');
-- --------------------------------------------------------
--
-- بنية الجدول `t2`
--
CREATE TABLE `t2` (
`id` int(4) NOT NULL auto_increment,
`nu` varchar(11) NOT NULL,
`ryo` varchar(50) NOT NULL,
`unix` varchar(50) NOT NULL,
`dar` varchar(100) NOT NULL,
`sa` varchar(100) NOT NULL,
`ssq` varchar(100) NOT NULL,
`swe` varchar(100) NOT NULL,
`search` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 DELAY_KEY_WRITE=1 AUTO_INCREMENT=75 ;
--
-- إرجاع أو إستيراد بيانات الجدول `t2`
--
INSERT INTO `t2` (`id`, `nu`, `ryo`, `unix`, `dar`, `sa`, `ssq`, `swe`, `search`) VALUES
(6, '145787', '4567', '1237410000', 'dsq', 'ds1', 'as', 'open', 'all'),
(71, '144577', '76786', '1237842000', 'ddg', 'ds1', 'as', 'open', 'all'),
(72, '777544', '987', '1237842000', 'a', 'ds1', 'as', 'open', 'all'),
(73, '4565557', '334', '1237928400', 'sff', 'ds1', 'as', 'open', 'all'),
(74, '7788', '1448', '1238446800', 'msh', 'ds1', 'as', 'open', 'all');
شكراً,
عندك id في كلا الجدولين مناسب للربط مافي داعي ل search
الاستعلام صار :
بالأحمر استبدلت or ب and, في الحالة الأولى رح تظهر نتائج الجدول الأول + نتائج الجدول الثاني السب مثل تساوي القيم في الجدولين عندككود:select * from t1,t2 where t1.id=t2.id and t1.$x like '%some words%' and t2.$x like '%some words%'
لكن لو كان هذا المطلوب فرجعها الى or
انا لاحظت ام $x عندك دال ع اسم العمود في جدولك , صح ؟
__________________
مجتمع حرس الأمني في خدمة الجميع
اخي أبونجم
نفس الخطاء
وبالنسبه للربط id ليس شرطا ان يكون موحد في كلا الجدولين مع انه مبين في القاعدة التي و ضعتها و لكن حقل search موحد في كلا الجدولين لذلك استخدمت الاستعلام هكذاكود PHP:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
ونفس المشكلةكود PHP:
if(!$this_word){ echo '<div align="center">'; echo " لا توجد نتائج "; echo '</div>'; }
else {
if($items==1){ $x = "nu";}
if($items==2){ $x = "ryo";}
if($items==3){ $x = "dar";}
$sql = "SELECT * FROM t1,t2 WHERE t1.search=t2.search AND t1.$x LIKE '%$this_word%' AND t2.$x LIKE '%$this_word%' ";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num<=0){ echo ' لا توجد نتائج '; }
else {
التعديل الأخير تم بواسطة love php ; 02-04-2009 الساعة 02:57 PM
المقصود من تساوي القيم ان القيمة في السجل اللي ترتيبه x في الجدول 1 = السجل اللي ترتيبه y في الجدول 2
حيث x=y
مو القيمة تكون نفسها في كل السجلات
بالمناسبة ما جاوبتني ع سؤالي
فهمت عليك اخي ابو نجم
لقد وضعت الحقل search بنفس ترتيبه في الجدول الاخر و لكن نفس الخطاء
بهذا الشكل
كود PHP:
-- بنية الجدول `t1`
--
CREATE TABLE `t1` (
`id` int(4) NOT NULL auto_increment,
`search` varchar(20) NOT NULL,
`nu` varchar(11) NOT NULL,
`ryo` varchar(50) NOT NULL,
`unix` varchar(50) NOT NULL,
`dar` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 DELAY_KEY_WRITE=1 AUTO_INCREMENT=75 ;
-- --------------------------------------------------------
--
-- بنية الجدول `t2`
--
CREATE TABLE `t2` (
`id` int(4) NOT NULL auto_increment,
`search` varchar(20) NOT NULL,
`nu` varchar(11) NOT NULL,
`ryo` varchar(50) NOT NULL,
`unix` varchar(50) NOT NULL,
`dar` varchar(100) NOT NULL,
`sa` varchar(100) NOT NULL,
`ssq` varchar(100) NOT NULL,
`swe` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 DELAY_KEY_WRITE=1 AUTO_INCREMENT=75 ;
وليش مايكون عندك عمود دوره index اي ترقيم تلقائي في جداولك يفيدك في الربط
البنية :
ع اي حال الاستعلام كصيغة هو صحيح وجربته ع قاعدتك من المي اسكيول مباشرة واسترجعت البيانات بشكل صحيحكود:create ....... (index int auto_increment ... )
المشكلة انحصرت في php
لذلك انا بحاجة للاجابة ع سؤالي السابق (للمرة الثالثة)
__________________
مجتمع حرس الأمني في خدمة الجميع
اخي ابو نجم اولا الف شكرا على تجاوبك معي و الف شكر لباقي الاعضاء كذلك
ثانيا بالسبه لسؤالك اذا كنت تقصد السؤال عن ..
بالأحمر استبدلت or ب and, في الحالة الأولى رح تظهر نتائج الجدول الأول + نتائج الجدول الثاني السب مثل تساوي القيم في الجدولين عندك
لكن لو كان هذا المطلوب فرجعها الى or
انا لاحظت ام $x عندك دال ع اسم العمود في جدولك , صح ؟
نعم صحيح $x دال ع اسم العمود في الجدول
بحيث انه ياخذ على حسب العمود كما هو موضح بالكود
كود PHP:
if($items==1){ $x = "nu";}
if($items==2){ $x = "ryo";}
if($items==3){ $x = "dar";}
اخواني هل من حل
جرب كده الصفحة دية كده ده الي عارف اخي واسف علي التاخير بس معرفتي بال mysqlقليله
كود PHP:
mysql_connect("localhost","root","123456");
mysql_select_db("test2");
switch($_GET['act'])
{
default:
echo'<form action="serch.php?act=src" method="POST">
<input type="text" name="word"><br>
<select name="fr">
<option value="id">id</option>
<option value="nu">nu</option>
<option value="ryo">ryo</option>
</select>
<input type="submit" value="srcword"><br>
</form>
';
break;
case 'src':
$word=trim($_POST['word']);
$fr=$_POST['fr'];
if($fr)
{
$x="t1.".$fr;
$x2="t2.".$fr;
}
$query=mysql_query("select*from t2,t1 where $x2 LIKE'%$word%' or $x LIKE'%$word%'");
while($row=mysql_fetch_array($query))
{
echo"<pre>";
print_r($row);
echo"</pre>";
}
break;
}
__________________
ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
لطلب البرمجة فقط
helal-egypt@hotmail.com
اخوي جرب هالطريقة وباذن الله بتنجح معاك ولا تنسى السمي كولن بنهاية الكود
وللتوضيح يتم استخدام JOIN للربط بين جدولين في الاستعلام
SELECT
*
FROM
t1
JOIN
t2
ON
t2.$this_word=t1.$this_word
__________________
سوق الكويت
استخدم الـــinner join ....
انتبه فقط عند
cell1 ,cell2,cell3الحقول في الجدول الأول ...وممكن أن تعممها (اجعلها كل الحقول )كود PHP:
select cell1 ,cell2,cell3 from TABLE1 INNER JOIN TABLE2 on CONDITION
TABLE1اسم الجدول الأول
TABLE2اسم الجدول الثاني
CONDITIONالشرط المطلوب بين الجدولين
جرب هذه الطريقة ...
التعديل الأخير تم بواسطة MaJoOoDy ; 06-04-2009 الساعة 02:11 PM
اخي Q8 Developer نفس الخطاء ظهر لي
واخي MaJoOoDy ارجوا انك تتطبق على الكود لانه يوجد متغير على حسب الحقل