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

فكرة عمل Chat

بدأه mahmoodsami في 14 مارس 2010 · 8 رد · 753 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخوتي الاعزاء بعد العناء تمكنت من عمل فكرة بسيطة الى chat ,

وعندما عرضت المشاركة في منتدى قسم j2ee وجهني اخي العزيز علاء الصالحي

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

فاتمنا ان تعينوني مثلما اعانني القائمين على قسم j2ee وكانوا خير موجه واستاذ الله يبارك فيهم :wub:

(((

لانهم إن شاء الله سوف ينتهي مشروعي من الناحية العملية بعد اكمال هذه الفكرة . وإن شاء الله ان كملت هذه الفكرة فانها سوف تعم الفائدة الى الجميع (إن شاء الله تعالى ). انتظر مشاركاتكم اخوتي الله يبارك فيكم

)))

حيث تعرض صفحة عند كل مشترك فيها

1- صفحة التي يكتب فيها .

2- صفحة يعرض فيها الذي كتبه والشخص الاخر الذي كتبه ايضا .

ملاجظة

البرنامج يعتمد على قواعد البيانات بصورة كاملة

البرنامج يعمل بصورة صحيحة الحمد لله ((( لكن ))) توجد حالة هو انه الشخص عندما يرسل له من شخص اخر لا يعرف ذلك الا ان يقوم بعملة refresh وهذا يسبب عملة اعادة كتابة بياناته التي ارسلها سابقا

كمثال توضيحي

احمد ارسل ( hi ) الى محمد

عندما محمد يدخل يجد كلمة (hi ) وعندما محمد يرسل (hellow ) الى احمد

فعلى احمد ان يقوم بعمل refresh ليجد ما كتبه محمد

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

احمد

hi

محمد يجد hi

فيرد hellow

احمد لايستطيع ان يجد ما كتبه محمد الاعند عمل refresh فتحصل المشكلة حيث يجد

hi

hi

hellow

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

