473,473 Members | 1,864 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

Selecting sections of an XML document?

4 New Member
Hi i have a C# windows form that has two list boxes on it.The left one contains a list of 16 student module codes that are available to enrol onto. The user selects a module from the left to transfer to the right box. I have it working up to this point, the module code transfers when the select button is clicked.
Once a module has been transferred i need to select it and output it into a Rich Text Box (placed to the right of it)the full module details that are held in an XML file.
I am able to read through the contents of the XML file and output all contents.But what i need it to do is just output the "SELECTED module" details. So i have to somehow read through the XML file and pick out the particular module/modules that the user selects? So if he/she selects 8 modules then i just want the details of all of those to display in the Rich Text Box? I have submitted this question to 4 different forums and noone seems to know how to do it?

Thankyou



Expand|Select|Wrap|Line Numbers
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using ModuleSelector.Entities;
  10. using System.Xml;
  11. using System.IO;
  12. using System.Xml.XPath;
  13. using System.Xml.Linq;
  14.  
  15.  
  16.  
  17.  
  18. namespace ModuleSelector
  19. {
  20.     public partial class FormMain : Form
  21.     {
  22.         public FormMain()
  23.         {
  24.             InitializeComponent();
  25.         }
  26.  
  27.         String mName, mCode, mDescription, mCapacity, mLectureSlot, mTutorialSlot;
  28.         string workingDir = Directory.GetCurrentDirectory();
  29.  
  30.         private void FormMain_Load(object sender, EventArgs e)
  31.         {
  32.  
  33.             int slot = (int)Timetable.timeSlots.Monday4_6;
  34.             System.Console.WriteLine(slot);
  35.  
  36.  
  37.  
  38.  
  39.         }
  40.  
  41.         private void listBoxModules_DragLeave(object sender, EventArgs e)
  42.         {
  43.             String module = (String)listBoxModules.SelectedItem;
  44.         }
  45.  
  46.  
  47.         private void listBoxModules_DrawItem(object sender, EventArgs e)
  48.         {
  49.             String module = (String)listBoxModules.SelectedItem;
  50.         }
  51.  
  52.         private void buttonAddModule_Click(object sender, EventArgs e)
  53.         {
  54.             listBoxSelectedModules.Items.Add(listBoxModules.SelectedItem);
  55.  
  56.         }
  57.  
  58.  
  59.  
  60.         private void listBoxSelectedModules_DrawItem(object sender, DrawItemEventArgs e)
  61.         {
  62.             String module = (String)listBoxModules.SelectedItem;
  63.         }
  64.  
  65.  
  66.         private void listBoxModules_DrawItem(object sender, DrawItemEventArgs e)
  67.         {
  68.             String module = (String)listBoxModules.SelectedItem;
  69.         }
  70.  
  71.         private void buttonRemoveModule_Click(object sender, EventArgs e)
  72.         {
  73.             listBoxSelectedModules.Items.Remove(listBoxModules.SelectedItem);
  74.         }
  75.  
  76.         private void buttonSubmit_Click(object sender, EventArgs e)
  77.         {
  78.  
  79.         }
  80.  
  81.         private void listBoxSelectedModules_SelectedIndexChanged(object sender, EventArgs e)
  82.         { 
  83.  
  84.             // Traverses through the Xml file reading each node
  85.             XmlTextReader textReader = new XmlTextReader(workingDir + @"\XMLModules.xml");
  86.             while (textReader.Read())
  87.             {
  88.                 textReader.MoveToElement();
  89.                 if (textReader.Name == "moduleName")
  90.                 {
  91.                     textReader.Read();
  92.                     XmlNodeType nType = textReader.NodeType;
  93.  
  94.                     if (nType == XmlNodeType.Text)
  95.                     {
  96.                         mName += (" Module Name: " + textReader.Value.ToString());
  97.                     }
  98.                 }
  99.  
  100.                 if (textReader.Name == "moduleCode")
  101.                 {
  102.                     textReader.Read();
  103.                     XmlNodeType nType = textReader.NodeType;
  104.  
  105.                     if (nType == XmlNodeType.Text)
  106.                     {
  107.                         mCode += (" Module Code: " + textReader.Value.ToString());
  108.                     }
  109.                 }
  110.  
  111.  
  112.  
  113.                 if (textReader.Name == "moduleDescription")
  114.                 {
  115.                     textReader.Read();
  116.                     XmlNodeType nType = textReader.NodeType;
  117.                     if (nType == XmlNodeType.Text)
  118.                     {
  119.                         mDescription += (" Module Description: " + textReader.Value.ToString());
  120.                     }
  121.                 }
  122.  
  123.                 if (textReader.Name == "moduleCapacity")
  124.                 {
  125.                     textReader.Read();
  126.                     XmlNodeType nType = textReader.NodeType;
  127.                     if (nType == XmlNodeType.Text)
  128.                     {
  129.                         mCapacity += (" Module Capacity: " + textReader.Value.ToString());
  130.                     }
  131.  
  132.                 }
  133.  
  134.                 if (textReader.Name == "lectureSlot")
  135.                 {
  136.                     textReader.Read();
  137.                     XmlNodeType nType = textReader.NodeType;
  138.                     if (nType == XmlNodeType.Text)
  139.                     {
  140.                         mLectureSlot += (" Lecture Slot: " + textReader.Value.ToString());
  141.                     }
  142.                 }
  143.  
  144.  
  145.                 if (textReader.Name == "tutorialSlot")
  146.                 {
  147.                     textReader.Read();
  148.                     XmlNodeType nType = textReader.NodeType;
  149.                     if (nType == XmlNodeType.Text)
  150.                     {
  151.                         mTutorialSlot += (" Tutorial Slot: " + textReader.Value.ToString());
  152.                     }
  153.  
  154.                 }
  155.  
  156.                 // Outputs the data to the RichTextBox
  157.                 this.txtResults.Text = mName +
  158.                                  "\n" + mCode +
  159.                                  "\n" + mDescription +
  160.                                  "\n" + mCapacity +
  161.                                  "\n" + mLectureSlot +
  162.                                  "\n" + mTutorialSlot;
  163.             } textReader.Close();
  164.         }
  165.  
  166.  
  167.  
  168.          private void richTextBox1_TextChanged(object sender, EventArgs e)
  169.          {
  170.  
  171.          }
  172.  
  173.          private void butGetAll_Click(object sender, EventArgs e)
  174.          {
  175.              XDocument xmlDoc = XDocument.Load("XMLModules.xml");
  176.  
  177.              var modules = from module in xmlDoc.Descendants("Module")
  178.                            select new
  179.                            {
  180.                                Title = module.Element("moduleName").Value,
  181.                                Platform = module.Element("moduleCode").Value,
  182.                            };
  183.  
  184.              txtResults.Text = "";
  185.              foreach (var module in modules)
  186.              {
  187.                  txtResults.Text = txtResults.Text + "moduleName: " + module + "\n";
  188.                  txtResults.Text = txtResults.Text + "moduleCode: " + module + "\n\n";
  189.              }
  190.  
  191.  
  192.             if (txtResults.Text == "")
  193.               txtResults.Text = "No Results.";
  194.              }
  195.  
  196.            private void butFilter_Click(object sender, EventArgs e)
  197.            {
  198.              XDocument xmlDoc = XDocument.Load("XMLModules.xml");
  199.  
  200.             var modules = from module in xmlDoc.Descendants("Module")
  201.             where module.Element("moduleName").Value == listBoxSelectedModules.ToString()
  202.             select new
  203.             {
  204.                Title = module.Element("moduleName").Value,
  205.                Platform = module.Element("moduleCode").Value,
  206.             };
  207.  
  208.                txtResults.Text = "";
  209.                foreach (var module in modules)
  210.                {
  211.                  txtResults.Text = txtResults.Text + "moduleName: " + module + "\n";
  212.                  txtResults.Text = txtResults.Text + "moduleCode: " + module + "\n\n";
  213.                }
  214.  
  215.                if (txtResults.Text == "")
  216.                txtResults.Text = "No Results.";
  217.  
  218.            }
  219.          }
  220. }
  221.  
  222.  
  223.  
