Dodawanie rekordów do bazy za pomocą formularza

Jak połączyć się z serwerem i bazą danych mysql?
10 sierpnia 2012
ID następnego rekordu
26 października 2014

Dodawanie rekordów do bazy za pomocą formularza

Artykuł opisuje jak w bardzo prosty sposób można dodawać rekordy do bazy za pomocą formularza. Skrypt umożliwi nam również usuwanie oraz edycję danego rekordu. Formularz będzie służył do dodawania ogłoszeń sprzedaży.

Całą zabawę zaczynamy od stworzenia bazy danych. Zakładam że moja baza danych będzie stworzona z dwóch tabel. Pierwsza tabela będzie odpowiedzialna za kategorie ogłoszenia, druga za konkretne ogłoszenie. Poniżej przedstawiam schemat bazy:

Baza danych do obsługi ogłoszeńPoniżej kod tworzący tabele:

[sql] CREATE TABLE kategorie(
idK Int NOT NULL,
nazwa Varchar(35) NOT NULL
)ENGINE = MyISAM;

ALTER TABLE kategorie ADD PRIMARY KEY (idK);

CREATE TABLE ogloszenie(
idO Int NOT NULL,
tytul Varchar(100) NOT NULL,
tresc Text NOT NULL,
data_dodania Date NOT NULL,
idK Int
)ENGINE = MyISAM;

ALTER TABLE ogloszenie ADD PRIMARY KEY (idO);

ALTER TABLE ogloszenie ADD CONSTRAINT idK_idO FOREIGN KEY (idK) REFERENCES kategorie (idK) ON DELETE NO ACTION ON UPDATE NO ACTION; [/sql]

Teraz czas na napisanie pierwszego formularza do dodawania/edycji/usuwania kategorii. Z TEGO wpisu wybieramy sposób połączenia się z bazą danych. Poniżej znajduje się zawartość pliku dodaj_kategorie.php:

[php]<?php
ob_start();
require_once ‚polaczenie_z_baza.php’;
// dodanie kategorii do bazy
if(isset($_POST[‚dodaj_kategorie’])){
$nazwa_kategorii = $_POST[‚nazwa_kategorii’]; // pobranie nazwy kategori z formularza
mysql_query(„INSERT INTO kategorie VALUES (”, ‚$nazwa_kategorii’)”); // zapisa nazwy kategorii do bazy danych
header(„Location: dodaj_kategorie.php”); // przekierowanie
}
// KONIEC

//zmienne pomocnicze
$a = isset($_GET[‚a’]) ? trim($_GET[‚a’]) : NULL;
$b = isset($_REQUEST[‚b’]) ? trim($_REQUEST[‚b’]) : NULL;
$id = isset($_GET[‚id’]) ? trim($_GET[‚id’]) : NULL;
// KONIEC

