Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
+-------------+--------------+------+-----+-------------------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------------+--------------+------+-----+-------------------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| message | varchar(500) | YES | | NULL | |

| parent | int(11) | YES | | -1 | |

| rating | int(11) | YES | | 0 | |

| user_id | int(11) | YES | | NULL | |

| submit_time | timestamp | NO | | CURRENT_TIMESTAMP | |

+-------------+--------------+------+-----+-------------------+----------------+
  • id: tietueen Tietueen yksilöllinen tunnus. Luodaan automaattisesti.
  • message: käyttäjän Käyttäjän kirjoittama viesti.
  • parent: määrittää onko viesti kommenttiMäärittää onko viestin aseman hierarkiassa. Jos arvo on muu kuin -1 , se on kommentti. Tietueen , jolloin arvo on samalla kommentoidun viestin id. Oletusarvona on -1, joka tarkoittaa kyseessä olevan ensimmäisen tason viestin.
  • Rating: ylösYlös- ja alas-äänien kokonaisarvo.
  • user_id: Sen seinän id, johon viesti kuuluu
  • submit_time: Aika, jolloin viesti on tallennettu tietokantaan.

...

Palveluun liittyvä php voidaan jakaa kahteen kolmeen kategoriaan: Sivulle Järjestelmän ominaisuuksien alustaminen, sivulle lähetetyn tiedon käsittelevään osaan käsittely ja tietokannasta haetun tiedon perusteella sivun sisällön muodostavaan osaan.

2.2.1 Ominaisuuksien alustaminen

Yhdistäminen tietokantaan ja sen onnistuessa asetusten määrittely:

Code Block

//connect to database
try
{
	$mysql_conn = new PDO ("mysql:host=localhost;dbname=koala", "vompatti", "opossumi");	
}catch (PDOException $e){
	die("Virhe: " . $e->getMessage());
}

// error handling
$mysql_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// merkistö
$mysql_conn->exec("SET NAMES utf8");

Jos sovelluksen vaatimaa taulua ei ole tietokannassa se luodaan (IF NOT EXISTS):

Code Block

//create table if doesn't exist
try
{
$mysql_conn->exec("CREATE TABLE IF NOT EXISTS peukku_viestit (
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
	message VARCHAR(500), 
	parent INT DEFAULT -1, 
	rating INT DEFAULT 0, 
	user_id INT, 
	submit_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
}catch (PDOException $e){
	die("Virhe: " . $e->getMessage());
}

2.2.2 Lähetetyn tiedon käsittely

Jokaisessa palvelun lomakkeessa on piilotettu kenttä, joka liitetään käyttäjän lähettämiin tietoihin. Se määrittää, minkä toiminnon lomake suorittaa:

Code Block

<input name="action" type="hidden" value="new_message" />

Ensimmäiseksi tarkistamme onko käyttäjän lähettämää dataa olemassa. Se tehdään selvittämällä onko tietoihin liitetty aikaisemmin mainitsemani action-kenttä. Jos sitä ei suoriteta, tapahtuu virhe datan puuttuessa.

Code Block

// Check if there's post data
if (isset($_POST['action'])){

   ...

}
Code Block

	// Choose the correct action based on the value of the $_POST['action']
	if ($_POST['action'] == 'new_message')
	{
		// Add a message to the database
		// prepare query
		// save it with htmlspecialchars in order to stop clever javascripting ;)
		$query = $mysql_conn->prepare("INSERT INTO peukku_viestit (message) VALUES ('" . htmlspecialchars($_POST['message']) . "')");
		// run query
		$query->execute();
		
		//remove post data by redirecting to ourselves
		header( 'Location: index.php' ) ;
		
	}
	
	else if ($_POST['action'] == 'peukuta')
	{
		// Update +rating to the database
		// prepare query
		$query = $mysql_conn->prepare("UPDATE peukku_viestit SET rating = rating + 1 WHERE id = '" . $_POST['id'] . "'");
		// run query
		$query->execute();
		
		//remove post data by redirecting to ourselves
		header( 'Location: index.php' ) ;
	
	}

	else if ($_POST['action'] == 'peukuta_nega')
	{
		// Update -rating to the database
		// prepare query
		$query = $mysql_conn->prepare("UPDATE peukku_viestit SET rating = rating - 1 WHERE id = '" . $_POST['id'] . "'");
		// run query
		$query->execute();
		
		//remove post data by redirecting to ourselves
		header( 'Location: index.php' ) ;
	
	}
	
}