XML file

Expand|Select|Wrap|Line Numbers
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <modules>
  3. <module><moduleCode>3SFE504</moduleCode>
  4. <moduleName>Algorithms and Data Structures</moduleName>
  5.   <moduleCapacity>5</moduleCapacity>
  6.   <semester>1</semester>
  7.   <Prerequisite>none</Prerequisite>
  8.   <lectureSlot>0</lectureSlot>
  9.   <tutorialSlot>1</tutorialSlot>
  10.   <moduleDescription>Data structures, ADT's and implementations</moduleDescription>
  11. </module>
  12. <module>
  13.     <moduleCode>3SFE508</moduleCode>
  14.     <moduleName>3D GraphicsI</moduleName>
  15.     <moduleCapacity>5</moduleCapacity>
  16.     <semester>1</semester>
  17.     <Prerequisite>none</Prerequisite>
  18.     <lectureSlot>2</lectureSlot>
  19.     <tutorialSlot>3</tutorialSlot>
  20.     <moduleDescription>Introduction to graphical three-dimensional representation of geometric data</moduleDescription>
  21.   </module>
  22.   <module>
  23. <moduleCode>3SFE513</moduleCode>
  24. <moduleName>Event-Driven Programming</moduleName>
  25.     <moduleCapacity>10</moduleCapacity>
  26.     <semester>1</semester>
  27.     <prerequisite>none</prerequisite>
  28.     <lectureSlot>4</lectureSlot>
  29.     <tutorialSlot>5</tutorialSlot>
  30.    <moduleDescription>GUI's,Programming Event handlers in Java,embedded systems,control systems </moduleDescription>
  31. </module>
  32. <module>
  33.     <moduleCode>3SFE514</moduleCode>
  34.     <moduleName>Object Orientated Design</moduleName>
  35.     <moduleCapacity>10</moduleCapacity>
  36.     <semester>1</semester>
  37.     <prerequisite>none</prerequisite>
  38.     <lectureSlot>6</lectureSlot>
  39.     <tutorialSlot>7</tutorialSlot>
  40.     <moduleDescription>Programming development process in Java</moduleDescription>
  41. </module>
  42. <module>
  43.     <moduleCode>3SFE516</moduleCode>
  44.     <moduleName>Requirements Engineering</moduleName>
  45.     <moduleCapacity>10</moduleCapacity>
  46.     <semester>1</semester>
  47.     <prerequisite>none</prerequisite>
  48.     <lectureSlot>8</lectureSlot>
  49.     <tutorialSlot>9</tutorialSlot>
  50.     <moduleDescription>Identifying,modelling and analysing requirements</moduleDescription>
  51.   </module>
  52.   <module>
  53.     <moduleCode>3SFE599</moduleCode>
  54.   <moduleName>Introduction to AI</moduleName>
  55.     <moduleCapacity>5</moduleCapacity>
  56.     <semester>1</semester>
  57.     <prerequisite>none</prerequisite>
  58.     <lectureSlot>10</lectureSlot>
  59.     <tutorialSlot>0</tutorialSlot>
  60.     <moduleDescription>Artificial Intelligence and Expert Systems</moduleDescription>
  61.   </module>
  62.   <module>
  63.     <moduleCode>3SFE540</moduleCode>
  64.     <moduleName>Java Mobile Application Development</moduleName>
  65.     <moduleCapacity>5</moduleCapacity>
  66.     <semester>1</semester>
  67.     <prerequisite>3SFE514(corequisite)</prerequisite>
  68.     <lectureSlot>1</lectureSlot>
  69.     <tutorialSlot>2</tutorialSlot>
  70.     <moduledescription>Java ME micro edition for mobile applications</moduledescription>
  71.   </module>
  72.  
  73.  
  74.   <module>
  75.     <moduleCode>3SFE541</moduleCode>
  76.   <moduleName>C#.Net Framework Programming</moduleName>
  77.     <moduleCapacity>5</moduleCapacity>
  78.     <semester>1</semester>
  79.     <prerequisite>3SFE514(corequisite)</prerequisite>
  80.     <lectureSlot>3</lectureSlot>
  81.   <tutorialSlot>4</tutorialSlot>
  82.   <moduleDescription>An Object Orientated programming language using the .NET Framework</moduleDescription>
  83.   </module>
  84.   <module>
  85.     <moduleCode>3SFE515</moduleCode>
  86.     <moduleName>Software Engineering Group Project</moduleName>
  87.     <moduleCapacity>5</moduleCapacity>
  88.     <semester>2</semester>
  89.     <prerequisite>3SFE514(corequisite)</prerequisite>
  90.     <lectureSlot>0</lectureSlot>
  91.     <tutorialSlot>1</tutorialSlot>
  92.     <moduleDescription>A Programming Group project in Java</moduleDescription>
  93.   </module>
  94.   <module>
  95.     <moduleCode>3SFE519</moduleCode>
  96.     <moduleName>Software Engineering</moduleName>
  97.     <moduleCapacity>10</moduleCapacity>
  98.     <semester>2</semester>
  99.     <prerequisite>none</prerequisite>
  100.     <lectureSlot>2</lectureSlot>
  101.     <tutorial>3</tutorial>
  102.    <moduleDescription>The Software Development Cycle</moduleDescription>
  103.   </module>
  104.   <module>
  105.   <moduleCode>3SFE542</moduleCode>
  106.     <moduleName>Mobile User Interface Development</moduleName>
  107.     <moduleCapacity>5</moduleCapacity>
  108.     <semester>2</semester>
  109.     <prerequisite>3SFE540</prerequisite>
  110.     <lectureSlot>4</lectureSlot>
  111.     <tutorialSlot>5</tutorialSlot>
  112.     <moduleDescription>The development of mobile applications,Windows CE and iPhone</moduleDescription>
  113.   </module>
  114.   <module>
  115.     <moduleCode>3MTS594</moduleCode>
  116.     <moduleName>Interactive Multimedia</moduleName>
  117.     <moduleCapacity>5</moduleCapacity>
  118.     <semester>2</semester>
  119.     <prerequisite>none</prerequisite>
  120.     <lectureSlot>6</lectureSlot>
  121.     <tutorialSlot>7</tutorialSlot>
  122.     <moduleDescription>Design, organise and produce multimedia content for a variety of devises</moduleDescription>
  123.   </module>
  124.   <module>
  125.     <moduleCode>3SFE555</moduleCode>
  126.     <moduleName>Concurrent Programming</moduleName>
  127.     <moduleCapacity>5</moduleCapacity>
  128.     <semester>2</semester>
  129.     <prerequisite>3SFE504</prerequisite>
  130.     <lectureSlot>8</lectureSlot>
  131.     <tutorialSlot>9</tutorialSlot>
  132.     <moduleDescription>Parallel Processing Computing</moduleDescription>
  133.   </module>
  134.   <module>
  135.     <moduleCode>3SFE557</moduleCode>
  136.     <moduleName>Mobile Gaming</moduleName>
  137.     <moduleCapacity>10</moduleCapacity>
  138.     <semester>2</semester>
  139.     <prerequisite>3SFE513</prerequisite>
  140.     <lectureSlot>10</lectureSlot>
  141.     <tutorialSlot>0</tutorialSlot>
  142.     <moduleDescription>Hardware/software components of mobile computer games </moduleDescription>
  143.   </module>
  144.   <module>
  145.   <moduleCode>3SFE500</moduleCode>
  146.     <moduleName>Intelligent Systems</moduleName>
  147.     <moduleCapacity>10</moduleCapacity>
  148.     <semester>2</semester>
  149.     <prerequisite>3SFE599</prerequisite>
  150.     <lectureSlot>1</lectureSlot>
  151.     <tutorialSlot>2</tutorialSlot>
  152.    <moduleDescription>Computer robotics and multiagents systems</moduleDescription>
  153.   </module>
  154.   <module>
  155.   <moduleCode>3SFE501</moduleCode>
  156.    <moduleName>3D Graphics II</moduleName>
  157.     <moduleCapacity>10</moduleCapacity>
  158.     <semester>2</semester>
  159.     <prerequisite>3SFE599</prerequisite>
  160.     <lectureSlot>3</lectureSlot>
  161.     <tutorialSlot>4</tutorialSlot>
  162.    <moduleDescription>Graphical three-dimensional representation of geometric data</moduleDescription>
  163.   </module>
  164. </modules>
  165.  
  166.  
  167.  
