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

لو ممكن تعديل على محرك البحث

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

السلام عليكم

اخواني لو ممكن تعديل على محرك البحث لايظهر النتائج ابدا

index

<html>

<head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

        <script type="text/javascript">
         function getStates(value){
           $.post("getStates.php",{partialState:value},function(data)
           $("#results").html(data);
           });
         }
         </script>
</head>
<body>
<input type="text" onkeyup="getStates(this.value)" />
<br>
 <div id="results"></div>
</body>

</html>

getStates.php

<?php
mysql_connect("localhost", "root", "")or die("mysql_error());
mysql_select_db("test")or die("mysql_error());

$partialStates= $_POST['partialState'];


$states =mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%'");
while($state= mysql_fetch_array($states)){
echo "<div>".$state['name']."<div>";

}
?>

قاعدة البيانات

-- phpMyAdmin SQL Dump
-- version 2.11.5
-- http://www.phpmyadmin.net
--
-- المزود: localhost
-- أنشئ في: 27 يوليو 2011 الساعة 02:04
-- إصدارة المزود: 5.0.51
--  PHP إصدارة: 5.2.17

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- قاعدة البيانات: `test`
--

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

--
-- بنية الجدول `states`
--

CREATE TABLE IF NOT EXISTS `states` (
  `id` int(11) NOT NULL auto_increment,
  `name` char(40) NOT NULL,
  `abbrev` char(2) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1256 AUTO_INCREMENT=66 ;

--
-- إرجاع أو إستيراد بيانات الجدول `states`
--

INSERT INTO `states` (`id`, `name`, `abbrev`) VALUES
(1, 'Alaska', 'AK'),
(2, 'Alabama', 'AL'),
(3, 'American Samoa', 'AS'),
(4, 'Arizona', 'AZ'),
(5, 'Arkansas', 'AR'),
(6, 'California', 'CA'),
(7, 'Colorado', 'CO'),
(8, 'Connecticut', 'CT'),
(9, 'Delaware', 'DE'),
(10, 'District of Columbia', 'DC'),
(11, 'Federated States of Micronesia', 'FM'),
(12, 'Florida', 'FL'),
(13, 'Georgia', 'GA'),
(14, 'Guam', 'GU'),
(15, 'Hawaii', 'HI'),
(16, 'Idaho', 'ID'),
(17, 'Illinois', 'IL'),
(18, 'Indiana', 'IN'),
(19, 'Iowa', 'IA'),
(20, 'Kansas', 'KS'),
(21, 'Kentucky', 'KY'),
(22, 'Louisiana', 'LA'),
(23, 'Maine', 'ME'),
(24, 'Marshall Islands', 'MH'),
(25, 'Maryland', 'MD'),
(26, 'Massachusetts', 'MA'),
(27, 'Michigan', 'MI'),
(28, 'Minnesota', 'MN'),
(29, 'Mississippi', 'MS'),
(30, 'Missouri', 'MO'),
(31, 'Montana', 'MT'),
(32, 'Nebraska', 'NE'),
(33, 'Nevada', 'NV'),
(34, 'New Hampshire', 'NH'),
(35, 'New Jersey', 'NJ'),
(36, 'New Mexico', 'NM'),
(37, 'New York', 'NY'),
(38, 'North Carolina', 'NC'),
(39, 'North Dakota', 'ND'),
(40, 'Northern Mariana Islands', 'MP'),
(41, 'Ohio', 'OH'),
(42, 'Oklahoma', 'OK'),
(43, 'Oregon', 'OR'),
(44, 'Palau', 'PW'),
(45, 'Pennsylvania', 'PA'),
(46, 'Puerto Rico', 'PR'),
(47, 'Rhode Island', 'RI'),
(48, 'South Carolina', 'SC'),
(49, 'South Dakota', 'SD'),
(50, 'Tennessee', 'TN'),
(51, 'Texas', 'TX'),
(52, 'Utah', 'UT'),
(53, 'Vermont', 'VT'),
(54, 'Virgin Islands', 'VI'),
(55, 'Virginia', 'VA'),
(56, 'Washington', 'WA'),
(57, 'West Virginia', 'WV'),
(58, 'Wisconsin', 'WI'),
(59, 'Wyoming', 'WY'),
(60, 'Armed Forces Africa', 'AE'),
(61, 'Armed Forces Americas (except Canada)', 'AA'),
(62, 'Armed Forces Canada', 'AE'),
(63, 'Armed Forces Europe', 'AE'),
(64, 'Armed Forces Middle East', 'AE'),
(65, 'Armed Forces Pacific', 'AP');
#2

يلزمك معقوفة أمام function(data)

       	$.post("getStates.php",{partialState:value},function(data) {
   			$("#results").html(data);
       	});

استعمل Firebug لكي تظهر لك الأخطاء Javascript عند تشغيل الصفحة

أيضا يجب أن تزيل ال double quotes من أمام mysql_error

mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("test")or die(mysql_error());
1
#3

اخي الكود 100%

ولكن لايبحث بالعربية يبحث بالانجليزي فقط

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

احمد

محمد

عند البحث عن احمد لايظهر شي ولكن عند البحث عن كلمة انجليزية البحث 100%

تم تعديل هذه المشاركة بواسطة man in dark في 27 يوليو 2011 في 13:07

#4

أولا غير الترميز في أعمدة الجدول إلى utf8_general_ci

ثم غير الترميز الخاص بالإتصال مع MySQL إلى utf8 باستعمال السطر التالي

mysql_set_charset('utf8');

الكود سيصبح كالتالي

<?php
mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("test")or die(mysql_error());
mysql_set_charset('utf8');

$partialStates= $_POST['partialState'];


$states =mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%'");
while($state= mysql_fetch_array($states)){
echo "<div>".$state['name']."<div>";

}
?>
1
#5

غيرت الترميز في أعمدة الجدول إلى utf8_general_ci

-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- http://www.phpmyadmin.net
-- 
-- المزود: localhost
-- أنشئ في: 27 يوليو 2011 الساعة 13:39
-- إصدارة المزود: 5.0.22
--  PHP إصدارة: 4.4.4
-- 
-- قاعدة البيانات: `test`
-- 

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

-- 
-- بنية الجدول `states`
-- 

CREATE TABLE `states` (
  `id` int(11) NOT NULL auto_increment,
  `name` char(40) character set utf8 NOT NULL,
  `abbrev` char(2) character set utf8 NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 AUTO_INCREMENT=66 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `states`
-- 

INSERT INTO `states` (`id`, `name`, `abbrev`) VALUES 
(1, 'محمد', 'AK'),
(2, 'احمد', 'AL'),
(3, 'American Samoa', 'AS'),
(4, 'Arizona', 'AZ'),
(5, 'Arkansas', 'AR'),
(6, 'California', 'CA'),
(7, 'خالد', 'CO'),
(8, 'Connecticut', 'CT'),
(9, 'Delaware', 'DE'),
(10, 'سامي', 'DC'),
(11, 'Federated States of Micronesia', 'FM'),
(12, 'Florida', 'FL'),
(13, 'Georgia', 'GA'),
(14, 'Guam', 'GU'),
(15, 'Hawaii', 'HI'),
(16, 'Idaho', 'ID'),
(17, 'Illinois', 'IL'),
(18, 'Indiana', 'IN'),
(19, 'Iowa', 'IA'),
(20, 'Kansas', 'KS'),
(21, 'Kentucky', 'KY'),
(22, 'Louisiana', 'LA'),
(23, 'Maine', 'ME'),
(24, 'Marshall Islands', 'MH'),
(25, 'Maryland', 'MD'),
(26, 'Massachusetts', 'MA'),
(27, 'Michigan', 'MI'),
(28, 'Minnesota', 'MN'),
(29, 'Mississippi', 'MS'),
(30, 'Missouri', 'MO'),
(31, 'Montana', 'MT'),
(32, 'Nebraska', 'NE'),
(33, 'Nevada', 'NV'),
(34, 'New Hampshire', 'NH'),
(35, 'New Jersey', 'NJ'),
(36, 'New Mexico', 'NM'),
(37, 'New York', 'NY'),
(38, 'North Carolina', 'NC'),
(39, 'North Dakota', 'ND'),
(40, 'Northern Mariana Islands', 'MP'),
(41, 'Ohio', 'OH'),
(42, 'Oklahoma', 'OK'),
(43, 'Oregon', 'OR'),
(44, 'Palau', 'PW'),
(45, 'Pennsylvania', 'PA'),
(46, 'Puerto Rico', 'PR'),
(47, 'Rhode Island', 'RI'),
(48, 'South Carolina', 'SC'),
(49, 'South Dakota', 'SD'),
(50, 'Tennessee', 'TN'),
(51, 'Texas', 'TX'),
(52, 'Utah', 'UT'),
(53, 'Vermont', 'VT'),
(54, 'Virgin Islands', 'VI'),
(55, 'Virginia', 'VA'),
(56, 'Washington', 'WA'),
(57, 'West Virginia', 'WV'),
(58, 'Wisconsin', 'WI'),
(59, 'Wyoming', 'WY'),
(60, 'Armed Forces Africa', 'AE'),
(61, 'Armed Forces Americas (except Canada)', 'AA'),
(62, 'Armed Forces Canada', 'AE'),
(63, 'Armed Forces Europe', 'AE'),
(64, 'Armed Forces Middle East', 'AE'),
(65, 'Armed Forces Pacific', 'AP');

وغيرت الكود للاتصال .. يظهر لي الخطاء

Fatal error: Call to undefined function: mysql_set_charset() in c:\camel\www\statas\getstates.php on line 4

اي ان الخطاء في السطر

mysql_set_charset('utf8');

تم تعديل هذه المشاركة بواسطة man in dark في 27 يوليو 2011 في 13:55

#6

ما هي نسخة ال php التي تعمل عليها؟ يبدو أنها قديمة جدا

غير السطر الذي فيه mysql_set_charset بالسطر التالي

mysql_query("SET NAMES 'utf8'");
1
#7

الكود في البحث 100% للعربي

ولكن المشكله الان عندما اكتب اول حرف (م) يظهر لي جميع الاسماء التي تبداء بحرف (م)

ولكن في العرض يظهر رموز .... صورة للتوضيح

post-131439-014993200 1311765567_thumb.j

المرفقات
1.JPG
#8

في الملف index.html، أضف السطر التالي في ال head

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >

وفي الملف getStates.php أضف هذا السطر في البداية

header('Content-Type: text/html; charset=utf-8');
1
#9

نفس المشكله

index.html

<html>

<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >

		<script type="text/javascript" src="jquery.min.js"></script>

        <script type="text/javascript">
         function getStates(value){
        $.post("getStates.php",{partialState:value},function(data) {
                        $("#results").html(data);
        });
         }
		 </script>
</head>
<body>
<input type="text" onkeyup="getStates(this.value)" />
<br>
 <div id="results"></div>
</body>

</html>

صفحه getStates.php

header('Content-Type: text/html; charset=utf-8');

<?php
mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("test")or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

$partialStates= $_POST['partialState'];


$states =mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%'");
while($state= mysql_fetch_array($states)){
echo "<div>".$state['name']."<div>";

}
?>

ولقد جربت صفحة getStates.php بالطريقه هذه ونفس المشكله

<html>

<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
</head>
</html>
<?php
mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("test")or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

$partialStates= $_POST['partialState'];


$states =mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%'");
while($state= mysql_fetch_array($states)){
echo "<div>".$state['name']."<div>";

}
?>

تم تعديل هذه المشاركة بواسطة man in dark في 27 يوليو 2011 في 14:39

#10
<?php
header('Content-Type: text/html; charset=utf-8');
mysql_connect("localhost", "root", "")or die(mysql_error());
mysql_select_db("test")or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

$partialStates= $_POST['partialState'];


$states =mysql_query("SELECT name FROM states WHERE name LIKE '%$partialStates%'");
while($state= mysql_fetch_array($states)){
echo "<div>".$state['name']."<div>";

}
?>
1
#11

تحياتي اخي herch

الله يعطيك العافيه....

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