V tomto návode si ukážeme ako si vytvoriť jednoduchý to-do list v PHP obohatený o jQuery AJAX a manipuláciu. Kód je veľmi voľný a dáva tak schopnosť prispôsobenia na vlastné potreby. Zoznam úloh napríklad nieje tak ďaleko od jednoduchého fóra.
Náš to-do sa skladá z niekoľkých súborov:
Poznámky budeme ukladať do MySQL databázy:
CREATE TABLE `notes` ( `id` INT PRIMARY KEY AUTO INCREMENT NOT NULL, `content` VARCHAR(500) NOT NULL )
index.html bude (zatiaľ) obsahovať len formulár. V základnej podobe bude obsahovať len textareu (kde užívateľ vkladá svoje poznámky) a tlačidlo, ktoré potvrdí poznámku. Tieto informácie sú zasielané cez POST do súboru process.php.
process.php potom spracuje informácie, ktoré boli odoslané z formulára. Nám stačí vložiť obsah do databázy, pretože id pole má auto_increment. Zobrazíme to-do list v zozname. Pridáme odkaz na odstránenie poznámky.
<?php
// Pripojenie k databáze
$connection = mysql_connect('host (usually localhost)', 'mysql_username' , 'mysql_password');
$selection = mysql_select_db('mysql_database', $connection);
// Bol formulár odoslaný?
if($_POST['submit']){
// Zmapuje obsah, ktorý bol poslaný ako form premenná. Nieje nutné, ale udržiava čistotu.
$content = $_POST['content'];
// Vloženie obsahu do databázy
$ins = mysql_query("INSERT INTO `notes` (content) VALUES ('$content')");
// Presmerovanie užívateľa späť na index stránku
header("Location:index.php");
}
/* Nezávisle od toho, či bol formulár poslaný alebo nie, zobrazí posledné poznámky */
// Nájde všetky poznámky v databáze v zostupnom poradí (posledný príspevok je prvý).
$find = mysql_query("SELECT * FROM `notes` ORDER BY id DESC");
// Začiatok zoznamu
echo '
delete.php nerobí nič viac ako mazanie poznámok. Použije id parameter, aby vyhľadal záznam v databáze. Po nájdení ho zmaže.
<?php
// Pripojenie k databáze
$connection = mysql_connect('host (usually localhost)', 'mysql_username' , 'mysql_password');
$selection = mysql_select_db('mysql_database', $connection);
//delete.php?id=IdOfPost
if($_GET['id']){
$id = $_GET['id'];
// Odstráni poznámku
$delete = mysql_query("DELETE FROM `notes` WHERE `id` = '$id'");
// Presmeruje užívateľa
header("Location:index.php");
}
?>
Náš to-do list je vlastne hotový ale je statický. Ďalšia časť pridá nášmu to-do dynamiku. Ak má užívateľ vypnutý JavaScript tak bude náš kód naďalej fungovať ale bez ďalších funkcií. Mi ostatný budeme mať rýchly a lepší to-do.
// Ak bolo kliknuté tlačidlo s id submit (submit tlačidlo)
$("#submit").click(function(){
// Načítanie obsahu textarea (obsah)
var formvalue = $("#content").val();
// Vytvorenie URL, ktoré budeme používať
var url = 'submit=1&content=' + formvalue;
// Použitie jQuery ajax funkcie pre poslanie
$.ajax({
type: "POST",
url: "process.php",
data: url,
success: function(){
// Ak úspech, upozorní užívateľa, že bola pridaná položka
$("ul").before("Pridali ste: " + formvalue + "
");
}
});
// Vráti false aby sa po stlačení tlačidla zabránilo presmerovaniu
return false;
});
Url časť pletie niektorých ľudí. Čo robíme, je posielanie požiadavky process stránke, kde musíme zahrnúť nejaké dáta s touto požiadavkou. V process.php to bol riadok
if($_POST['submit']){ if ($ _POST ['submit']) {
Skontrolujte, či if $_POST['submit'] nieje null (má hodnotu). Ak je null (nemá žiadnu hodnotu), to znamená, že formulár nebol odoslaný, zaslaním nejakej hodnoty, v našom prípade submit=1, hovoríme process.php stránke, že bolo kliknuté na tlačidlo, takže by malo spustiť zvyšok PHP skriptu. Zvyšok PHP skriptu volá obsah, ktorý posielame v url (content= ‘ + formvalue). Namiesto posielania čohokoľvek, potrebujeme iba poslať hodnotu z formuláru (obsah textarea – ktorý chce užívateľ poslať). Vrátením false na konci, zabránime tlačidlu vykonaniu svojej činnosti s action="process.php". Ak to spraví, znamená to, že stránka sa obnoví po odoslaní informácií, čo je presne to, čo nechceme.
Kód, ktorý obsluhuje mazanie poznámok je podobný.
// Skontroluje, či bolo kliknuté na odkaz (delete odkaz)
$("a").click(function(){
// Uloženie odkazu do premennej nazvanej element
var element = $(this);
// Nájdenie id odkazu, na ktorý bolo kliknuté
var noteid = element.attr("id");
// Vytvorenie url na odosielanie
var info = 'id=' + noteid;
$.ajax({
type: "GET",
url: "delete.php",
data: info,
success: function(){
element.parent().eq(0).fadeOut("slow");
}
});
// Vráti false aby sa po stlačení tlačidla zabránilo presmerovaniu
return false;
});
Keď sme zobrazovali poznámky v process.php, vyvolali sme echo id, ktoré bolo v odkaze. Potom sme získali toto id pomocou element.attr("id") a vytvorili sme URL. Takže, keď je poslaná AJAX požiadavka, bude vyzerať asi takto: delete.php?id=POSTID. Ak je AJAX požiadavka úspešná, skryje položku v zozname.
element.parent().eq(0).fadeOut("slow");
V tomto kuse kódu vyberieme element (odkaz), na ktorý bolo kliknuté. Potom nájdeme jeho rodičov a vyberieme prvého pomocou eq(0). Takže prvý rodič, ktorý je v zozname položiek (<li><a href></a></li>) pomaly zmizne.
Zatiaľ žiadne komentáre
© 2009 Shaddow
hosting od VIPHosting