Apr 17 '11 #1
6 1812
GaryTexmo
1,501 Recognized Expert Top Contributor
There's a ton of ways you could accomplish this... some involve file parsing, some don't. I think I'm gonna let one of our resident LINQ whizzes show you a file parse solution (if they catch this thread) because I'm reasonably you could use a LINQ select on the XML file to get your modules.

The solution I'm going to encourage you to explore involves reading the XML file into a hash table (for fast lookup) and using that to get your information.

Since you're already writing the XML file, I assume you know how to read one as well (using serialization or otherwise). I also figure you've got some kind of class or struct that defines a module, and that the module code is unique. If not, you can correct me later.

So anyway, I suggest reading the entire XML file and caching it in a hash table. Use the code as the key and the object itself as the value. Something like this...

Expand|Select|Wrap|Line Numbers
  1. public class Module
  2. {
  3.   public String Code { get; set; }
  4.   public String Name { get; set; }
  5.   ...
  6. }
  7.  
  8. ...
  9.  
  10. public Hashtable CacheModules(string moduleFile)
  11. {
  12.   Hashtable moduleCache = new Hashtable();
  13.   // read xml file
  14.   // for each module data in file
  15.     Module module = new Module();
  16.     module.Code = // read code from XML
  17.     module.Name = // read name from XML
  18.     ...
  19.     if (!moduleHash.ContainsKey(module.Code))
  20.       moduleHash.Add(module.Code, module);
  21.     else
  22.       throw new Exception("Duplicate item found!");
  23.   // done loop
  24. }
