Przyklad ustawienia tabeli:
$sql = "CREATE TABLE nazwatabeli" . "(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
pole1 VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL,
pole2 VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
db.php
<?php
const SERVER_NAME = 'localhost';
const SERVER_USERNAME = 'root';
const SERVER_USERNAME_PASSWORD = 'pass';
const SERVER_DATABASE_NAME = 'nazwabazy';
const SERVER_TABLE_NAME = 'nazwatabeli';
?>
formularz.php
<?php
include_once 'db.php';
function PokazForm($server, $username, $password, $database, $table, $name)
{
$mysqli = new mysqli($server, $username, $password, $database);
if ($mysqli->connect_error)
{
return ("Błąd połączenia z MySQL: " . $mysqli->connect_error);
}
$sql = "SELECT `id`, `pole1`, `pole2` FROM $table WHERE pole1='$name'";
$result = $mysqli->query($sql);
if ($result->num_rows > 0)
{
echo "<form method=post action=\"index.php\">";
while($row = $result->fetch_assoc())
{
echo "<input type=\"hidden\" value=\"" . $row['id'] . "\" name=\"id\">"; echo "<input name=\"pole1\" value=\"" . $row['pole1'] . "\"><br>"; echo "<input name=\"pole2\" value=\"" . $row['pole2'] . "\"><p>";
}
echo "<input type=\"submit\" value=\"dalej\"></form>";
} else
{
print "Znaleziono: 0 wpisów";
}
$mysqli->close();
}
PokazForm(SERVER_NAME, SERVER_USERNAME, SERVER_USERNAME_PASSWORD, SERVER_DATABASE_NAME, SERVER_TABLE_NAME, 'tresc pola 1'); // 'tresc pola 1' jest to string ktory bedzie porownywany z wartoscia z tabeli w zapytaniu WHERE
?>
index.php // update
<?php
include_once 'db.php';
function update($server, $username, $pass, $dbname, $tablename, $pole1, $pole2, $id)
{
$mysqli = new mysqli($server, $username, $pass, $dbname);
if ($mysqli->connect_error)
{
return ("Błąd połączenia: " . $mysqli->connect_error);
}
$pole1 = $mysqli->real_escape_string($pole1);
$pole2 = $mysqli->real_escape_string($pole2);
$id = $mysqli->real_escape_string($id);
$id = (int)$id;
if ($stmt = $mysqli->prepare("UPDATE $tablename SET pole1 = ?, pole2 = ? WHERE id = ?"))
{
$stmt->bind_param('ssi', $pole1, $pole2, $id);
$stmt->execute();
$stmt->close();
$mysqli->close();
}
else {
exit('blad aktualizacji');
}
}
update(SERVER_NAME, SERVER_USERNAME, SERVER_USERNAME_PASSWORD, SERVER_DATABASE_NAME, SERVER_TABLE_NAME, $_POST['pole1'], $_POST['pole2'], $_POST['id']);
?>
Nalezaloby to wszystko zrobic na jednej sesji ktora trzebaby sprawdzic przed samą aktualizacja; jesli istnieje to przekierowac do pliku z formularzem i na samym jego poczatku usunac ja. Sama sesje ustawic tuz przed wyswietleniem informacji o zaktualizowaniu.
To ochroni przed dodawaniem danych przy odswierzeniu strony.
czyli:
<?php
include_once 'db.php';
function PokazForm($server, $username, $password, $database, $table, $name)
{
if(isset($_SESSION['odswierzenie'])) {
unset($_SESSION['odswierzenie']);
}
$mysqli = new mysqli($server, $username, $password, $database);
if ($mysqli->connect_error)
{
return ("Błąd połączenia z MySQL: " . $mysqli->connect_error);
}
$sql = "SELECT `id`, `pole1`, `pole2` FROM $table WHERE pole1='$name'";
$result = $mysqli->query($sql);
if ($result->num_rows > 0)
{
echo "<form method=post action=\"index.php\">";
while($row = $result->fetch_assoc())
{
echo "<input type=\"hidden\" value=\"" . $row['id'] . "\" name=\"id\">"; echo "<input name=\"pole1\" value=\"" . $row['pole1'] . "\"><br>"; echo "<input name=\"pole2\" value=\"" . $row['pole2'] . "\"><p>";
}
echo "<input type=\"submit\" value=\"dalej\"></form>";
} else
{
print "Znaleziono: 0 wpisów";
}
$mysqli->close();
}
PokazForm(SERVER_NAME, SERVER_USERNAME, SERVER_USERNAME_PASSWORD, SERVER_DATABASE_NAME, SERVER_TABLE_NAME, 'tresc pola 1');
?>
update
<?php
include_once 'db.php';
function update($server, $username, $pass, $dbname, $tablename, $pole1, $pole2, $id)
{
if(isset($_SESSION['odswierzenie'])) {
}
$mysqli = new mysqli($server, $username, $pass, $dbname);
if ($mysqli->connect_error)
{
return ("Błąd połączenia: " . $mysqli->connect_error);
}
$pole1 = $mysqli->real_escape_string($pole1);
$pole2 = $mysqli->real_escape_string($pole2);
$id = $mysqli->real_escape_string($id);
$id = (int)$id;
if ($stmt = $mysqli->prepare("UPDATE $tablename SET pole1 = ?, pole2 = ? WHERE id = ?"))
{
$stmt->bind_param('ssi', $pole1, $pole2, $id);
$stmt->execute();
$stmt->close();
$mysqli->close();
$_SESSION['odswierzenie'] = '1';
}
else {
exit('blad aktualizacji');
}
}
update(SERVER_NAME, SERVER_USERNAME, SERVER_USERNAME_PASSWORD, SERVER_DATABASE_NAME, SERVER_TABLE_NAME, $_POST['pole1'], $_POST['pole2'], $_POST['id']);
?>