DROP TABLE IF EXISTS `mahmood`.`ch`; 
CREATE TABLE  `mahmood`.`ch` ( 
  `chat` varchar(100) collate utf8_unicode_ci NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

DROP TABLE IF EXISTS `mahmood`.`ch1`; 
CREATE TABLE  `mahmood`.`ch1` ( 
  `chat1` text collate utf8_unicode_ci NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

وهذه البرمجة بالتسلسل الشخص الاول

<%--  
    Document   : fieldset 
    Created on : Mar 9, 2010, 7:04:16 PM 
    Author     : Mahmood2010 
--%> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title>Chat</title> 
    </head> 
    <body text="#00CC66"> 
<%-- this is text area to veiw text--%> 
<FIELDSET> 
<LEGEND>Reading Text Areas</LEGEND> 
  You typed: 
<p> 
    <TEXTAREA NAME="textarea2" ROWS="10" cols="25"> 
<%@ page import="java.sql.*" %> 
<%-- this is DB of the first user--%> 
<% 
Connection conn = null; 
Statement st = null; 
ResultSet rs = null; 

try { 
    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    conn = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password"); 

    st = conn.createStatement(); 
    rs = st.executeQuery("select * from ch"); 
    while(rs.next()) { 
%> 

<%= rs.getString("chat") %> 

<% 
     } 
%> 

<% 
}  catch (Exception ex) { 
    ex.printStackTrace(); 
    %> 
Ooops, something bad happened: 
<% 
    }  finally { 
    if (rs != null) rs.close(); 
    if (st != null) st.close(); 
    if (conn != null) conn.close(); 
    } 
%> 
<%-- this is DB of the second user--%> 
<% 
Connection conn1 = null; 
Statement st1 = null; 
ResultSet rs1 = null; 

try { 
    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    conn1 = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password"); 

    st1 = conn1.createStatement(); 
    rs1 = st1.executeQuery("select * from ch1"); 
    while(rs1.next()) { 
%> 

<%= rs1.getString("chat1") %> 

<% 
     } 
%> 

<% 
}  catch (Exception ex) { 
    ex.printStackTrace(); 
    %> 
Ooops, something bad happened: 
<% 
    }  finally { 
    if (rs1 != null) rs.close(); 
    if (st1 != null) st.close(); 
    if (conn1 != null) conn.close(); 
    } 
%> 

</TEXTAREA> 
</p> 
</FIELDSET> 

<%-- this is text area to insert text by first user--%> 
  <FIELDSET> 
  <LEGEND>Submitting Text Areas</LEGEND> 
   Please enter your text: 
   <FORM METHOD="get" action="io.jsp"> 
            <BR> 
            <TEXTAREA NAME="textarea1" ROWS="5" cols="25"></TEXTAREA> 
            <BR> 
            <INPUT TYPE="SUBMIT" VALUE="Submit"> 
  </FORM> 
 </FIELDSET> 
 </body> 
 </html>

<%--  
    Document   : io 
    Created on : Mar 9, 2010, 7:29:00 PM 
    Author     : Mahmood2010 
--%> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title>JSP Page</title> 
    </head> 
    <body> 
<%@ page import ="java.sql.*" %> 
<%@ page import ="javax.sql.*" %> 
<% 
String user=request.getParameter("textarea1"); 
session.putValue("textarea1",user); 
Class.forName("com.mysql.jdbc.Driver"); 
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password"); 
Statement st= con.createStatement(); 
ResultSet rs; 
int i=st.executeUpdate("insert into ch values ('"+user+"')"); 


%> 
<jsp:forward page="fieldset.jsp"/> 
</body>

وهذه برمجة الشخص الثاني

<%-- 
    Document   : fieldset 
    Created on : Mar 9, 2010, 7:04:16 PM 
    Author     : Mahmood2010 
--%> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title>Chat</title> 
    </head> 
    <body text="#0000FF"> 
  <%-- this is text area to veiw text--%> 
<FIELDSET> 
<LEGEND>Reading Text Areas</LEGEND> 
  You typed: 
<p> 
    <TEXTAREA NAME="textarea2" ROWS="10" cols="25"> 
<%@ page import="java.sql.*" %> 
<%-- this is DB of the first user--%> 
<% 
Connection conn = null; 
Statement st = null; 
ResultSet rs = null; 

try 
{ 
    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    conn = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password"); 

    st = conn.createStatement(); 
    rs = st.executeQuery("select * from ch"); 
    while(rs.next()) { 
%> 

<%= rs.getString("chat") %> 

<% 
     } 
%> 

<% 
}  catch (Exception ex) { 
    ex.printStackTrace(); 
    %> 
Ooops, something bad happened: 
<% 
    }  finally { 
    if (rs != null) rs.close(); 
    if (st != null) st.close(); 
    if (conn != null) conn.close(); 
    } 
%> 
<%-- this is DB of the second user--%> 
<% 
Connection conn1 = null; 
Statement st1 = null; 
ResultSet rs1 = null; 

try { 
    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    conn1 = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password"); 

    st1 = conn1.createStatement(); 
    rs1 = st1.executeQuery("select * from ch1"); 
    while(rs1.next()) { 
%> 

<%= rs1.getString("chat1") %> 

<% 
     } 
%> 

<% 
}  catch (Exception ex) { 
    ex.printStackTrace(); 
    %> 
Ooops, something bad happened: 
<% 
    }  finally { 
    if (rs1 != null) rs.close(); 
    if (st1 != null) st.close(); 
    if (conn1 != null) conn.close(); 
    } 
%> 

</TEXTAREA> 
</p> 
</FIELDSET> 
  <%-- this is text area to insert text by second user--%> 
  <FIELDSET> 
  <LEGEND>Submitting Text Areas</LEGEND> 
   Please enter your text: 
   <FORM METHOD="get" action="io2.jsp"> 
            <BR> 
            <TEXTAREA NAME="textarea3" ROWS="5" cols="25"></TEXTAREA> 
            <BR> 
            <INPUT TYPE="SUBMIT" VALUE="Submit"> 
  </FORM> 
 </FIELDSET> 
</body>

<%-- 
    Document   : io 
    Created on : Mar 9, 2010, 7:29:00 PM 
    Author     : Mahmood2010 
--%> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
   "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title>JSP Page</title> 
    </head> 
    <body> 
<%@ page import ="java.sql.*" %> 
<%@ page import ="javax.sql.*" %> 
<% 
String user=request.getParameter("textarea3"); 
session.putValue("textarea3",user); 
Class.forName("com.mysql.jdbc.Driver"); 
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password"); 
Statement st= con.createStatement(); 
ResultSet rs; 
int i=st.executeUpdate("insert into ch1 values ('"+user+"')"); 


%> 
<jsp:forward page="fieldset1.jsp"/> 
</body> 
</html>

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

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

سلامي

اخوكم

محمود سامي

#2

صديقي يجب ان تستخدم الاي جاكس

+

استخدم تابع الجافا سكريت

setinterval

حيث يكرر عملية اي تابع كل فترة زمنية

ابحث عنه

دعه يكررعرض البيانات من قاعدة البيانات كل ثانية

موفق

تم تعديل هذه المشاركة بواسطة AsJsGle في 14 مارس 2010 في 00:56

In bad state

#3

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

اخي وصديقي AsJsGle اشكرك على سرعة تفاعلك معي ولكن ارجو من حضرتك ان تبين

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

jsp and mysql

وكذلك كيف يمكن ان استخدم setinterval

الله يبارك فيك دليني على موقع او مشاركه فيها عمل مشابه الى فكرتي

او

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

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

اخي الكريم انتظر ردك على احر من الجمر

سلامي

اخوك

محمود سامي

تم تعديل هذه المشاركة بواسطة mahmoodsami في 14 مارس 2010 في 02:09

#4

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

ولكن جي اس بي لا اعرف

الاي جاكس لاتنظر على مبدأ لغة السيرفر ولا تهتم

وانما هي توابع جافا سكريبت لا غير تقوم بطلب خفي للبيانات الفكرة

انت لحتى يكون موجود شات لا زم يكون في تفاعل مع المستخدموالتفاعل هو عبارة عن مؤقت زمني هو تماما عبارة عن تابع

setinterval

صديقي انا عملت لك مثال بسيط يبين فكرة التابع اعلاه

ولكن انت يجب ان تعمله يتفاعل مع قواعد البيانات

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title>
<script type="text/javascript" language="javascript">
function updatetextarea()
{
var x=document.getElementById('Text1').value;
document.getElementById('TextArea1').value+=x;
}
function ud()
{
setInterval("updatetextarea()",500);
}
</script>
</head>

<body onload="ud();">

<form method="post">
	<textarea id="TextArea1" style="width: 215px; height: 159px"></textarea><br />
	<input id="Text1" type="text" style="width: 160px" /><input name="Button1" type="button" value="send" style="width: 51px" /></form>

</body>

</html>

في المثال اعلاه تقوم بجلب البيانات من قاعدة البيانات عملية الجلب تكون عن طريق الاي جاكس يتم اضافة تابع الاي جاكس ضمن updatetextarea

ولكن ستقوم بالغاء

var x=document.getElementById('Text1').value;
document.getElementById('TextArea1').value+=x

;

واستبداله باي جاكس

صديقي ارفقت لك ملفين اتمنى منك ان تدرسهما بتاني

لن ياخذا وقتا طويل وباستخدام هذين الملفين والتابع setinterval وبعونه تعالى تجني اللذي تريد

ajax-basics-1.pdf

ajax-basics-2.pdf

In bad state

#5

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

اشكرك اخي وصديقي العزيز على تعاونك معي

وإن شاء الله اقراء الملفات المرفوعة

واخي الله يبارك فيك لاتنساني باي شي بهذا الخصوص chat

طبعا انت وبقيت اخوتي اعضاء القسم

سلامي

اخوك

محمود سامي

تم تعديل هذه المشاركة بواسطة mahmoodsami في 15 مارس 2010 في 00:50

#6

اهلا اخي محمود وا نشاء الله كون فدت

In bad state

#7

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

اخي وصديقي العزيز AsJsGle وبقية اعضاء قسم java script

الله يبارك فيكم اريد حلا تعبت والله العظيم من التفكير بحيث الان عقلي متوقف عن العمل

ووالله اول مرة اقول تعبت اخوتي اريد ولو فكره بسيطة لانه فكرة اخي AsJsGle الله يبارك فيه

ما استطيع ان اجعلها مع عملي مترابطة ارجوكم اعينوني :mellow:

اخوتي حتى لو شخص يرسلي كود chat بلغة الجافا بين شخصين لا مشكلة لدي

ارجوكم اخوتي بالله

سلامي

اخوكم

محمود سامي

تم تعديل هذه المشاركة بواسطة mahmoodsami في 17 مارس 2010 في 23:07

#8

اخي وصديقي العزيز AsJsGle وبقية اعضاء قسم java script

الله يبارك فيكم اريد حلا بسيطا الله يبارك فيكم

اخوكم

محمو سامي

#9

صديقي والله الشات كل فكرتو معظمها على السيرفر

والباقي جافا سكريبت

انا ما بعرف جي اس بي

انت خبرني اي صفحة يلي بتعطي البيانات

عن الرسالة اذا حدا رسل رسالة

ايا صفحة بتعرضها وشو هو المتغير

وان شاء الله اعرف ساعدك

http://koders.com/default.aspx?s=chat&la=Java&li=*&scope=&search.x=4&search.y=9

أظن هذا يفيدك

http://koders.com/java/fid9E771BF1491C4F644768F2860346DFD02B586F29.aspx?s=chat

تم تعديل هذه المشاركة بواسطة AsJsGle في 21 مارس 2010 في 01:26

In bad state

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