Radionica programiranja 53. - prepared statement

Potrebno predznanje Radionica1 - PHP prvi put
Potrebno predznanje Radionica 8 - Baza podataka prvi put
Upiti koje radimo se zasnivaju na ovoj bazi podataka.
Naučite relacijske baze podataka po mojoj knjizi Access 2000, koju možete skinuti besplatno ovdje.
Ovdje radimo bazu Mariva iz knjige Access 2000, ali u PHP-MySQL verziji.

<!DOCTYPE html>
<html>
<head>
<title>Unos računa u tablicu racuna</title>
</head>
<body>
<?php
if(isset($_POST['submit'])){
$podaci_za_unos = array();
if(empty($_POST['id_polaznika'])){
// Dodaj id_polaznika u array
$podaci_za_unos[] = 'id_polaznika';
} else {
$i_polaznika = $_POST['id_polaznika'];
}
if(empty($_POST['ime'])){
// Dodaj ime array
$podaci_za_unos[] = 'ime';
} else{
$i_me = $_POST['ime'];
}
if(empty($_POST['prezime'])){
// Dodaj prezime u array
$podaci_za_unos[] = 'prezime';
} else {
$p_rezime = $_POST['prezime'];
}
if(empty($_POST['ulicaibroj'])){
// Dodaj ulicaibroj u array
$podaci_za_unos[] = 'ulicaibroj';
} else {
$ulica_ibroj = $_POST['ulicaibroj'];
}
if(empty($_POST['grad'])){
// Dodaj grad u array
$podaci_za_unos[] = 'grad';
} else {
$g_rad = $_POST['grad'];
}

if(empty($_POST['postanski_broj'])){

// Dodaj postanski_broj u array

$podaci_za_unos[] = 'postanski_broj';

} else {

$p_ostanskibroj = $_POST['postanski_broj'];

}

if(empty($_POST['nacin_placanja'])){

// Dodaj nacin_placanja u array

$podaci_za_unos[] = 'nacin_placanja';

} else {

$n_acinplacanja = $_POST['nacin_placanja'];

}

if(empty($_POST['datum_placanja'])){

// Dodaj datum_placanja u array

$podaci_za_unos[] = 'datum_placanja';

} else {

$d_atumplacanja = $_POST['datum_placanja'];

}

if(empty($_POST['rok_placanja'])){

// Dodaj rok_placanja u array

$podaci_za_unos[] = 'rok_placanja';

} else {

$r_okplacanja = $_POST['rok_placanja'];

}

if(empty($data_missing)){

define("DB_HOST", "localhost");

define("DB_USERNAME", "admin");

define("DB_PASSWORD", "bBw4vIJVqX5zX1Iy");

define("DB_NAME", "mariva");

$link = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

//$link = mysqli_connect("localhost", "root", "", "mariva");

//prepared query = štiti od ubacivanja zlonamjernog skripta

$sql = "INSERT INTO racuni (id_polaznika, ime_primatelja,

prezime_primatelja,

ulica_i_broj, grad, postanski_broj,

id_nacin_placanja, datum_placanja, rok_placanja)

VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";

$stmt = mysqli_prepare($link, $sql);

/*

Objašnjenje skraćenica formata podataka u sljedećoj funkciji

i Integers

d Doubles

b Blobs

s Everything Else

*/

mysqli_stmt_bind_param($stmt, "isssssiss", $i_polaznika,

$i_me, $p_rezime, $ulica_ibroj, $g_rad,

$p_ostanskibroj, $n_acinplacanja, $d_atumplacanja, $r_okplacanja);

mysqli_stmt_execute($stmt);

$affected_rows = mysqli_stmt_affected_rows($stmt);

if($affected_rows == 1){

echo 'Račun je dodan';

mysqli_stmt_close($stmt);

mysqli_close($link);

} else {

echo 'Pojavila se greška<br />';

echo mysqli_error();

mysqli_stmt_close($stmt);

mysqli_close($link);

}

} else {

echo 'Trebate unijeti sljedeće podatke<br />';

foreach($podaci_za_unos as $missing){

echo "$missing<br />";

}

}

}

?>

<form action='pq.php' method='post'>

id_polaznika:<br>

<input type='text' name='id_polaznika'><br>

ime:<br>

<input type='text' name='ime'></br>

prezime:<br>

<input type='text' name='prezime'></br>

ulicaibroj:<br>

<input type='text' name='ulicaibroj'></br>

grad:<br>

<input type='text' name='grad'></br>

postanskibroj:<br>

<input type='text' name='postanski_broj'></br>

datumplacanja:<br>

<input type='text' name='datum_placanja'></br>

rokplacanja:<br>

<input type='text' name='rok_placanja'></br>

<input type="radio" name="nacin_placanja" value="1">Novčanice

<input type="radio" name="nacin_placanja" value="2">American

<input type="radio" name="nacin_placanja" value="3">Čekovi

<input type="radio" name="nacin_placanja" value="4">Diners

<input type="submit" name="submit" value="Novi račun">

</form>

</body>

</html>

Primjedbe