Įvairūs Internetas, tinklapių kūrimas

 PHP + MySQL

Viskas apie internetą, tinklapių kūrimą, pamokos, patarimai

Standartinė Dilex » 2010 Bal 02, 16:21

Sveiki. Neseniai pradėjau mokytis pats programuot, o forume kiek mačiau yra tik php pradžiamokslis (tikiuosi nepražiopsojau ir tokios pamokos nėra :D ). Tai va, galvoju irgi truputį supažindinti su PHP ir Mysql. Jei nežinot - MySQL tai duomenų bazė.

Pradėsim nuo duomenų bazės.

//1. Config.php

Susikursime config.php failą, tam kad nereiktų kiekvieną kartą failuose vesti duomenų bazės (toliau - db) duomenų ar galėtume juos pakeisti ir visu automatiškai pasikeisti.

Kodas: Pasirinkti visus
<? //trumpoji php failo pradžia (ilgoji - <?php)
$dbserver = 'localhost'; //db serveris (dazniausiai localhost)
$dbuser = 'root'; //db vartotojo vardas
$dbpass = ''; //db vartotojo slaptažodis
$dbname = 'test' //duomenų bazės pavadinimas (vienam vartotojui jų galima susikurti kiek nori ar kiek leidžia hostingas)
?> //php failo/scripto pabaiga


P.S. $dbserver/$dbuser ir kt. (su $ pradžioje) yra kintamieji. Jeigu jau žinote apie kintamuosius, praleiskite antrą punktą.

//2. Kintamieji

Nežinau apibūdinimo kas yra kintamieji, bet savais žodžiais sakyčiau, kad kažkas, kas laiko informaciją :D Vienas pavyzdys:
Kodas: Pasirinkti visus
<?
$fraze = 'Mokausi PHP';
echo $fraze; // Mums parašys: Mokausi PHP (echo - viena pagrindinių php komandų, kuri išveda tekstą (taip pat yra print))
?>


Su kintamaisiais galima ir daryti įvairius aritmetinius veiksmus.
Kodas: Pasirinkti visus
<?
$skaicius1 = 5;
$skaicius2 = 8;
$skaicius3 = 15;
$rezultatas = $skaicius3 - $skaicius2 - $skaicius1; //15 - 8 - 5
echo $rezultatas; //išves: 2
?>


Šiek tiek sudėtingesnis pvz. While funkcija - tai iš anglų išvertus jau maždaug galim suprasti (while - kol). Naudojimas:
While(sąlyga){
daryti užklausą
};
Pvz:
Kodas: Pasirinkti visus
<?
$i = 1; //prilyginame kintamąjį $i vienetui
while($i < 10){ //kol $i mažesnis už 10...
echo $i; //išvedame $i reikšmę
$i++ //padidiname $i reikšme vienu
}; //mums išves: 123456789, nes kai $i bus 10 while sąlyga nebeatitiks
?>



//3. Duomenų bazės parengimas

Sukursime duomenų bazėje lentelę. Pavadinsim ją tarkim users (vartotojai).Mums joje reikės stulpelių: vartotojo id, vardas, slaptažodis ir tarkim el. paštas. Galit vykdyti užklausą per phpMyAdmin, arba pasidaryt php failiuką ir jį paleist. Užklausa turi atrodyti taip:
CREATE TABLE pavadinimas (stulpelis tipas(x) parametrai, stulpelis2 tipas(x) parametrai)
Tipai būna įvairūs, mes naudosime:
smallint - mažas skaičius
varchar - tekstas iki 256 simbolių
Nurodydami tipą, skliausteliuose turite nurodyti max simbolių skaičių.
Mūsų užklausa turėtų atrodyti taip:
Kodas: Pasirinkti visus
CREATE TABLE users (id smallint(5) NOT NULL auto_increment, user_name varchar(50) NOT NULL, user_pass varchar(50) NOT NULL, email varchar(50) NOT NULL, UNIQUE id (id), PRIMARY KEY (id))

UNIQUE ir PRIMARY KEY komandomis, nustatome, kad id yra pirminis raktas ir negali kartotis. auto_increment komanda padaro, kad kiekviena karta id būtų vienu didesnis nei praeitas.

Php užklausa atrodytų taip:
Kodas: Pasirinkti visus
<?
mysql_query("CREATE TABLE users (id smallint(5) NOT NULL auto_increment, user_name varchar(50) NOT NULL, user_pass varchar(50) NOT NULL, email varchar(50) NOT NULL, UNIQUE id (id), PRIMARY KEY (id))");
?>




//4. Įrašymas į duomenų bazę

Padarysime registraciją. HTML forma (čia nesismulkinsiu, man atrodo yra forume apie HTML daugiau):
Kodas: Pasirinkti visus
<form action="register.php" method="post"> //pradedame formą, užpildžius eis į register.php, o duomenis perduos post metodu
Vartotojo vardas:<br>
<input type="text" maxlenght="50" name="username"><br>
Slaptažodis: <br>
<input type="password" maxlenght="50" name="password"><br>
Pakartokite slaptažodį: <br>
<input type="password" maxlenght="50" name="password_check"><br>
El. pašto adresas: <br>
<input type="text" maxlenght="50" name="email"><br>
<input type="submit" value="registruotis">
</form>