Now you've got a Hashtable object with all your modules in it that are keyed to the code. If you want to lookup a module, simply do...

Expand|Select|Wrap|Line Numbers
  1. string desiredCode = // the code you want
  2.  
  3. Module module = moduleCache[desiredCode] as Module;
  4. if (module != null)
  5. {
  6.   // do whatever you want with module
  7. }
Apr 18 '11 #2
mandy easter
4 New Member
Firstly thankyou so much for your help....its been a long haul.

I am a newbie at C# so forgive if i ask stupid questions,but where it is reading from the XML file


Expand|Select|Wrap|Line Numbers
  1.  
  2.             public Hashtable CacheModules(string moduleFile)
  3.        {
  4.            Hashtable moduleCache = new Hashtable();
  5.            // read xml file
  6.           // for each module data in file
  7.            Module module = new Module();
  8.            module.Code = // read code from XML
  9.            module.Name = // read name from 
  10.            module.Description = //what is it that goes here?
  11.            module.lectureSlot = //and here etc?
  12.            module.tutorialSlot =
  13.            module.capacity = 
  14.  
  15.  
  16.      if (!moduleHash.ContainsKey(module.Code))
  17.      {
  18.       moduleHash.Add(module.Code, module);
  19.      }
  20.     else
  21.     {
  22.       throw new Exception("Duplicate item found!");
  23.     }
  24.   // done loop
  25. }
  26.     }
  27.  
  28. }
  29.  
