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

مقترحاتكم وتعديلاتكم على Clint & Server

بدأه ابن مسقط في 26 يونيو 2008 · 19 رد · 1,816 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أطمح من خلال هذه المشاركة التزود بملاحظاتكم الكريمة وكذلك تعديلكم على الملف المرفق

والله الموفق

Client_Serve.rar

تم تعديل هذه المشاركة بواسطة ابن مسقط في 26 يونيو 2008 في 01:43

ibnmusqat.gif
#2

أخي احكي لنا قليلاً عن مشروعك

سأحاول الإطلاع عليه

لكن ذكرني كيف كنا نضيف قاعدة البينات على odbc

لأني بصراحة لا استخدم JDBC على الأغلب

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3
alaadiaa كتب:
أخي احكي لنا قليلاً عن مشروعك

سأحاول الإطلاع عليه

لكن ذكرني كيف كنا نضيف قاعدة البينات على odbc

لأني بصراحة لا استخدم JDBC على الأغلب

تحياتي

أشكرك أستاذي الكريم alaadiaa على سرعة ردك وإهتمامك بالموضوع.

طريقة إضافة قاعدة البيانات على odbc تتم كالتالي :-

1- الذهاب إلى Control Panel

2- إختيار Administrative Tools

3- (Data Sources (ODBC

4- إختيار محرك ( Microsoft Access Driver (*.mdb

وللمزيد شرح بقية الخطوات بالتفاصيل أدرجتها بالملف المرفق.

أما بخصوص فكرة البرنامج فهو عبارة عن برنامج يتم التعامل معه ما بين الـClient و Server

وتتلخص فكرته بالأتي :-

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

أولا :نموذج Client العميل :

أ. يحتوي على رقم البند ، اسم هذا البند ، الكمية

ب يتم عمل على السعر الاجمالي ، وتخفيض السعر النهائي .

ثانيا: Server الخادم :

أ. حساب السعر الاجمالي

ب حساب السعر النهائي بعد التخفيض

مهمة السيرفير مفصلة في الأتي

a. Calculate the total price
b. Calculate the final price after discount
Total price < 100 OR		then  No discount
					  101 -- 500   then   20%
			  501 – 1000  then  25%
				  > 1001			 then  30%
Server returns Total Price, Discount and Final Price to the Client 
c. Saves the client data in the database. The database should contain final price, host name, and IP address for the client.

ثالثاً : Bill الفاتورة يجب أن تظهر الأتي :

رقم البند

اسم البند

الكمية

السعر الإجمالي

السعر بعد التخفيظ

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

أرجو أن يكون شرحي واضحا وأتمنى التكرم بالتعديل عليه بما تراه مناسباً.

__________ODBC.rar

تم تعديل هذه المشاركة بواسطة ابن مسقط في 26 يونيو 2008 في 14:54

ibnmusqat.gif
#4
اقتباس
لقد حاولت جاهدا أن يعمل حسب الفكرة المطروحه ولكن يبدو أني لم أستطع

هل لاحظت وجود أية مشاكل؟

تحياتي

تم تعديل هذه المشاركة بواسطة alaadiaa في 26 يونيو 2008 في 15:13

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5
alaadiaa كتب:
هل لاحظت وجود أية مشاكل؟

تحياتي

ليست مشاكل ولكني أردت عمل الأتي ولم أستطع :

1- إدراج Combo أو قائمة سرد لإستدعاء رقم البند وأسم البند والسعر من خلال قاعدة بيانات

2- أن يقتصر الإدخال فقط على الكمية

3- إضافة زر إغلاق على نموذج Bill

أدرجت بالمرفقات قاعدة أكسس وبها جدول item

item.rar

ibnmusqat.gif
#6

لي عوده على الموضوع بعد يومين او ثلاث

#7
Xline كتب:
لي عوده على الموضوع بعد يومين او ثلاث

لك كل التحيه

بإذن الله سوف أنتظر رجوعك وكذلك من يهمه الإفادة في هذا الموضوع.

ibnmusqat.gif
#8

الحقيقة اكره odbc

لو تعملها mysql :)

سوف اطلع على البرنامج خلال الايام القليلة القادمة

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#9

أخي هل قاعدة البيانات item بديلة للقاعدة bill

قم بكتابة جمل الsql الخاصة بعملية الاستعلام عن المطلوبين

وبإذن الله سأقوم بمساعدتك على عمل المطلوب

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#10

أخي هل قاعدة البيانات item بديلة للقاعدة bill

قم بكتابة جمل الsql الخاصة بعملية الاستعلام عن المطلوبين

وبإذن الله سأقوم بمساعدتك على عمل المطلوب

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#11

الأخ/ رامي

للأسف ليست لي الدرايه في التعامل مع mysq

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

الأخ/ alaadiaa

نعم تستطيع أن تعتبر قاعدة item هي التي تعتمد عليها وقد قمت بالتعديل عليها للمره الثالثه وستجد ملفها بالمرفقات.

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

والإستعلام قد يكون كالأتي :-

SELECT FinalPrice.i_id_item, item.I_name, item.I_price, FinalPrice.Quantity, [I_price]*[Quantity] AS Price
FROM item INNER JOIN FinalPrice ON item.I_id = FinalPrice.i_id_item;

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

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

والله الموفق

item2.rar

post-1010-1214660927_thumb.jpg

تم تعديل هذه المشاركة بواسطة ابن مسقط في 28 يونيو 2008 في 16:53

ibnmusqat.gif
#12

أنتم أعرف مني

أهل قواعد البيانات

بس ألا ترى معي أخي أن الاستعلام على الاسم

ولا فائدة من وجود المعرف

إن لم ترد فهذا حقك

أحتاج إلى جملة إستعلام أخرى

ترجع أسماء المنتجات جميعاً(المعرفات إن لم يعجبك تعديلي)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13
alaadiaa كتب:
أنتم أعرف مني

أهل قواعد البيانات

بس ألا ترى معي أخي أن الاستعلام على الاسم

ولا فائدة من وجود المعرف

إن لم ترد فهذا حقك

أحتاج إلى جملة إستعلام أخرى

ترجع أسماء المنتجات جميعاً(المعرفات إن لم يعجبك تعديلي)

تحياتي

أستاذي الكريم

نحن أهل قواعد البيانات "كما أسميتنا" :rolleyes: نفضل كثيرا التعامل مع المعرف لأنه بإختصار يعني التعامل مع رقم وفي هذا ميزة لأنه لا يشغل حيز أو حجم مثل النصوص داخل الجداول وأسرع في الفهرسة والإستعلام والتمييز.

كما طلبت الجملة التالية ترجع جميع المنتجات مع معرفها :

SELECT item.I_id, item.I_name FROM item;

وهذه الجمله ترجع جميع المنتجات بدون معرفها :

SELECT item.I_name FROM item;

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

ibnmusqat.gif
#14

هذا كود سريع للاتصال ب mySQL

لانني لااملك اكسس على جهازي

قمت ببعض التعديلات مثلا مساحة الابلت وبعض الامور الطفيفه

package javaapplication1;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;


public class NetClient extends JApplet implements ActionListener
{

	Panel oscards,client,bill;
	CardLayout cardlo;
	JTextField numbField;
	JLabel display, b1,b2,b3,b4,b5;
	Socket socket;
	GridLayout glo;
	JTextField nam1,id1,a1,a2,a3,a4,a5,a6;
	int numb = 0;
	String numbStr = null,n1,n2,n3,n4;

	public void init()
	{

		try
		{
			socket = new Socket("localhost",8765);
		} catch (UnknownHostException e) {
			System.out.println("Unknown host");
		} catch (IOException e)
		{
			System.out.println("IO Exception");
			return;
		}

		cardlo=new CardLayout();
		glo=new GridLayout(5,2,30,40);
		oscards=new Panel();
		oscards.setLayout(cardlo);
		client = new Panel();
		client.setLayout(glo);



			JLabel nam = new JLabel("Enter the Name of product:", JLabel.RIGHT);
			JLabel id= new JLabel("Enter ID:", JLabel.RIGHT);
			JLabel id2= new JLabel("Enter quantity:", JLabel.RIGHT);
			JLabel id3= new JLabel("Enter the price:", JLabel.RIGHT);
			JLabel id4= new JLabel("  ", JLabel.RIGHT);
			numbField = new JTextField(6);
			JButton button = new JButton("Send");
			button.addActionListener(this);

			   	nam1=new JTextField(22);
			   //	n1=nam1.getText();
			   	id1=new JTextField(12);
			   	a1=new JTextField(12);

				   	client.add(nam);
				   	client.add(nam1);
				   	client.add(id);
				   	client.add(id1);
				   	client.add(id2);
					client.add(a1);
				   	client.add(id3);
				   	client.add(numbField);
					client.add(button);

						display = new JLabel("No number");
						client.add(display);

	oscards.add(client,"Client");
	add(oscards);
	setSize(400, 400);

	}

	public void actionPerformed(ActionEvent e)
	{

	BufferedReader fromServer = null;
	PrintWriter toServer = null;

		String actionCommand = e.getActionCommand();
		if (e.getSource() instanceof JButton)
			if (actionCommand.equals("Send"))
			{
	   		try
				{
						 n1=nam1.getText();
					numb = Integer.parseInt(numbField.getText())*Integer.parseInt(a1.getText());
				}
				catch (NumberFormatException ex)
				{
					System.out.println("Number Format Exception");
				}

			try
			{
				fromServer = new BufferedReader(
				new InputStreamReader(socket.getInputStream()));
				toServer =
				new PrintWriter(socket.getOutputStream(), true);
		}
		catch (IOException ex)
		{
					System.out.println("IO Exception");
			}
				toServer.println(n1);
			toServer.println(numb);

			try
		{
					numbStr = fromServer.readLine();
			}
		catch (IOException ex)
		{
					System.out.println("Applet receive failed:");
			}

			display.setText(numbStr);
			bill = new Panel();
			bill.setLayout(new GridLayout(5,1,40,40));
			bill.setLocation(600,600);
			bill.setBackground(Color.pink);
				b1=new JLabel("The name of the product is   "+nam1.getText(),JLabel.LEFT);
				System.out.println(n1);
				b2=new JLabel("The ID of the product is   "+id1.getText(),JLabel.LEFT);
				b3=new JLabel("Total Price is   "+numb,JLabel.LEFT);
				b4=new JLabel("Final Price is  "+numbStr,JLabel.LEFT);
				b5=new JLabel("Signature _________________________________", JLabel.RIGHT);

				bill.add(b1);
				bill.add(b2);
				bill.add(b3);
				bill.add(b4);
				bill.add(b5);
				oscards.add(bill,"Bill");
				cardlo.show(oscards,"Bill");

				repaint();

		 }
	}
}

package javaapplication1;
import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;


public class NetServer {

	public static void main(String[] args) throws Exception {
		  Class.forName("com.mysql.jdbc.Driver");
	  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
		Statement s = con.createStatement();  

	try
	{
		ServerSocket serverSocket = new ServerSocket(8765);
		Socket clientSocket = serverSocket.accept();

				 System.out.println("The server is waiting for clients");
		BufferedReader fromClient = new BufferedReader(
					new InputStreamReader(clientSocket.getInputStream()));
			PrintWriter toClient =
			new PrintWriter(clientSocket.getOutputStream(), true);

		while (true)
		{
					String name=fromClient.readLine();
			int  k =  Integer.parseInt(fromClient.readLine());
						int num=k;
			System.out.println("received: " + k);

			if(k>1001)
			{
			k=k-((k*30)/100);
			toClient.println(k);
			}
			else if(k>501)
			{
			k=k-((k*25)/100);
			toClient.println(k);
			}
			else if(k>101)
			{
				k=k-((k*20)/100);
			}
			else
			toClient.println(k);

			try {


	  String host="345", ipadd="12";
   int fprice=0;

	fprice=k;
		String sql="INSERT INTO product(productName,id,quantity,price)"+" Values"+"('" + name + "', '"+ ipadd + "', '" + num + "', '" + fprice + "')";
	s.executeUpdate(sql); 
	  s.execute("select * from product"); // select the data from the table
		ResultSet rs = s.getResultSet(); // get any ResultSet that came from our query

	  while ( rs.next() ) // this will step through our data row-by-row
		  {
		 System.out.println("Data from host: " + rs.getString(3) );
	  }

			s.close(); // close the Statement to let the database know we're done with it
		con.close(); // close the Connection to let the database know we're done with it
				}

	catch (Exception err) {
	 System.out.println("ERROR: " + err);
	 }


		}
	}

	catch(IOException ex)
	{
		System.err.println(ex);



	}



	}
}
#15

لا لا ما قصدت هذا أخي ابن مسقط

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

لهذا لا نظهر المعرف ونظهر اسم المنتج

هل قام الأخ Xline بالمطلوب؟

أي مساعدة نحن جاهزون

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#16

أستاذي الكريم/ Xlin

أشكرك على التعديل الذي قمت به ولكني لم أستطيع تشغيل الملفين بسبب عدم وجود MySql لدي ولعدم الإلمام به ، فهل من سبيل إلى تحقيق ذلك .

الأستاذ/ alaadiaa

بكل تأكيد إظهار اسم المنتج للمستخدم العادي هو الأفضل.

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

ibnmusqat.gif
#17

اولا انا لست استاذاً

بالنسبه ل mySQL بسيطه

حمل قاعدة البيانات من هنا

http://dev.mysql.com/downloads/mysql/5.0.html#win32

Essentials هي المستخدمه

بعد ماتحملها امش مع الويزرد وانت اعرف مني في قواعد البيانات

بعد ماتنتهي كل شي روح : start-all prog.-mySQl-mySql client

ادخل باسوورد الروت وانشئ جداول وغيرها

اي سؤال لاتتردد اخي الكريم

#18

أخي الأستاذ/ عيسى

من أتعلم منه بلاشك فهو أستاذي :rolleyes:

لقد أنزلت نسخة MySql ولكنها أبت ورفضت التثبيت وأعتقد بسبب نسخة الويندوز الغير مرخصه :unsure:

ibnmusqat.gif
#19

قمت بجعل البرنامج متعدد العملاء multiClients

عن طريق استخدام الخيوط Threads

package ClientServer;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;


public class NetServer {
	static Connection con;
	static Statement s;
	static ServerSocket serverSocket;
	public static void main(String[] args) {
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

			String dataSourceName = "netdb";
			String dbURL = "jdbc:odbc:" + dataSourceName;
			con = DriverManager.getConnection(dbURL, "","");
			s = con.createStatement(); 
			serverSocket = new ServerSocket(8765);
			System.out.println("The server is waiting for clients");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		while(true){

				try {
					Socket clientSocket = serverSocket.accept();
					Thread newService=new ThreadClient(clientSocket,s);
					newService.start();
					System.out.println("The server ready to recive anthor request");
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
		//s.close(); // close the Statement to let the DataBase know we're done with it
		//con.close(); // close the Connection to let the DataBase know we're done with it
		}
	}

package ClientServer;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.sql.ResultSet;
import java.sql.Statement;

public class ThreadClient extends Thread implements Runnable {
	private Socket clientSocket;
	private Statement s;
	public ThreadClient(Socket clientSocket,Statement s){
		this.clientSocket=clientSocket;
		this.s=s;
	}
	public void run() {
		try
		{
			BufferedReader fromClient = new BufferedReader(
					new InputStreamReader(clientSocket.getInputStream()));
			PrintWriter toClient =
			new PrintWriter(clientSocket.getOutputStream(), true);

			while (true)
			{
				String name=fromClient.readLine();
				int  k =  Integer.parseInt(fromClient.readLine());
				System.out.println("received: " + k);

				if(k>1001)
				{
				k=k-((k*30)/100);
				toClient.println(k);
				}
				else if(k>501)
				{
				k=k-((k*25)/100);
				toClient.println(k);
				}
				else if(k>101)
				{
					k=k-((k*20)/100);
				}
				else
				toClient.println(k);

				try {
					String host="345", ipadd="12";
					String sql="insert into Bill values(" + k + ",'" +ipadd + "','" + host + "')";

					s.executeUpdate(sql);
					s.execute("SELECT item.I_name FROM item;"); // select the data from the table
					ResultSet rs = s.getResultSet(); // get any ResultSet that came from our query

					while ( rs.next() ) // this will step through our data row-by-row
					{
						System.out.println("Data from host: " + rs.getString(3) );
					}
				}
				catch (Exception err) {
					System.out.println("ERROR: " + err);
				}
			}
		}
		catch(IOException ex)
		{
			System.err.println(ex);
		}
	}
}

package ClientServer;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class NetClient extends JApplet implements ActionListener
{

	Panel oscards,client,bill;
	CardLayout cardlo;
	JTextField priceTextField;
	JLabel display, b1,b2,b3,b4,b5;
	Socket socket;
	GridLayout glo;
	JTextField nameOfProductTextField,idTextField,quantityTextFeild,a2,a3,a4,a5,a6;
	int numb = 0;
	String numbStr = null,n1,n2,n3,n4;

	public void init()
	{

		try
		{
			socket = new Socket("localhost",8765);
		} catch (UnknownHostException e) {
			System.out.println("Unknown host");
		} catch (IOException e)
		{
			System.out.println("IO Exception");
			return;
		}

		cardlo=new CardLayout();
		oscards=new Panel();
		oscards.setLayout(cardlo);
		JLabel id4= new JLabel("  ", JLabel.RIGHT);

		//	n1=nameOfProductLabeleOfProductTextField.getText();

		add(oscards);
		{
			client = new Panel();
			oscards.add(client, "Client");
			{
				JLabel nameOfProductLabel = new JLabel("Enter the Name of product:",
						JLabel.RIGHT);
				client.add(nameOfProductLabel);
			}
			{
				nameOfProductTextField = new JTextField(22);
				client.add(nameOfProductTextField);
			}
			{
				JLabel idLabel = new JLabel("Enter idLabel:", JLabel.RIGHT);
				client.add(idLabel);
			}
			{
				idTextField = new JTextField(12);
				client.add(idTextField);
			}
			{
				JLabel quantityLabel = new JLabel("Enter quantity:", JLabel.RIGHT);
				client.add(quantityLabel);
			}
			{
				quantityTextFeild = new JTextField(12);
				client.add(quantityTextFeild);
			}
			{
				JLabel priceLabel = new JLabel("Enter the price:", JLabel.RIGHT);
				client.add(priceLabel);
			}
			{
				priceTextField = new JTextField(6);
				client.add(priceTextField);
			}
			{
				JButton sendButton = new JButton("Send");
				client.add(sendButton);
				sendButton.addActionListener(this);
			}
			{
				display = new JLabel("No number");
				client.add(display);
			}
			glo = new GridLayout(5, 2, 30, 40);
			client.setLayout(glo);
		}
		setSize(400, 400);
	}

	public void actionPerformed(ActionEvent e){
		BufferedReader fromServer = null;
		PrintWriter toServer = null;

		String actionCommand = e.getActionCommand();
		if (e.getSource() instanceof JButton)
			if (actionCommand.equals("Send")){
				try{
					n1=nameOfProductTextField.getText();
					numb = Integer.parseInt(priceTextField.getText())*Integer.parseInt(quantityTextFeild.getText());
				}
				catch (NumberFormatException ex){
					System.out.println("Number Format Exception");
				}

		   		try{
					fromServer = new BufferedReader(
					new InputStreamReader(socket.getInputStream()));
					toServer =
					new PrintWriter(socket.getOutputStream(), true);
		   		}
		   		catch (IOException ex)
		   		{
					System.out.println("IO Exception");
		   		}
				toServer.println(n1);
				toServer.println(numb);

				try
				{
					numbStr = fromServer.readLine();
				}
				catch (IOException ex)
				{
					System.out.println("Applet receive failed:");
				}

				display.setText(numbStr);
				bill = new Panel();
				bill.setLayout(new GridLayout(5,1,40,40));
				bill.setLocation(600,600);
				bill.setBackground(Color.pink);
				b1=new JLabel("The name of the product is   "+nameOfProductTextField.getText(),JLabel.LEFT);
				System.out.println(n1);
				b2=new JLabel("The id the product is   "+idTextField.getText(),JLabel.LEFT);
				b3=new JLabel("Total Price is   "+numb,JLabel.LEFT);
				b4=new JLabel("Final Price is  "+numbStr,JLabel.LEFT);
				b5=new JLabel("Signature _________________________________", JLabel.RIGHT);

				bill.add(b1);
				bill.add(b2);
				bill.add(b3);
				bill.add(b4);
				bill.add(b5);
				oscards.add(bill,"Bill");
				cardlo.show(oscards,"Bill");
				repaint();
				try {
					socket.close();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
		 }
	}
}

لا يوجد لدي قاعدة بيانات أكسيس

وأنت قمت بجعلي مشوش بالنسبة للجمل

(كل يوم معدل على قاعدة البيانات)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#20

الله يكرمك على هالكلام اخي

اقتباس
لقد أنزلت نسخة MySQL ولكنها أبت ورفضت التثبيت

هل تستخدم ويندوز فيستا ؟

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