اذهب إلى المحتوى

السؤال

نشر

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


 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.IO;


namespace Transparent_Form
{
    public partial class FormEmployee : Form
    {
        private readonly EmployeeInfo _parent;

        string id, name, regNo, job_Title, position, hiring_Date, country, birthdate, gender, phone, address, deptid, @img;

        public FormEmployee(EmployeeInfo parent)
        {
            InitializeComponent();
            _parent = parent;
        }
        public void UpdateInfo()
        {
            lbltext.Text = "Update Employee";
            btn_Save.Text = "Update";
            textBox_EmpName.Text = name;
            textBox_RegNo.Text = regNo;
            textBox_JopTitle.Text = job_Title;
            textBox_Position.Text = position;
            textBox_Hiringdate.Text = hiring_Date;
            textBox_Birthdate.Text = birthdate;
            comboBox_Dept.Text = deptid;
            Cbox_Country.Text = country;
            textBox_phone.Text = phone;
            textBox_Address.Text = address;

        }

        public void SaveInfo()
        {
            lbltext.Text = "Add Employee";

            lbltext.Text = "Save";
        }



        public void Clear()
        {
            textBox_EmpName.Text = textBox_RegNo.Text = textBox_JopTitle.Text = textBox_Position.Text = textBox_Hiringdate.Text = textBox_Birthdate.Text = textBox_Address.Text = textBox_phone.Text = Cbox_Country.Text = comboBox_Dept.Text = String.Empty;
        }
        private void panel2_Paint(object sender, PaintEventArgs e)
        {

        }

        private void button_upload_Click(object sender, EventArgs e)
        {
            // browse photo from your computer
            OpenFileDialog opf = new OpenFileDialog();
            opf.Filter = "Select Photo(*.jpg;*.png;*.gif)|*.jpg;*.png;*.gif";

            if (opf.ShowDialog() == DialogResult.OK)
            {

                pictureBox_employee.Image = Image.FromFile(opf.FileName);
                pictureBox_employee.ImageLocation = opf.FileName;
                pictureBox_employee.SizeMode = PictureBoxSizeMode.StretchImage;
            }
        }

        private void btn_Save_Click(object sender, EventArgs e)
        {
            if (textBox_EmpName.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee name is Empty (< 3).");
                return;
            }
            if (textBox_RegNo.Text.Trim().Length < 1)
            {
                MessageBox.Show("Employee reg is Empty (< 1).");
                return;
            }
            if (textBox_JopTitle.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee title is Empty (< 3).");
                return;
            }
            if (textBox_Position.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee  position is Empty (< 3).");
                return;
            }
            if (Cbox_Country.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee  country is Empty (< 3).");
                return;
            }
            if (comboBox_Dept.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee  Department is Empty (< 3).");
                return;
            }
            if (textBox_Birthdate.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee birthdate is Empty (< 3).");
                return;
            }
            if (textBox_Hiringdate.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee hiringdate is Empty (< 3).");
                return;
            }

            if (textBox_Address.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee  Adress is Empty (< 3).");
                return;
            }
            if (textBox_phone.Text.Trim().Length < 3)
            {
                MessageBox.Show("Employee  phone is Empty (< 3).");
                return;
            }
            if (pictureBox_employee.Image != null) ;
            return;
            {
            }
        }
    }

}

---

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Transparent_Form
{
    public partial class EmployeeInfo : Form
    {
        FormEmployee Form;
        public EmployeeInfo()
        {
            InitializeComponent();
            Form = new FormEmployee(this);
        }

        private void label4_Click(object sender, EventArgs e)
        {

        } 
        public void Display()
        {
          DbEmployee.DisplayAndSearch("SELECT* From employee_table", dataGridView);
        }

        private void btn_NewEmployee_Click(object sender, EventArgs e)
        {
          Form.Clear();
            Form.SaveInfo();
            Form.ShowDialog();

        }

        private void EmployeeInfo_Shown(object sender, EventArgs e)
        {
            Display();
        }

        private void textBoxSearchEMP_TextChanged(object sender, EventArgs e)
        {
         // DbEmployee.DisplayAndSearch("SELECT* From employee_table WHERE Name LIKE '%"+textBoxSearchEMP.Text +"%'", dataGridView);
        }

        private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if(e.ColumnIndex == 0)
            {
                return;
            }
            if(e.ColumnIndex ==1)
            {
     if(MessageBox.Show("Are you  want to deletE EMPLOYEE ?", "Information", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) == DialogResult.Yes)

                    {
                    DbEmployee.DeleteEmployee(dataGridView.Rows[e.RowIndex].Cells[2].Value.ToString());
                    Display();
                }
                return;
            }
        }
    }
}