// formularz do edycji kategorii
if($b == ‚edit’ and !empty($id)) { // jeśli zmienna b ma wartość „edit” i zmienna $id nie jest pusta
$wynik2 = mysql_query(„SELECT * FROM kategorie WHERE idK =’$id'”); /* mysql_query do tabeli */
if(mysql_num_rows($wynik2) == 1) { //jeśli ilość wierszy z zapytania $wynik2 jest równa 1
$r = mysql_fetch_array($wynik2); # odczytujemy zawartość wiersza z tabeli */
echo ‚<form action=”dodaj_kategorie.php” method=”post”>
<input type=”hidden” name=”b” value=”save” />
<input type=”hidden” name=”idK” value=”‚.$id.'” />
<table width=”400″ align=”center” cellpadding=”1″ cellspacing=”1″ border=”0″ class=”popraw”>
<tr>
<td width=”120″>Nowa nazwa: </td><td width=”250″><input type=”text” name=”NazwaKategorii” value=”‚.$r[‚nazwa’].'”/></td>
</tr>
<tr>
<td width=”120″>   </td><td width=”250″><input type=”submit” value=”Zmień nazwę kategorii”/></td>
</tr>
</table>
</form>’;
}
}
//KONIEC

// aktualizacja edytowanej kategorii
elseif($b == ‚save’) { # odbieramy zmienne z formularza
$id = (int)$_POST[‚idK’];  //pobranie id edytowanej kategorii z formularza
$nazwa = trim($_POST[‚NazwaKategorii’]); //pobranie nowej nazwy kategorii z formularza
mysql_query(„UPDATE kategorie SET nazwa=’$nazwa’ WHERE idK =’$id'”); //aktualizacja bazy danych
header(„Location: dodaj_kategorie.php”); // przekierowanie
}
//KONIEC

else { // formularz do dodawania kategorii
echo ‚<form action=”dodaj_kategorie.php?” method=”post”>
<table width=”400″ align=”center” cellpadding=”1″ cellspacing=”1″ border=”0″>
<tr>
<td width=”120″>Nazwa kategorii: </td><td width=”250″><input type=”text” name=”nazwa_kategorii”></td>
</tr>
<tr>
<td width=”120″>   </td><td width=”250″><input type=”submit” name=”dodaj_kategorie” value=”Dodaj kategorię”></td>
</tr>
</table>
</form><br>’;
}// koniec formularza do dodawania kategorii

// usuwanie wybranej kategorii
if($a == ‚del’ and !empty($id)) {
$CategoryID = (int) $id;
mysql_query(‚DELETE FROM kategorie WHERE idK=’.$CategoryID); //mysql_query usuwające rekord z bazy i wybranym id
header(„Location: dodaj_kategorie.php”); // przekierowanie
}
//KONIEC

//wyświetlanie kategorii z bazy danych
$znkat = mysql_query(„SELECT * FROM kategorie ORDER BY nazwa”);
$ile_wierszy = mysql_num_rows($znkat);
$wierszy_na_kolumne = ceil($ile_wierszy/2);
$mysql_query_kolumna1 = mysql_query(„SELECT * FROM kategorie ORDER BY nazwa LIMIT „.$wierszy_na_kolumne.””);
$mysql_query_kolumna2 = mysql_query(„SELECT * FROM kategorie ORDER BY nazwa LIMIT „.$wierszy_na_kolumne.”, „.$ile_wierszy.””);
echo ‚<table align=”center”>
<tr>
<td width=”300″ valign=”top”>’;
while($kolumna1 = mysql_fetch_array($mysql_query_kolumna1)) echo $kolumna1[‚nazwa’].” <b>[</b><a href=\”dodaj_kategorie.php?a=del&id={$kolumna1[‚idK’]}\”>Usuń</a><b> | </b><a href=\”dodaj_kategorie.php?b=edit&id={$kolumna1[‚idK’]}\”>Edytuj</a><b>]</b><br>”;//wyświetlamy pierwszą kolumnę
echo ‚</td>
<td width=”300″ valign=”top”>’;
while($kolumna2 = mysql_fetch_array($mysql_query_kolumna2)) echo $kolumna2[‚nazwa’].” <b>[</b><a href=\”dodaj_kategorie.php?a=del&id={$kolumna2[‚idK’]}\”>Usuń</a><b> | </b><a href=\”dodaj_kategorie.php?b=edit&id={$kolumna2[‚idK’]}\”>Edytuj</a><b>]</b><br>”;//wyświetlamy drugą kolumnę
echo ‚</td>
</tr>
</table>’;
//KONIEC
ob_end_flush();
?>[/php]

Sam kod powinien być jasny i nie sprawiać większych problemów ze zrozumieniem.

Teraz przejdźmy do pliku z formularzem dodającym owe ogłoszenie. Plik ogloszenie.php:

[php]<?php;
ob_start();
require_once ‚polaczenie_z_baza.php’;
// wyświetlenie wszystkich ogłoszeń w liście rozwijanej
$zwart = mysql_query(„SELECT * FROM ogloszenie ORDER BY idO”);
echo ‚<center><form method=”POST” action=”ogloszenie.php”>
<select name=”ktore_ogloszenie”>’;
while($rz = mysql_fetch_array($zwart)) echo ‚<option value=”‚.$rz[‚idO’].'”>’.$rz[‚tytul’].'</option>’;
echo ‚</select> <input type=”submit” name=”usun” value=”Usuń”>
</form></center>’;
//KONIECcalibri;
if(isset($_POST[‚usun’])){ //usuwanie
$id = (int)$_POST[‚ktore_ogloszenie’]; //pobranie id danego
mysql_query(„DELETE FROM ogloszenie WHERE idO=”.$id.””);
header(„Location: ogloszenie.php”);
}
if(isset($_POST[‚dodaj_ogloszenie’])){ //dodawanie  do bazy danych
$tytulogloszenia = $_POST[‚tytulogloszenia’]; //pobranie tytułu  z formularza
$trescogloszenia = $_POST[‚trescogloszenia’]; //pobranie treści
$kategoriaogloszenia = (int)$_POST[‚kategoriaogloszenia’]; //pobraniu numeru id kategorii
mysql_query(„INSERT INTO ogloszenie VALUES (”, ‚$tytulogloszenia’, ‚$trescogloszenia’, NOW(), ‚$kategoriaogloszenia’)”);
header(„Location: ogloszenie.php”);
}
// podgląd i formularz dodawania ogłoszeniacalibri;
if(!isset($_POST[‚edytuj’]) or isset($_POST[‚podglad’])) {
$tytul_podgladu = isset($_POST[‚tytulogloszenia’]) ? $_POST[‚tytulogloszenia’] : NULL;
$tresc_podgladu = isset($_POST[‚trescogloszenia’]) ? stripslashes($_POST[‚trescogloszenia’]) : NULL;
echo ‚<form action=”ogloszenie.php” method=”post”>
<table width=”600″ border=”0″ cellpadding=”1″ cellspacing=”1″ align=”center”>
<tr>
<td width=”150″>Tytuł: </td><td width=”450″><input type=”text” name=”tytulogloszenia” value=”‚.$tytul_podgladu.'”/></td>
</tr>
<tr>
<td width=”150″>Treść: </td><td width=”450″><textarea name=”trescogloszenia” rows=”25″>’.$tresc_podgladu.'</textarea></td>
</tr>
<tr>
<td width=”150″>Kategoria: </td>
<td width=”450″>
<select name=”kategoriaogloszenia”>’;
$kat = mysql_query(„SELECT * FROM kategorie ORDER BY nazwa”);
while($znk = mysql_fetch_array($kat)){
echo ‚<option value=”‚.$znk[‚idK’].'”>’.$znk[‚nazwa’].'</option>’;
}
echo ‚</select>
</td>
</tr>
<tr>’;
echo „<td width=”150″> &nbsp; </td><td width=”450″ align=”center”><input type=”submit” name=”dodaj_ogloszenie” value=”Dodaj ogloszenie”/>&nbsp;&nbsp;&nbsp;<input type=”submit” name=”podglad” value=”Podgląd”/></td>”;
echo ‚</tr>
</table>
</form><br>’;
//podgląd ogłoszenia
if(isset($_POST[‚podglad’])) {
echo ‚<table align=”center” width=”600″ border=”0″ cellpadding=”0″ cellspacing=”0″ class=”podglad”>
<tr>
<td colspan=”2″><center><b>’.$tytul_podgladu.'</b></center></td>
</tr>
<tr>
<td width=”100″ valign=”top”><u>Treść</u>: </td><td width=”450″ align=”justify”>’.$tresc_podgladu.'</td>
</tr>
</table>’;
}
//KONIEC
}
//KONIEC
ob_end_flush();
?>[/php]

I to by było na tyle 😉 Dziękuję za uwagę.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Projektowanie Graficzne