[Mysql php html cl XII]

Programa are la baza notiuni generale despre baze de date , lucrul cu cod php , html , mysql.

Content management system pe scurt CMS (acronim obtinut din litere ale cuvintelor unei expresii) reprezinta un grup de aplicatii ce reduc la minim cunostintele necesare pentru a redacta site-uri.
Se folosesc programe ,meniuri si opțiuni interactive .


1.APLICATIE PRACTICA BAZE DE DATE 
Urmăriți filmul din link --->FILM cu tema practic și după crearea bazei de date alimente ,după rularea interogării incercați să alegeți opțiunea corectă . 
Motivarea alegerii oricărei opțiuni se va face în scris. 


2. CREAREA UNUI mini-MAGAZIN ONLINE – MINIAPLICATIE

 a. Baza de date trebuie creata cu atentie înainte de a redacta formularul asociat . 

b. Vom începe cu crearea formularului de administrare a magazinului .
FORMULAR CE SE POATE REDACTA CU SIMFATIC FORMS , COFFE CUP HTML MAKER , WEB PAGE MAKER ETC  

Administratorul paginii  poate introduce în pagina de administrare pretul , denumirea , descrierea produsului , o imagine relevantă.
Fiecare element al paginii trebuie foarte bine stilizat cu CSS.
Dacă avem un număr mare dev fișiere folosim Sass și un compilator ce aplică tuturor fișierelor stilul dorit automatizând procesul .
Pentru redactarea primară a unui formular se poate merge mai repede cu un editor specializat cum ar fi Symfatic Form .
Efectul se vede mai sus , după doar câteva clicuri (captcha code etc ).
Avem si un validator de date.





3.APLICATIE PRACTICĂ Crearea unui formular in PHP7 si rularea in server XAMPP
  
Redactati in NOTEPAD ++:
<?php
echo(“<form><input type =’text’ name=’t’ id=’t’ ></form>”);
$e=$_REQUEST[‘t’];
echo($e.”  este textul scris in formular “);
?>

SALVATI cu numele aplic1.php in C:/XAMPP/htdocs .
Porniti serverul XAMPP , apoi porniti serverele Apache si MySQL.
Scrieti in browser adresa http;//localhost/aplic1.php
EXPLICATII
·        trebuie sa avem XAMPP instalat
·        echo permite redactarea codului HTML direct in PHP numai daca acesta e scris intre ghilimele
·        ghilimelele din instructiunea echo nu au voie sa aiba alte ghilimele in interior si de aceea in interior se pun in locul ghilimelelor apostrofuri
·        $_REQUEST – permite preluarea in php 7 a datelor din formular
·        datele se introduce in PHP cu ajutorul formularelor in mod uzual

·        de regula rezultatele prelucrarii se afiseaza pe ecran 



4. APLICATIA  2 in php - suma primelor 100 de numere din intervalul [1,100]


<?php

$s=0;$i=0;

for($i=1;$i<=100;$i++) $s=$s+$i;
echo ("s=".$s);
?>

5.BAZE DE DATE 

 Baza de date e alcătuită din fișiere , din colecții de date , din
înregistrari,din tabele . De regulă atât baza de date cât și tabela din ea au o denumire . 
Colectia are numai date de acelasi tip , Intre colectii  apar relatii tip unu la unu , unu la mai multe , mai multe la mai multe , Exista riscul de a aparea dubluri in baza de date si de aceea se procedeaza la normalizarea datelor (I-a forma normala pana la a V-a forma normala )
O modelare a unei baze de date presupune crearea unei relatii intre Entitatea supusa modelarii , Atributele sale , Valorile atributelor .
Pentru a realiza un site cu baze de date asociate se poate folosi online  aplicatia CPANEL.
E un exemplu de CMS.