Apr 18 '11 #3
mandy easter
4 New Member
Do you mean module.Code = textReader.text; or something similar??

OR??

Module module = new Module();
module.Code = // read code from XML
module.Name = // read name from XML
module.Description =
module.lectureSlot =
module.tutorialSlot =
module.capacity =

You see my code already reads all the modules i just cannot get it to pick out the module details for the module i select in the ListBox. Wouldn't an arraylist be easier than a hashtable?

My problem is i don't know how to put it into code.
Apr 18 '11 #4
GaryTexmo
1,501 Recognized Expert Top Contributor
I didn't include the code for reading the module from XML. I figured since you already knew how to write it to XML, you knew how to read it back out. It was just to demonstrate that you would read the appropriate data from the XML and set the property on your Module object.

You're saying your code already reads the modules, which is great, but I'm saying that instead of just outputting them to the form, store the data in objects instead :) Then you can store those objects in a list you can retrieve from later.

Try that on your own first, if you need help post back here with the code you're using to load your XML into objects.
Apr 19 '11 #5
mandy easter
4 New Member
i didn't mean "give" me the code, i didn't actually write the XML file just had to read it in. I was asking for the syntax as i said above.i asked because i didn't know how to do it...couldn't find out much info about hashtables/XML files on the web. It doesn't matter now though as i had to hand it in the deadline was today.So it went as it was. Thanks anyway.
Apr 19 '11 #6
GaryTexmo
1,501 Recognized Expert Top Contributor
I didn't say you asked for the code ;) I just meant that it looked like you had the module generation completed already so you could just extend it to read the modules into objects.