PHP dalis. Paimsime duomenis ir įdėsime juos į duomenų bazę.
Kodas: Pasirinkti visus
<?
include("config.php") //pareikalaujame config.php failo (nes ten mūsų duomenų bazės duomenys))
$username = $_POST['username']; //$username kintamojo reikšmę nustatome į įvesto vartotojo vardo
$password = $_POST['password'];
$password_check = $_POST['password_check'];
$userpass = md5(md5($password)); //užkoduojame slaptažodį (šią reikšmę ir kišim į db)
$email = $_POST['email'];
mysql_connect($dbserver,$dbuser,$dbpass); //jungiames prie mysql db
mysql_select_db($dbname) or die("Klaida renkantis duomenų bazę"); //pasirenkame mūsų db. Jeigu neišeina - meta klaidą "Klaida renkantis duomenų bazę"
if($password == $password_check){ //jeigu abu įvesti slaptažodžiai sutampa...
mysql_query("INSERT INTO users VALUES('','$username','$userpass','$email')"); //į db įdedame reikšmes: '' - id nerašome ir jį duos automatiškai vienu didesnį nei praeitas, vartotojo vardą, slaptažodį ir emailą
echo 'Sėkmingai užsiregistravote.'; //parašo - "Sėkmingai užsiregistravote"
}else{ //o jeigu slaptažodžiai nesutampa
echo 'Slaptažodžiai nesutapo'; //parašome textą
}; //užbaigiame if() sąlygą
?>

Ir registracija baigta (paprastasis variantas, dar reiktų dadėti patikrinimą, ar nėra tokio vartotojo vardo). Ėmimas duomenis iš db:
Kodas: Pasirinkti visus
mysql_connect .... //prisijungiam ir taip toliau
//Tarkim turim vartotojo vardą (kurį įvedė) ir imam iš duomenų bazės eilutę, kurioje būtų toks vardas
$username = $_POST['user_name'];
$query = "SELECT * FROM users WHERE username='$username'"; //nustatome kokia bus užklausa (PASIRINKTI *(viską) IŠ users KUR vartotojovardas lygus kintamąjam (įvestam)
$result = mysql_query($query) //$result reikšmė tai užklausos įvygdymas
$rows = mysql_num_rows($result) //mysql_num_rows - suskaičiuoja kiek yra eilučių rezultate
if($rows == 0){ //jeigu eilučių nulis, reiškia tokio  vartotojo vardo nėra
}else{ //jeigu ne nulis, reiškia toks vartotojo vardas jau yra
};

Atvaizduoti duomenis iš MySQL:
Kodas: Pasirinkti visus
<?
....
//Tarkim turim vartotojo vardą. Atvaizduosime duomenis iš jo:
$result = mysql_query("SELECT * FROM users WHERE username='$username"); //jau matyta eilutė :D
$id = mysql_result($result,'0','id') //mysql_result komanda ištraukia pačius duomenis. Struktūra: mysql_result(resultatas,eilutė,stulpelis). Kadangi šiaip turėtų būt tik viena eilutė su vienu vartotojo vardu, todėl eilutę rašom 0.
//Kitus duomenis taip pat išsitraukiam
$email = mysql_result($result,'0','email');
echo $id; //parašo vartotojo id
echo $email; //parašo vartotojo el. paštą
?>


Šiam kartui tiek. Vėliau padarysiu login'ą, kaip naudot sessijas (vietoj cookies) ir kaip padaryt pvz user-listą (kad visus vartotojus atvaizduotų).
Vartotojo avataras
Dilex
Profesionalus dalyvis
 
Pranešimai: 2016
Miestas: Maidstone
Medaliai: 7
Taškai: 1205

Reputacija: 40 Pridėti reputacijos tašką

Standartinė known » 2010 Bal 05, 11:29

+rep, tik manau cia per dau greitai persokta prie pilnos registracijos formos :D
Paveikslėlis
Vartotojo avataras
known
Įsijaučiantis
 
Pranešimai: 106
Miestas: Vilnius
Taškai: 68

Kovų lygis: N

Reputacija: 0 Pridėti reputacijos tašką

Standartinė Dilex » 2010 Bal 05, 11:52

Nieko paprastesnio nesugalvojau, pats nuo to pradėjau :D
Vartotojo avataras
Dilex
Profesionalus dalyvis
 
Pranešimai: 2016
Miestas: Maidstone
Medaliai: 7
Taškai: 1205

Reputacija: 40 Pridėti reputacijos tašką

Standartinė Cause » 2010 Bal 11, 22:26

Na ka čia be pridursi, pradmenys :!:
Su pagarba, jūsų draugas ir kolega Cause.
Vartotojo avataras
Cause
Forumo gyventojas
 
Pranešimai: 771
Miestas: Vilnius
Medaliai: 1
Taškai: 234

Reputacija: 6 Pridėti reputacijos tašką

Standartinė tautvys92 » 2010 Geg 07, 14:17

Vartotojo avataras
tautvys92
Pradedantis
 
Pranešimai: 28
Taškai: 15

Kovų lygis: N

Reputacija: 0 Pridėti reputacijos tašką

Standartinė Dilex » 2010 Geg 14, 13:29

1. http://www.w3schools.com/
2. Tai kam apskritai šiam forume pamokos ? Juk yra šimtai puslapių su visom pamokom...
Vartotojo avataras
Dilex
Profesionalus dalyvis
 
Pranešimai: 2016
Miestas: Maidstone
Medaliai: 7
Taškai: 1205

Reputacija: 40 Pridėti reputacijos tašką



Įvairūs Internetas, tinklapių kūrimas

cron

Prisijungti

Forumo stilius

Pasirinkimas:

free tattoo Designs mezoterapija