Offline se poate realiza un site cu NOTEPAD++, WINLAMP ,XAMPP,,EASYPHP, SQLYOG,
Winlamp are tot ce trebuie : server Apache, server php, server Mysql
XAMPP are server Apache , Mysql , phpmyadmin e f util la realizarea unor pagini WEB deoarece are update-uri frecvente si e util în asociere cu NOTEPAD++ și cu un browser cu funcții extinse 

6. TEST (pt notă)
Realizati o diagrama ENTITATE -RELATIE pt modelarea unei baze de date utila in reprezentarea unei retele de calculatoare . Sunt relevante aspecte cum ar fi ip , numele calc , sist de op , etc .Modelul e dat nai jos si se face in WORD cu INSERARE-->SMART ART
Realizati in CPANEL o baza de date cu aplicatia mysql numita retea . 
Apoi introduceti date cu aplicatia phpMyAdmin.







Mai sus e o modelare de tip entitate+atribute+valori realizată in WORD .
La sustinerea atestatelor la  proba practica e utila utilizarea diagramelor. 

Mai jos apar pe pagina cum vor arăta în final cadrele pt pagini web externe și formularele .
Să reținem ca se completează formulare , se transmit prin metode post sau get sau acțiune mailto. Daca setăm un automat de procesare e-mailuri  sau un script php pt prelucrare vom putea să prelucram informația  primită de la formulare .
În fapt cu cpanel se face baza de date , dar baza de date este alimentata cu informație prin formulare.
Se folosesc șabloane ca cele prezentate  aici. Fara răbdare și cunoștințe minime nu se pot face aceste formulare să funcționeze.
Notiuni utile pt crearea de pagini web cu HTML si Javascript gasim la :EXEMPLE


7.HTML


Cadre iframe 

Cadrele sunt pagini WEB incluse in forma minimizata in pagina gazda . 
Mai jos avem un exemplu in HTML . Daca browserul da eroare avem un mesaj.

<!DOCTYPE html>
<html>
<body>

<iframe src="http://www.google.ro">
  <p>Your browser does not support iframes.</p>
</iframe>

</body>
</html>

Acest cadru cu instrucțiunea HTML iframe nu mai funcționează în browsere si sisteme de operare mai actuale .
Se preferă frameset cu stabilirea lățimii coloanelor și a înălțimii rândurilor , elementele cadre fiind mentionate cu tag-ul HTML src :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A simple frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
  <FRAMESET rows="100, 200">
      <FRAME src="http://lectiideticsiinfo.blogspot.ro">
      <FRAME src="http://slither.io">
  </FRAMESET>
  <FRAME src="http://descopera.ro">
  <NOFRAMES>
      <P>This frameset document contains:
      <UL>
         <LI><A href="http://google.ro">Some neat contents</A>
         <LI><IMG src="http://edu.ro" alt="A neat image">
         <LI><A href="http://descopera.ro">Some other neat contents</A>
      </UL>
  </NOFRAMES>
</FRAMESET>
</HTML>




8.Formulare web (pt teza si pt teste practice )

La probe practice se vor introduce formularele de mai jos care au culoarea albastru  in site-ul generat pe 000webhost. 
Un formular este un ansamblu de zone active alcatuit din butoane ,casete de selectie,campuri de editare etc. 
Formularele va asigura construirea unori pagini Web care permit utilizatorilor sa introduca efectiv informatii si sa le transmita serverului.Formularele pot varia de la o simpla caseta de text ,pentru introducerea unui sir de caractere pe post de cheie de cautare - element caracteristic tuturor motoarelor de cautaredin Web - pana la o structura complexa ,cu multiple sectiuni ,care ofera facilitati puternice de transmisie a datelor. 
O sesiune cu o pagina web ce contine un formular cuprinde urmatoarele etape:
a. Utilizatorul completeaza formularul si il expedieaza unui server.
b. O aplicatie dedicata de pe server analizeaza formularul completat si (daca este necesar) stocheaza datele intr-o baza de date.
c. Daca este necesar serverul expedieaza un raspuns utilizatorului.
Un formular este definit intr-un bloc delimitat de etichetele corespondente <form> si </form>.
Atribute esentiale ale elementului <form>
Exista doua atribute esentiale ale elementului <form>.
1. Atributul action precizeaza ce se va intampla cu datele formularului odata ce acestea ajung la destinatie.De regula ,valoarea atributului action este adresa URL a unui script aflat pe un srver WWW care primeste datele formularului ,efectueaza o prelucrare a lor si expedieaza catre utilizator un raspuns.
<form action="http://www.yahoo.com/cgi-bin/nume_fis.cgi">.
Script-urile pot fi scrise si in limbajele Perl,C,PHP,Unix shell.