Regarding this being an assignment, it's actually against bytes policy for us to help you with things like that. The best I can do is give you nudges and hints, trying to help you work towards a solution on your own.

That said, even though the time for the assignment is past, the best way to get good at coding is to find the fun in it. This is something that would be a great learning tool, so if you're still interested in finding a solution dive right in. If you have questions or need help figuring things out, the experts here are always happy to lend a hand.

(I realize that you may not have time, I was a student not too long ago. Graduating was the best thing to happen to me for rebooting my recreational programming hobby.)
Apr 19 '11 #7

Sign in to post your reply or Sign up for a free account.

Similar topics

2
by: Dave Matthews | last post by:
Hi folks, I'm writing a web-page editing tool for my company which will allow staff (with no "technical" expertise) to maintain their own Intranet sites. The content for each webpage is stored...
0
by: David Gersic | last post by:
I'm working with an HR system and trying to deal with an XML document that contains a bunch of personal data (unique to the person) and one or more sets of job data (a person can be hired more than...
12
by: Charles Law | last post by:
Hi guys A bit of curve ball here ... I have a document (Word) that contains a series of instructions in sections and subsections (and sub-subsections). There are 350 pages of them. I need to...
6
by: Andreas Prilop | last post by:
What exactly are Chapters and Sections in the <LINK REL=...> tag? I have put some <LINK REL="Chapter"> tags into http://www.unics.uni-hannover.de/nhtcapri/bidirectional-text.html Is this the...
10
by: Russell Mangel | last post by:
What would be the best way to parse this XML document? I want to avoid using XMLDocument. I don't know if I should use XMLTextReader, or Xpath classes. There is only one element <MessageStore>...
6
by: Chris Fink | last post by:
I have an xml document that contains some elements encoded as Base64. How do I dynamically scan the XML Document and pull out the sections that are Base64... My overall goal is to display the...
2
by: chriscorbell | last post by:
I have a specific but somewhat high-level question on how to approach a schema which embeds a subset of XHTML in some elements. I have a schema defined for a logical document structure. Sections...
1
by: TEK | last post by:
Hello I'm wondering if anyone have some good ideas/solution to a problem I'm working on. Target: Give the user a "MS World" like document UI to work with when editing data stored in a object...
16
by: dhtml | last post by:
Breaking up the FAQ has been discussed. http://groups.google.com/group/comp.lang.javascript/browse_frm/thread/d11878ddfb2ac892/ I'm interested in doing this now. I propose something along the...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
muto222
php
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.