1. Jeżeli aktualny kod jakiego używasz to ten w pierwszym poście (z wprowadzonymi w między czasie poprawkami), to:
print "<a href=\"wysw_pacjent.php?co=skasuj&pacjentid='.$pacjentid.'\">skasuj</a></td><td>\n"; print "<a href=\"wysw_pacjent.php?co=edycja&pacjentid='.$pacjentid.'\">edycja</a></td>\n";
powinno być:
print "<a href=\"wysw_pacjent.php?co=skasuj&pacjentid=$pacjentid\">skasuj</a></td><td>\n"; print "<a href=\"wysw_pacjent.php?co=edycja&pacjentid=$pacjentid\">edycja</a></td>\n";
Formularz z kolei powinien przesyłać query string:
print '<form METHOD="POST" action="?co=popraw">Poprawa danych:';
trzeba było też wywalić :
$pacjentid .= $miejscowosc = $rekord['miejscowosc'];
w bazie danych pacjentid jest liczbą wiec mysql musi to samo otrzymać, a nie zlepek jakichś informacji.
w bazie danych nie ma kolumny imie, a w zapytaniach jej uzywasz więc trzeba ją stworzyć w bazie danych
zapisywanie peselu jako int to zly pomysl bo co sie wtedy stanie z peselami np. urodzonych w 2001 dzieci: 01123199999, w bazie zostaną zapisane jako: 1123199999, imo lepiej zapisywac pesel jako string
Podsumowywując:
kod jaki zrobiłem:
<?
die("nie mozna polaczyc sie z mysql"); die("nie mozna polaczyc sie z mysql");
if ($_POST['co'] == 'popraw') {
if ($_POST['imie'] && $_POST['nazwisko'] && $_POST['pesel'] && $_POST['miejscowosc']) {
$query = "UPDATE pacjent SET imie='" . $_POST['imie'] . "', nazwisko ='" . $_POST['nazwisko'] . "',";
$query.= "pesel='" . $_POST['pesel'] . "', miejscowosc ='" . $_POST['miejscowosc'] . "',";
$query.= "data_rec ='" . $_POST['data_rec'] . "', recepta ='" . $_POST['recepta'] . "',";
$query.= "leczenie ='" . $_POST['leczenie'] . "' WHERE pacjentid='" . $_POST['pacjentid'] . "';";
}
} elseif ($_GET['co'] == 'edycja') {
$query = "SELECT * FROM pacjent WHERE pacjentid='" . $_GET['pacjentid'] . "';";
$pacjentid = $rekord['pacjentid'];
$imie = $rekord['imie'];
$nazwisko = $rekord['nazwisko'];
$pesel = $rekord['pesel'];
$miejscowosc = $rekord['miejscowosc'];
$data_rec = $rekord['data_rec'];
$recepta = $rekord['recepta'];
$leczenie = $rekord['leczenie'];
print '<form METHOD="POST" action="?co=popraw">Poprawa danych:'; print '<input type="hidden" name="co" VALUE="popraw">'; print '<input type="hidden" name="pacjentid" VALUE="' . $pacjentid . '">'; print '<tr><td>Imię:</td><td><input type="text" name="imie" VALUE="' . $imie . '"></td></tr>'; print '<tr><td>Nazwisko:</td><td><input type="text" name="nazwisko" VALUE="' . $nazwisko . '"></td></tr>'; print '<tr><td>Pesel:</td><td><input type="text" name="pesel" VALUE="' . $pesel . '"></td></tr>'; print '<tr><td>Miejscowość:</td><td><input type="text" name="miejscowosc" VALUE="' . $miejscowosc . '"></td></tr>'; print '<tr><td>Data recepty:</td><td><input type="date" name="data_rec" VALUE="' . $data_rec . '"></td></tr>'; print '<tr><td>Recepta:</td><td><input type="text" name="recepta" VALUE="' . $recepta . '"></td></tr>'; print '<tr><td>Leczenie:</td><td><input type="text" name="leczenie" VALUE="' . $leczenie . '"></td></tr>'; print '</table><input type="submit" VALUE="popraw"></form>'; } elseif ($_GET['co'] == 'skasuj') {
("DELETE FROM pacjent WHERE pacjentid= '" . $_GET['pacjentid'] . "';");
}
print "<table cellpadding=5 border=1>"; print "<tr><td><b>Imię</b></td>"; print "<td><b>Nazwisko</b></td>"; print "<td><b>Pesel</b></td>"; print "<td><b>Miejscowość</b></td>"; print "<td><b>Data recepty</b></td>"; print "<td><b>Recepta</b></td>"; print "<td><b>Leczenie</b></td></tr>\n"; $pacjentid = $rekord['pacjentid'];
$imie = $rekord['imie'];
$nazwisko = $rekord['nazwisko'];
$pesel = $rekord['pesel'];
$miejscowosc = $rekord['miejscowosc'];
$data_rec = $rekord['data_rec'];
$recepta = $rekord['recepta'];
$leczenie = $rekord['leczenie'];
print "<tr><td>$imie</td><td>$nazwisko</td><td>$pesel</td><td>$miejscowosc</td><td>$data_rec</td><td>$recepta</td><td>$leczenie</td><td>"; print "<a href=\"wysw_pacjent.php?co=skasuj&pacjentid=$pacjentid\">skasuj</a></td><td>\n"; print "<a href=\"wysw_pacjent.php?co=edycja&pacjentid=$pacjentid\">edycja</a></td>\n"; }
?>
Baza danych
Kod
CREATE TABLE IF NOT EXISTS `pacjent` (
`pacjentid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`haslo` char(50) DEFAULT NULL,
`imie` varchar(50) NOT NULL,
`nazwisko` char(50) DEFAULT NULL,
`pesel` varchar(11) DEFAULT NULL,
`miejscowosc` char(100) DEFAULT NULL,
`data_rec` date DEFAULT NULL,
`recepta` char(100) DEFAULT NULL,
`leczenie` char(250) DEFAULT NULL,
PRIMARY KEY (`pacjentid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3;
--
-- Zrzut danych tabeli `pacjent`
--
INSERT INTO `pacjent` (`pacjentid`, `haslo`, `imie`, `nazwisko`, `pesel`, `miejscowosc`, `data_rec`, `recepta`, `leczenie`) VALUES
(2, 'asd1234', 'jacek', 'nowak', '01123199999', 'Jaslo', '2012-03-31', 'poglupieli z cenami lekow', 'drogie panie, drogie');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Uwaga:
Kod ten nie jest zabezpieczony przed atakami typu SQL INJECTION, co może doprowadzić do kradzieży danych przechowywanych w bazie danych (jeżeli skrypt będzie publicznie dostępny i jakiś haker się zainteresuje). Więc radzę zapoznać się z bezpieczeństwem aplikacji PHP/MYSQL