In urmatorul exemplu folosim evenimentul click.
<form action="" method="get"> 
<input type="button" value="Apasa!" onClick="alert('Hello!')"> </form> 

2. Atributul method precizeaza metoda utilizata de browser pentru expedierea datelor formularului.Sunt posibile urmatoarele valori:
  • get (valoarea implicita).In acest caz ,datele din formular sunt adaugate la adresa URL precizata de atributul action;



  • - nu sunt permise cantitati mari de date
    - intre adresa URL si date este inserat un "?".
Datele sunt adaugate conform sintaxei: nume_camp = valoare_camp. Intre diferite seturi de date este introdus un "&".
Exemplu:
"http://www.yahoo.com/cgi-bin/nume_fis.cgi?nume1 = valoare1&nume2 = valoare2";
  • post In acest caz datele sunt expediate separat. Sunt permise cantitati mari de date
Pentru ca un formular sa fie functional, trebuie precizat ce se va intampla cu el dupa completarea si expediere.
Cel mai simplu mod de utilizare a unui formular este expedierea acestuia prin posta electronica (e-mail).
Pentru aceasta se foloseste un atribut al etichetei <form> si anume
action care primeste ca valoare " mailto: " concatenat cu o adresa valida de e-mail catre care se va expedia formularul completat.

Un formular cu un camp de editare si un buton de expediere
Majoritatea elementelor unui formular sunt definite cu ajutorul etichetei <input>. Pentru a preciza tipul elementului se foloseste atributul type al etichetei <input>. Pentru un camp de editare, acest atribut primeste valoarea "text". Alte atribute pentru un element <input> sunt:
  • atributul name ,permite atasarea unui nume fiecarui element al formularului.
  • atributul value ,care permite atribuirea unei valori initiale unui element al formularului.
Un buton de expediere al unui formular se introduce cu ajutorul etichetei <input>, in care atributul type este configurat la valoarea "submit".Acest element poate primi un nume prin atributul name. Pe buton apare scris "Submit Query" sau valoarea atributului value ,daca aceasta valoare a fost stabilita.
<html>
<head><title>
Formular </title></head>
<body><h1>
Un formular cu un camp de editare si un buton de expediere</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">

Numele:
<input type="text" name="numele" value="Numele si prenumele"><br>

<input type="submit" value="expedieaza"> </form></body>
</html>

Pentru elementul <input> de tipul camp de editare (type = "text") , alte doua atribute pot fi utile:
  • atributul size specifica latimea campului de editare depaseste aceasta latime ,atunci se executa automat o derulare acestui camp;
  • atributul maxlength specifica numarul maxim de caractere pe care le poate primi un camp de editare; caracterele tastate peste numarul maxim sunt ignorate.
Observatii:
- daca atributul type lipseste intr-un element <input> , atunci campul respectiv este considerat in mod prestabilit ca fiind de tip "text".
- formularele cu un singur camp (de tip text) nu au nevoie de un buton de expediere, datele sunt expediate automat dupa completarea si apasarea tastei ENTER.