----

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.IO;


namespace Transparent_Form
{
    internal class DbEmployee
    {
        public static MySqlConnection GetConnection()
        {

            string sql = "datasource= localhost; port=3306;username=root;password=;database=employeedb";
            MySqlConnection con = new MySqlConnection(sql);
            try
            {
                con.Open();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("MySQL Connection!  \n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return con;
        }

        public static void AddEmployee(Empl emp)

        //

        {
            string sql = "INSERT INTO employee_table VALUES(NULL,@EmpName,@RegNo,@Job_Tile,@Position,@Hiring_Date,@Country,@Birthdate,@Gender,@Phone,@Address,@Photo,@DeptId,NULL)";
            MySqlConnection con = GetConnection();
            MySqlCommand cmd = new MySqlCommand(sql, con);
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.Parameters.Add("@EmpName", MySqlDbType.VarChar).Value = emp.EmpName;

            cmd.Parameters.Add("@RegNo", MySqlDbType.VarChar).Value = emp.RegNo;
            cmd.Parameters.Add("@job_Title", MySqlDbType.VarChar).Value = emp.Job_Title;
            cmd.Parameters.Add("@position", MySqlDbType.VarChar).Value = emp.Position;
            cmd.Parameters.Add("@hiring_date", MySqlDbType.VarChar).Value = emp.Hiring_Date;
            cmd.Parameters.Add("@country", MySqlDbType.VarChar).Value = emp.Country;
            cmd.Parameters.Add("@birthdate", MySqlDbType.VarChar).Value = emp.Birthdate;
            cmd.Parameters.Add("@gender", MySqlDbType.VarChar).Value = emp.Gender;
            cmd.Parameters.Add("@phone", MySqlDbType.VarChar).Value = emp.Phone;
            cmd.Parameters.Add("@adrress", MySqlDbType.VarChar).Value = emp.Address;
            cmd.Parameters.Add("@img", MySqlDbType.Blob).Value = emp.Photo;
            cmd.Parameters.Add("@deptid", MySqlDbType.Blob).Value = emp.DeptId;

            try
            {

                cmd.ExecuteNonQuery();
                MessageBox.Show("Added Succescfully", "Infrormation", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Employee is not inserted. \n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            con.Close();
        }

        public static void UpdateEmployee(Empl emp, string id)
        {
            string sql = "UPDATE employee_table SET Name =@EmpName,Reg No= @RegNo,Job title =@Job_Title ,Position =@position,Country =@country,Birthdate=@birthdate,Hiring Date=@hiring_date,gender=@gender ,Phone =@phone,Address=@adrress,photo=@img,DeptId=@deptid, WHERE ID - @EmpID'";
            MySqlConnection con = GetConnection();
            MySqlCommand cmd = new MySqlCommand(sql, con);
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.Parameters.Add("id", MySqlDbType.VarChar).Value = id;
            cmd.Parameters.Add("@EmpName", MySqlDbType.VarChar).Value = emp.EmpName;

            cmd.Parameters.Add("@RegNo", MySqlDbType.VarChar).Value = emp.RegNo;
            cmd.Parameters.Add("@Job_Title", MySqlDbType.VarChar).Value = emp.Job_Title;
            cmd.Parameters.Add("@position", MySqlDbType.VarChar).Value = emp.Position;
            cmd.Parameters.Add("@hiring_date", MySqlDbType.VarChar).Value = emp.Hiring_Date;
            cmd.Parameters.Add("@country", MySqlDbType.VarChar).Value = emp.Country;
            cmd.Parameters.Add("@birthdate", MySqlDbType.VarChar).Value = emp.Birthdate;
            cmd.Parameters.Add("@gender", MySqlDbType.VarChar).Value = emp.Gender;
            cmd.Parameters.Add("@phone", MySqlDbType.VarChar).Value = emp.Phone;
            cmd.Parameters.Add("@adrress", MySqlDbType.VarChar).Value = emp.Address;
            cmd.Parameters.Add("@img", MySqlDbType.Blob).Value = emp.Photo;
            try
            {

                cmd.ExecuteNonQuery();
                MessageBox.Show("UPDATED Succescfully", "Infrormation", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Employee is not UPDATED. \n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            con.Close();



        }
        public static void DeleteEmployee(string id)
        {
            string sql = "DELETE FROM employee_table WHERE ID = @EmpID";
            MySqlConnection con = GetConnection();
            MySqlCommand cmd = new MySqlCommand(sql, con);
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.Parameters.Add("@EmpID", MySqlDbType.VarChar).Value = id;

            try
            {

                cmd.ExecuteNonQuery();
                MessageBox.Show("DELETED Succescfully", "Infrormation", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Employee is not DELETED . \n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            con.Close();



        }
     public static void DisplayAndSearch(String query, DataGridView dgv)
        {
            string sql = query;
            MySqlConnection con = GetConnection();
            MySqlCommand cmd = new MySqlCommand(sql, con);

            MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
            DataTable tbl = new DataTable();
            adp.Fill(tbl);
            dgv.DataSource = tbl;
            con.Close();
        }
    }
}

----

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.IO;


namespace Transparent_Form
{
    internal class Empl
    {
      

        public string EmpName { get; set; }    
    public string RegNo { get; set; }
    public string Job_Title { get; set; }  
    public string Position { get; set; }
public string  Hiring_Date { get; set; }
        public string Country { get; set; }
        public string Birthdate { get; set; }   
        public string Gender { get; set; }
        public string Phone { get; set; }
        public byte[] Photo { get; set; }
        public string Address { get; set; }
        public string DeptId { get; set; }
        public string V1 { get; }
        public Func<char[], string> Trim { get; }
        public string V2 { get; }
        public string V3 { get; }
        public string V4 { get; }
        public string V5 { get; }
        public string V6 { get; }
        public (string, string, string, string, Image InitialImage) P { get; }

        public Empl(string name, string regNo, string job_Title, string position, string hiring_Date, string country, string birthdate, string gender, string phone,string address,string deptid, byte[] img)
        {
            EmpName = name;
            RegNo = regNo;
            Job_Title = job_Title;
            Position = position;
            Hiring_Date = hiring_Date;
            Country = country;
            Birthdate = birthdate;
            this.Gender = gender;
            Phone = phone;
            Photo = img;
            Address = address;
            DeptId = deptid;




        }

       
        }
    }
    

------

FormEmployee.cs

EmployeeInfo.cs

Empl.cs

DbEmployee.cs

Recommended Posts

  • 0
نشر

أرجو حذف الفراغات من سلسلة الاتصال بقاعدة البيانات

string sql = "datasource= localhost; port=3306;username=root;password=;database=employeedb";

لتصبح:

string sql = "datasource=localhost;port=3306;username=root;password=;database=employeedb";
                        ^^^^

وانتبه لفصل الكلمات المفتاحية 

DbEmployee.DisplayAndSearch("SELECT* From employee_table", dataGridView);
=>
DbEmployee.DisplayAndSearch("SELECT * From employee_table", dataGridView);
                                ^^^^^^

كما تأكد من الشروط على بنية الجدول، هل تقبل NULL ؟؟

string sql = "INSERT INTO employee_table

VALUES(NULL,@EmpName,@RegNo,@Job_Tile,@Position,@Hiring_Date,@Country,@Birthdate,@Gender,@Phone,@Address,@Photo,@Dept
      ^^^^^^^

Id,NULL)";
 ^^^^^^^^^

في حال غير ذلك قم بتحديد أسماء الأعمدة التي تريد إضافة بيانات لها لكل منهم ثم نمرر VALUES

  • 0
نشر
بتاريخ On 8/28/2022 at 00:44 قال Wael Aljamal:

أرجو حذف الفراغات من سلسلة الاتصال بقاعدة البيانات


string sql = "datasource= localhost; port=3306;username=root;password=;database=employeedb";

لتصبح:


string sql = "datasource=localhost;port=3306;username=root;password=;database=employeedb";
                        ^^^^

وانتبه لفصل الكلمات المفتاحية 


DbEmployee.DisplayAndSearch("SELECT* From employee_table", dataGridView);
=>
DbEmployee.DisplayAndSearch("SELECT * From employee_table", dataGridView);
                                ^^^^^^

كما تأكد من الشروط على بنية الجدول، هل تقبل NULL ؟؟


string sql = "INSERT INTO employee_table

VALUES(NULL,@EmpName,@RegNo,@Job_Tile,@Position,@Hiring_Date,@Country,@Birthdate,@Gender,@Phone,@Address,@Photo,@Dept
      ^^^^^^^

Id,NULL)";
 ^^^^^^^^^

في حال غير ذلك قم بتحديد أسماء الأعمدة التي تريد إضافة بيانات لها لكل منهم ثم نمرر VALUES

قمت بتحديد null لخانة id بحكم انها ستكون متغيرة لكل موظف مدخل ولن تتكرر 

  • 0
نشر
بتاريخ On 8/29/2022 at 18:37 قال Wael Aljamal:

حددها ك auto increment ولا تقم بتمرريها ضمن الاستعلام

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

وارفقت البرمجة ايضا : 

 

1- EmployeeInfoe : 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace Transparent_Form
{
    public partial class EmployeeInfo : Form
    {
        FormEmployee Form;
        public EmployeeInfo()
        {
            InitializeComponent();
            Form = new FormEmployee(this);
        }

        private void label4_Click(object sender, EventArgs e)
        {

        }
        public static void DisplayAndSearch(String query, DataGridView dgv)
        {
            string connection = "server=localhost; port=3306;username=root;password=;database=employeedb;Convert Zero Datetime=True";
            string sql = query;

            MySqlConnection conn = new MySqlConnection(connection);
            MySqlCommand cmd = new MySqlCommand(query, conn);
            MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
            adp.SelectCommand = cmd;
            DataTable tbl = new DataTable();
            adp.Fill(tbl);
            dgv.DataSource = tbl;
 
        }
   public void Display()
  {
DisplayAndSearch("SELECT* From employee", dataGridView);
     }

    private void btn_NewEmployee_Click(object sender, EventArgs e)
      {
        Form.Clear();
          Form.SaveInfo();
          Form.ShowDialog();

        }

        private void EmployeeInfo_Shown(object sender, EventArgs e)
        {
            Display();
        }

        private void textBoxSearchEMP_TextChanged(object sender, EventArgs e)
        {
  //  DbEmployee.DisplayAndSearch("SELECT * From employee_table WHERE Name LIKE '%"+textBoxSearchEMP.Text +"%'", dataGridView);
        }

        private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if(e.ColumnIndex == 0)
            {
                return;
            }
            if(e.ColumnIndex ==1)
            {
  // if(MessageBox.Show("Are you  want to deletE EMPLOYEE ?", "Information", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) == DialogResult.Yes)

                    {
                    DbEmployee.DeleteEmployee(dataGridView.Rows[e.RowIndex].Cells[2].Value.ToString());
                    Display();
                }
                return;
            }
        }

        private void textBoxSearchEMP_KeyPress(object sender, KeyPressEventArgs e)
        {

        }

        private void dataGridView_KeyDown(object sender, KeyEventArgs e)
        {

        }

        private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
    }
}

2- FormEMPLOYEE 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.IO;


namespace Transparent_Form
{
    public partial class FormEmployee : Form

    {
      


        private readonly EmployeeInfo _parent;

        string id, name, regNo, job_Title, position, hiring_Date, country, birthdate, gender, phone, address, deptid, @img;

        private void textBox_Position_Validating(object sender, CancelEventArgs e)
        {
            if (string.IsNullOrEmpty(textBox_Position.Text.Trim()))
            {
                errorProvider3.SetError(textBox_Position, "Position is Required");
                return;
            }
            else
            {
                errorProvider1.SetError(textBox_Position, string.Empty);
            }
        }

        private void FormEmployee_Validated(object sender, EventArgs e)
        {

        }

        private void textBox_JopTitle_Validated(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox_JopTitle.Text.Trim()))
            {
                errorProvider2.SetError(textBox_JopTitle, "Title is Required");
                return;
            }
            else
            {
                errorProvider1.SetError(textBox_JopTitle, string.Empty);
            }
        }

        private void textBox_EmpName_Validated(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox_EmpName.Text.Trim()))
            {
                errorProvider1.SetError(textBox_EmpName, "Name is Required");
                return;
            }
            else
            {
                errorProvider1.SetError(textBox_EmpName, string.Empty);
            }
        }

        public FormEmployee(EmployeeInfo parent)
        {
            InitializeComponent();
            _parent = parent;
        }
        public void UpdateInfo()
        {
            lbltext.Text = "Update Employee";
            btn_Save.Text = "Update";
            textBox_EmpName.Text = name;
            textBox_RegNo.Text = regNo;
            textBox_JopTitle.Text = job_Title;
            textBox_Position.Text = position;
            dateTimePicker_hd.Text = hiring_Date;
            dateTimePicker_bd.Text = birthdate;
            comboBox_Dept.Text = deptid;
            Cbox_Country.Text = country;
            textBox_phone.Text = phone;
            textBox_Address.Text = address;

        }

        public void SaveInfo()
        {
            lbltext.Text = "Add Employee";

            lbltext.Text = "Save";
        }



        public void Clear()
        {
            textBox_EmpName.Text = textBox_RegNo.Text = textBox_JopTitle.Text = textBox_Position.Text = dateTimePicker_bd.Text = dateTimePicker_hd.Text = textBox_Address.Text = textBox_phone.Text = Cbox_Country.Text = comboBox_Dept.Text = String.Empty;
        }
        private void panel2_Paint(object sender, PaintEventArgs e)
        {

        }

        private void button_upload_Click(object sender, EventArgs e)
        {
            // browse photo from your computer
            OpenFileDialog opf = new OpenFileDialog();
            opf.Filter = "Select Photo(*.jpg;*.png;*.gif)|*.jpg;*.png;*.gif";

            if (opf.ShowDialog() == DialogResult.OK)
            {

                pictureBox_employee.Image = Image.FromFile(opf.FileName);
                pictureBox_employee.ImageLocation = opf.FileName;
                pictureBox_employee.SizeMode = PictureBoxSizeMode.StretchImage;
            }
        }

        private void btn_Save_Click(object sender, EventArgs e)
        {
            string connection = "server=localhost; port=3306;username=root;password=;database=employeedb;Convert Zero Datetime=True";

          //string ource=localhost; port=3306;username=root;password=;database=employeedb";
            string query = "INSERT INTO employee(EmpName,RegNo,Job_Title,Position,Hiring_Date,Country,Birthdate,Gender,Phone,Address,Photo,DeptID) VALUES('" + this.textBox_EmpName.Text + "','" + this.textBox_RegNo.Text + "','" + this.textBox_JopTitle.Text + "','" + this.textBox_Position.Text + "','" + this.dateTimePicker_hd.Text + "','" + this.Cbox_Country.Text + "','" + this.dateTimePicker_bd.Text + "','" + this.comboBox_Gender.Text + "','" + this.textBox_phone.Text + "','" + this.textBox_Address.Text + "','" + this.pictureBox_employee.Image + "','" + this.comboBox_Dept.Text + "')";
            MySqlConnection conn = new MySqlConnection(connection);
            MySqlCommand cmd = new MySqlCommand(query, conn);
            MySqlDataReader dr;
            conn.Open();

            try
            {

                cmd.ExecuteNonQuery();
                MessageBox.Show("UPDATED Succescfully", "Infrormation", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Employee is not UPDATED. \n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            conn.Close();



        }






       //r = cmd.ExecuteReader();
           //essageBox.Show("Added Succescfully", "Infrormation", MessageBoxButtons.OK, MessageBoxIcon.Information);
           //onn.Close();
        }
       
    }


 

Screenshot (18).png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...