Video tutorial explains the basics of XML and some rules to be followed to write the XML elements. Also illustrating the way the raw XML files are displayed on the modern browsers.
Its a tag based language much like HTML, the difference is we can makeup our own tags. XML is used to structure and describe the information.
Header Information
1
< ?xml version="1.0" encoding="utf-8"?>
< ?xml version="1.0" encoding="utf-8"?>
it informs about the xml version and the encoding, i.e., the standard encoding utf-8 This is optional. But still recommended by W3C And it is automatically generated by many tools, so lets keep it! It doesn’t hurt :-)
This XML file does not appear to have any style information associated with it.
The document tree is shown below.
<companynames>
IBM, Oracle, Apple, Maestro, Microsoft ..
<!-- Google, Yahoo! -->
</companynames>
This XML file does not appear to have any style information associated with it.
The document tree is shown below.
<companynames>
IBM, Oracle, Apple, Maestro, Microsoft ..
<!-- Google, Yahoo! -->
</companynames>
In Voting system we need to make sure, one person votes only once, to a particular poll. Or One person can only like a particular image once. Person who votes must be allowed to vote down and the person who likes must be allowed to unlike the same image / item etc.
Looks complicated? Relax, its not that complicated!
Let me explain the logic and direct you to some videos.. First, build your User Signup and Login forms. Make username as primary key.
Now another table with two fields again: username and id Make username and id as primary keys..that is, composite primary key.
In database design, a composite key is a key that consists of 2 or more attributes that uniquely identify an entity occurrence. Each attribute that makes up the compound key is a simple key in its own right.
This way, same user can not like / vote for the same image twice! It would throw error, as it violets composite key rule. You could make use of Die() and show appropriate message or still better use if else and if the query has not executed(due to violation of composite key rule) show links in the else part to vote down or unlike. There you could simply delete the entry from vote table.
Video Tutorial: Build VOTE / LIKE, UNLIKE Feature: PHP & MySQL
Take 3 tables: user, image and vote username is primary key in user table. id is primary key in image table. attributes: id and image id and username are composite primary key in vote table.
Vote / Like, Unlike
1
mysql> INSERT INTO vote VALUES( ‘2’, ’apple’ );
mysql> INSERT INTO vote VALUES( ‘2’, ’apple’ );
Count Vote / Like
1
mysql> SELECT count(*) FROM vote WHERE id= ‘2’;
mysql> SELECT count(*) FROM vote WHERE id= ‘2’;
Vote down / Unlike
1
mysql> DELETE FROM vote WHERE( id=‘2’ AND username=’apple’ );
mysql> DELETE FROM vote WHERE( id=‘2’ AND username=’apple’ );
Make sure to take the values of id and username dynamically. Am showing 2 and apple for the sake of illustration. username will be present inside the session variable once the user logs in. id value will be associated with the like or vote link/button of the image. [id is unique to each individual image]
Taking advantage of the error thrown by the composite primary key. i.e., using if else we check if the user has already voted or liked particular image or participated in a particular poll, if yes, we show him/her unlike or vote down link/button.
Vote, Vote Down or Like, Unlike Feature
1
2
3
4
If( mysql_query(“INSERT INTO vote VALUES( ‘2’, ’apple’ )”) )
echo “Thanks for the vote”;
else
echo “<a href=‘vote.php?down=1’>Vote Down</a>”;
If( mysql_query(“INSERT INTO vote VALUES( ‘2’, ’apple’ )”) ) echo “Thanks for the vote”;else echo “<a href=‘vote.php?down=1’>Vote Down</a>”;
You could mix this simple logic with some CSS and other stuffs like AJAX and implement the voting system easily in a short period of time, like a pro!
These are the entries in our table apple: 1Google USA 2Apple USA 3Microsoft USA 4Oracle USA 10IBM 11HP 12Symantec 13Adobe 14Cisco 15McAfee 16Red Hat 17Sun Microsystems 18Intel 19Salesforce 20Facebook 21Technotip 22MindTree 23Tate Consultancy Ser 24Cognizant 25Citigroup 26Maestro 27Visa 28KingFisher 29HDFC 30ICICI 31SBI 32SBM 33Twitter 34LinkedIn 35BlueDart 36VRL 37Zappos 38FlipKart 39Amazon 40Yahoo! 41ebay 42PayPal
We would split these entries into 5 segments each and display 5 records at a time.
In this video tutorial we’re showing the latest entry first. If you want to show first entry first, then take another database field called date and insert the date and time of the insertion operation. Now using the WHERE clause and LIMIT fetch the data from database and display as you wish.
WHERE clause and LIMIT, to fetch depending on date and time mysql query
1
mysql> SELECT * from apple [ WHERE some_condition ] ORDER BY date ASC LIMIT $start, 5;
mysql> SELECT * from apple [ WHERE some_condition ] ORDER BY date ASC LIMIT $start, 5;
1
mysql> SELECT * from apple [ WHERE some_condition ] ORDER BY date DESC LIMIT $start, 5;
mysql> SELECT * from apple [ WHERE some_condition ] ORDER BY date DESC LIMIT $start, 5;
$rs = mysql_query("SELECT count(*) FROM apple");
$rw = mysql_fetch_array($rs);
if( !(isset($_GET['page'])) )
$start = $rw[0] - 5;
else
$start = $rw[0] - ($_GET['page'] * 5);
$res = mysql_query("SELECT * FROM apple LIMIT $start, 5")
or Die("More entries coming, stay tuned!");
$rs = mysql_query("SELECT count(*) FROM apple");
$rw = mysql_fetch_array($rs);
if( !(isset($_GET['page'])) ) $start = $rw[0] - 5;
else $start = $rw[0] - ($_GET['page'] * 5);
$res = mysql_query("SELECT * FROM apple LIMIT $start, 5") or Die("More entries coming, stay tuned!");
First we need to calculate the number of records present inside the table. Next decide onto how many items you want to display. Based on this, subtract the actual number of records with number of items you actually want to display.
If use explicitly passes $_GET[‘page’] i.e., by clicking on the navigation or pagination numbers, then multiply the number with the number of items you want to display and subtract it with the actual number of records present inside the table.
The final step is to, pass the $start and the number till which you want to fetch from $start.
In our case, we want to show 5 items from the table apple, so we give the limit: starting from $start to 5 records after $start.
Video Tutorial: Simple / Basic Pagination / Navigation: PHP & MySQL
< ?php
include_once('db.php');
if( isset($_GET['del']) )
{
$id = $_GET['del'];
$sql= "DELETE FROM apple WHERE id='$id'";
$res= mysql_query($sql) or die("Failed".mysql_error());
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
?>
< ?php
include_once('db.php');
if( isset($_GET['del']) )
{
$id = $_GET['del'];
$sql= "DELETE FROM apple WHERE id='$id'";
$res= mysql_query($sql) or die("Failed".mysql_error());
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
?>
Here we receive the value of id, passed from index.php and assign it to a local variable called $id. Then using simple DELETE query, we delete the records associated with the id.
Video Tutorial: Delete / Remove Records In Database Table: PHP & MySQL
mysql> UPDATE apple SET name='newName' WHERE id='session_id';
Security Issue: Make sure not to allow people to explicitly pass random id’s and retrieve and edit/update other’s data. To solve this issue, you can save the id of the logged in user in a session variable and instead of passing id to edit.php we can directly use the id stored in our session variable. This would solve the issue.