Butonul Reset
Daca un element de tip <input> are atributul type configurat la valoarea "reset" ,atunci in formular se introduce un buton pe care scrie "Reset". La apasarea acestui buton ,toate elementele dinn formular primesc valorile prestabilite (definita odata cu formularul ), chiar daca aceste valori au fost modificate de utilizator.
Un buton Reset poate primi un nume cu ajutorul atributului
name si o valoare printr-un atribut value.
Un asemenea buton afiseaza textul "Reset" daca atributul
value lipseste, respectiv valoarea acestui atribut in caz contar.
<html>
<head><title>
formex_2</title></head>
<body><h1>
Un formular cu un buton reset</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">

Introduceti numele:
<input type="text" name="nume" value="Numele"><br>
Introduceti prenumele:
<input type="text" name="prenume" value="Prenumele"><br>

<input type="reset" value="sterge"> <input type="submit">
</form></body>
</html>

Camp de editare de tip "password"
Daca se utilizeaza eticheta <input> avand atributul type configurat la valoarea "password" , atunci in formular se intyroduce un element asemanator cu un camp de editare obisnuit (introdus prin type="text").
Toate atributele unui camp de editare raman valabile.
Singura deosebire consta in faptul ca acest camp de editare nu afiseaza caracterele in clar,ci numai caractere *,care ascund de privirile altui utilizator aflat in apropiere valoarea introdusa intr-un asemenea camp.
La expedierea formularului insa, valoarea tastata intr-un camp de tip "password" se transmite in clar.
<html>
<head><title>
formex_3</title></head>
<body><h1>
Un formular cu un buton reset</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">

Nume:
<input type="text" name="nume" value="Numele"><br>
Prenume:
<input type="text" name="prenume" value="Prenumele"><br>
Password:
<input type="password" name="parola" ><br>

<input type="reset" value="sterge"> <input type="submit" value="trimite"> </form></body>
</html>
Butoane radio
Butoanele radio permit alegerea ,la un moment dat , a unei singure variante din mai multe posibile. Butoanele radio se introduc prin eticheta <input> cu atributul type avand valoarea "radio".
<html>
<head><title>
formex_4</title></head>
<body><h1>
Un formular cu butoane radio</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">

Alegeti sexul:
<input type="radio" name="sex" value="b"><br>
Femeiesc:
<input type="radio" name="sex" value="f"><br>

<input type="reset"> <input type="submit"> </form></body>
</html>
La expedierea formularului se va transmite una dintre perechile "sex=b" sau "sex=f",in functie de alegerea facuta de utilizator.


Casete de validare
O caseta de validare (checkbox)permite selectarea sau deselctarea unei optiuni.
Pentru inserarea unei casete de validare se utilizeaza eticheta <input> cu atributul
type configurat la valoarea "checkbox".
Observatii:
- fiecare caseta poate avea un nume definit prin atributul name.
fiecare caseta poate avea valoarea prestabilita "selectat" definita prin atributul
checked.
<html>
<head><title>
formex_5</title></head>
<body><h1>
Un formular cu casete checkbox</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">

Alegeti meniul:
<br>
Pizza
<input type="checkbox" name="pizza" value="o portie">
Nectar <input type="checkbox" name="nectar" value="un pahar">
Bere
<input type="checkbox" name="bere" value="o sticla">
Cafea
<input type="checkbox" name="cafea" value="o ceasca"><br>
<input type="reset"> <input type="submit"> </form></body>



9. INSTRUCTIUNI PHP SI INSTRUCTIUNI MYSQL

Sa retinem ca instructiunile in php se scriu conform unor reguli
  • prefaţate de marcajul <? php 
  • se termină cu marcajul ?>
  • variabilele se prefixează obligatoriu cu semnul $
  • echo sau print e folosit pt scriere , daca se trece o secvenţă de cod HTML intre ghilimele este executată 
  • se preiau date din formulare sau alte variabile din pagini web cu instructiunea import 
  • intre ghilimele se pun apostrofuri chiar dacă sintaxa ar cere în mod obişnuit tot ghilimele 
  • este limbajul utilizat pt a prelua date din formulare , pt a opera ulterior cu aceste date 
  • exista posibilitatea de a opera usor cu baze de date create in MYSQL .
Formularul din pagina de mai jos va trimite valorile unor variabile  numite username si email la o un script php aflat in fisierul foo.php. Fisierul poate sa fie index.html.
Metoda este post-o metoda mai sigura decat get si transmiterea datelor se face efectiv prin apasarea butonului submit .
FISIERUL index.html
<html>
<head><title >  form </title></head>
<body>
<fieldset>
<center>
<legend>
<p>
<b>
 <font size="+3" color="#FAF">                      
Form with  name & e-mail </b>
</p> </font>
</legend>
</div>
<form action="foo.php" method="post">
    Name:  <input name="username" /><br />
    Email: <input name="email" /><br />
    <input name="submit" value="Submit me!" />
</form>
</fieldset>
</body>
</html>



Fiserul foo.php va contine 
<?php
// Available since PHP 4.1.0

   echo $_POST['username'];
   echo $_REQUEST['username'];

   import_request_variables('p', 'p_');
   echo $p_username;

// Available since PHP 3. As of PHP 5.0.0, these long predefined
// variables can be disabled with the register_long_arrays directive.

   echo $HTTP_POST_VARS['username'];

// Available if the PHP directive register_globals = on. As of
// PHP 4.2.0 the default value of register_globals = off.
// Using/relying on this method is not preferred.

   echo $username;
?>
VOM PUBLICA AMBELE FISIERE  CU CPANEL  

Observam ca :

  • $_POST preia variabilele transmise prin metoda POST
  • p este variabila in care se preiau datele , are un alias p_
  • se utilizeaza $p_username sau $p_email pt avea acces la datele formularului aflat in fisierul cu extensie .html
  • http://ideone.com/X7Z79I e un exemplu f simplu de cod online 
Limbajul Mysql permite crearea de baze de date , tabele in aceste baze de date .
Tabelele au campuri ce pot fi de tip numeric , boolean , text , varchar , memo, blob etc 
Dupa ce cream structura se pun inregistrari in baza de date si se pot rula interogari precum cele de la linkul de mai jos :
Observam lucruri simple  :
  • SELECT e folosita cu filtre WHERE si FROM pt a afisa date din tabele 
  • datele o data modificate se foloseste instr UPDATE pt ca baza de date sa arate si in pagina web modificarile 
  • stergerea se face cu DELETE 
  • Foarte important este sa urmarim  pe pagina de atestate exemplul dat ca model vom observa ca mysql_querry nu se mai utilizeaza in variante mai noi de php , la fel mysql_connect ,multe alte functii au disparut fata de variantele vechi ale php-in linkul model2 aveti un extras dintr-un tutorial php-mysql .Cititi despre mysqli_connect ,mysqli_querry

exemplu de aplicare a formularelor si cadrelor

OPERATII cu baze de date MYSQL in script php 
-stergerea din baza de date  necesita adaugarea in scriptul php a unei instructiuni de genul :
$sql = "DELETE FROM tabela where camp='valoare'";
Observam ca in scriptul php nu avem voie sa punem ghilimele intre alte ghilimele .
Se vor inlocui ghilimelele cu apostrofuri.
-cautarea in baza de date se face cu operatorul MYSQL like in genul:
$sql = "SELECT * FROM tabela where camp1  or camp2 or camp3…. like '%$term%'";
Unde variabila $term = mysqli_real_escape_string( $_POST['term']);
Aici este logic ca term este un id sau un name de element dinttr-un formular WEB .
<form action="search.php" method="post">

Search: <input type="text" name="term" />
<br />

<input type="submit" name="submit" value="Submit" />


</form>






->MODELUL in rezolvarea subiectelor pt baze de date