Informatica clasa IX Notiuni introductive si structuri de control

Informatica- domeniu dedicat crearii de algoritmi si programe utile in gestionarea tehnicii de calcul .Algoritmii pot fi creați pentru operarea unor baze de date , crearea și analizarea  unor modele ale unor situații reale cu algoritmi predictivi ,analiza și clasificarea unor date specifice.


Algoritmul - format din pasi (etape) este destinat rezolvarii unei categorii de probleme ; are caracteristici : generalitate, finitudine , claritate .
Se reprezinta algoritmii prin scheme logice , limbaj de programare , pseudocod, formalisme matematice .
Pseudocodul - este o descriere a algoritmului in limbaj natural cu cuvinte cheie precum : start , stop , daca , altfel , atunci , scrie, citeste , atribuie , pentru, cat timp , repeta , executa .
Transcrierea algoritmului daca sunt utilizate corect aceste cuvinte in cod sursa este foarte simpla . Există din perioada când se puneau bazele informaticii ca domeniu o teoremă cunoscută ca teoremă Bohm-Jacopini ce demonstrează că un algoritm se poate scrie doar cu structuri secvențiale , structura alternativa cât timp și structuri decizionale.
Structuri liniare(secventiale) 

  1. scrie    cin>>
  2. citeste   cout<<
  3. atribuie  =
  4. instructiunea compusa  {                   }
  5. Citirea se face de la tastatură când introducem valori ale variabilelor , din fișiere , din fluxuri de date ( eventual prin comunicație în rețea așa cum se întâmplă dacă se transmit datele unui formular web către un script php ). Scriptul citește datele formularului.
  6. Scrierea este realizata prin afișaj pe display , prin scriere în fișiere , transmiterea de date prin fluxuri de date , trimiterea unor date în diverse protocoale în rețea .
  7. Atribuirea are ca efect atribuirea valorii sau a unei evaluări a membrului din dreapta către cel din stânga .
Structuri decizionale (numite si structuri alternative sau selective)

daca conditie atunci instr;  selectia simpla 
daca conditie  atunci instr1 altfel instr 2; selectia duala 

În programe apare adesea selecția multiplă , dar aceasta este de fapt alcătuită din mai multe structuri selective simple si eventual duale. În C++ se operează cu instr switch(selector) { case val1 : instr 1 ; case val2:instr2; ...else instr ;}
#include<stdio.h>
#include<iostream.h>
int i,j;
int  main()
{

cout<< "i=";
cin>>i;
cout<< "j=";
cin>>j;
if(i=j)cout<<i;
else cout<<j; return 0;}


Programul citeste i si j si il afiseaza pe cel mai mare dintre i si j . Main e funcția principala , practic instrucțiunile sale se execută in ordinea în care apar . 
Aceste programe sunt realizate pentru stilul de programare in care avem un singur fir de execuție și acela în logica execuției strict secvențiale după ordinea in care avem instructiunile  în funcția Main .
În programele de rețea se lucrează de regulă cu fire multiple de executie - multithread.



Structurile repetitive 

-structura repetitiva cu contor  
pentru i de la  val_initiala la valoare_finala executa
 instr ;   
-structura repetitiva cu test initial 
cat timp conditie executa instr ;
-structura repetitiva cu test final 
repeta instr pana când conditie;

Test practic - REDACTATI programul CMMDC 

#include<iostream.h>

int a[10],n,i,j;
int  main()

{

cout<<"nr=";cin>>n;for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<n;i++)
while(a[i]!=a[i+1])
{if(a[i]>a[i+1])  a[i]=a[i] -a[i+1];
if (a[i]<a[i+1]) a[i+1]=a[i+1]-a[i];
}
cout<<a[n]<<"    este    cmmdc";
return 0 ;
}
 EXPLICATIE Avem in n numarul de numere -exemplu 3 . In ”vectorul” a vom introduce pe rand 7,21 si 42 si vom obtine pentru cmmdc valoarea 7.Elementele vectorului a sunt comparate doua cate 2 .Se scade din numarul mai mare numarul mai mic până când devin egale . Variabile sunt a,n,i,j.
INCERCATI SA SCRIETI ALGORTMUL IN PSEUDOCOD pentru programul de mai sus .


NOTIUNI TEORETICE NECESARE IN REALIZAREA ALGORITMILOR 
%-operatia modulo ofera restul la impartirea intreaga 




Teste la clasa 
test1
Pentru itemul 1, scrieţi pe foaia de examen litera corespunzătoare răspunsului corect.
1. Variabila x este de tip real. Care dintre următoarele expresii C/C++ are valoarea 1 dacă şi
numai dacă numărul real memorat în variabila x aparţine intervalului (5,8]? (1p.)
a. (x<8) && (x>=5) b. (x<=8) || (x>5)
c. (x>8) || (x<=5) d. (x<=8) && (x>5)
Scrieţi  răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră algoritmul alăturat, descris în pseudocod.
citeşte n (număr natural)
z=0
p=1
┌cât timp n>0 execută
│ c=n%10
│ n=[n/10]
│┌dacă c%3=0 atunci
││ z=z+p*(9-c)
││ p=p*10
│└■
└■
scrie z
S-a notat cu x%y restul împărţirii numărului întreg x la numărul
întreg nenul y şi cu [a] partea întreagă a numărului real a.
a) Scrieţi valoarea care se va afişa dacă se citeşte
n=103456. (3p.)
b) Scrieţi toate numere naturale impare, distincte, fiecare
având exact două cifre, care pot fi citite pentru variabila
n astfel încât să se afişeze valoarea 3. (2p.)
c) Scrieţi în pseudocod un algoritm, echivalent cu cel dat,
în care să se înlocuiască structura cât timp...execută
cu o structură repetitivă de alt tip. (2p.)

2p (of)

Rezolvare:
La 1 avem raspuns corect b si d
la 2 a) se face un tabel 

n
c
z
p

103456
6
0
1

10345

3
10

1034
5



103
4




3
63
100

10
0
963
1000

1
1



0






Cel mai probabil afiseaza 963  
2 b)  pt n=16 observam 
n
c
z
p

16

0
1

1
6
3
10

0
1




























presupunem ca daca prima cifra nu e diviz cu 3 dar ultima e 6 avem f probabil valorile 
16,26,46,56,76,86

c) citeşte n (număr natural)
z=0
p=1
daca n>0 atunci 
┌repeta 
│ c=n%10
│ n=[n/10]
│┌dacă c%3=0 atunci
││ z=z+p*(9-c)
││ p=p*10
│└■
 pana cand(n=0)
scrie z

S-a inlocuit instructiunea repetitiva cu test initial cu cea cu test final.
Intrebari
1.  Observati ca am inlocuit instr repetitiva cu test initial cu instr repetitiva cu test final !
TEST
De ce se pune inaintea instructiunii repetitive cu test final o instructiune conditionala cu exact aceeasi conditie ca in instr repetitiva cu test initial?
2.Mentionati numele variabilelor intalnite in algoritm
3.Mai sus avem doua modalitati diferite de reprezentare  a algoritmilor . Care sunt ?
4.Ce inseamna % , &&, ||, [ ] in algoritmul de mai sus ? 

TEST VERIFICARE 
Pentru itemul 1, scrieţi pe caiet litera corespunzătoare răspunsului corect.
1. Care dintre următoarele expresii C/C++, are ca valoare cel mai mic dintre numerele
naturale nenule, cu cel mult 4 cifre fiecare, memorate în variabilele întregi x şi y? (4p.)
a. (x+y-abs(x-y))/2 b. x+y-abs(x-y)/2
c. (x+y+abs(x-y))/2 d. (x+y+abs(x+y))/2
Scrieţi pe caiet răspunsul pentru fiecare dintre cerinţele următoare.
2. Se consideră algoritmul alăturat, descris în pseudocod:
S-a notat cu [c] partea întreagă a numărului real c, iar cu a%b
restul împărţirii numărului întreg a la numărul întreg nenul b.
a) Scrieţi valoarea care se afişează, în urma executării
algoritmului, dacă se citeşte numărul 9321. 
b) Scrieţi o valoare care poate fi citită pentru n astfel încât
să se afişeze valoarea 11. 
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat în
care să se înlocuiască structura cât timp ... execută
cu o structură repetitivă cu test final. 
citeşte n (număr natural)
s=-1
┌cât timp n>0 execută
│┌dacă n%10>s atunci
││ s=n%10
││altfel
││ s=11
│└■
│ n=[n/10]
└■
scrie s


Rezolvare cerinta b

citeşte n (număr natural)
s=-1
┌cât timp n>0 execută
│┌dacă n%10>s atunci
││ s=n%10
││altfel
││ s=11
│└■
│ n=[n/10]
└■
scrie s


s=11 cerinta b

n=? 100,200,50,250………



n
s
100
-1
10
0
1
11
0
11
















REZOLVARE la cerinta c

citeşte n (număr natural)
s=-1

daca n>0 atunci
┌repeta
│┌dacă n%10>s atunci
││ s=n%10
││altfel
││ s=11
│└■
│ n=[n/10]
└■pana cand n<=0
scrie s



Tema : ce afiseaza pt n=321 ?

Algoritmi cu secvente numerice



sunt  cei de sortare , cautare , extragere dintr-un sir a cifrelor impare , pare etc

1. Suma cifrelor impare ale unui numar n>0


#include<iostream.h>
int n,s;
void main()
{
s=0;
do {
    cout<<"n=";cin>>n;
    } while(n<=0);
    while(n>0)
    {
    if((n%10)%2==1) s=s+n%10;
    n=n/10;
    }
    cout<<"suma cif impare= "<<s;
    }

VECTORII

                       - sunt alcatuiti dintr-o insiruire de elemente de acelasi   fel

                   -elementele (fiecare in parte) sunt asociate unor indici   

EXEMPLU  INT A[10];
                    INDICII SUNT 0....9

                    Elementele sunt A[0]......A[9]

                    Evident A este vector!

2. Se cere un algoritm pentru a inversa un sir alfanumeric.
Obs . Avem nevoie sa declaram vectori .In fapt un sir e un vector de caractere.
E rezolvat si la TIC cu o pagina web  data ca exemplu !!
Algoritmul(pseudocod)
declaram n,i intregi
s[20] ca sir de caractere ,c caracter
citeste s
n<--lungimea lui s     //exista instructiune in C++pt lung. de sir  
pentru i de la 0 la n/2
     { x=s[i];
        s[i]=s[n-i-1];
        s[n-i-1]=x;
     }
scrie s ;
In C++ in CODEBLOCKS :
#include <iostream>
#include<string.h>
using namespace std;
int n,i;
char s[20],x;
int main()
{
   cout<<"s=";
   cin>>s;
n=strlen(s);
cout<<n;
for(i=0;i<n/2;i++)
     { x=s[i];
        s[i]=s[n-i-1];
        s[n-i-1]=x;
     }
cout<<"sir inv="<< s ;
       return 0;
}

3. SORTAREA UNUI SIR DE NUMERE (stocate într-un vector)
Algoritm pseudocod(bubblesort)
IMPORTANT! Indicii unui vector C++ se numerotează începând cu 0 .
Declară a[10], n,i j,,x intregi
citeste n
pentru i de la 0 la n-1 { citeste a[i ]
                                 pentru j de la 0 la i-1 daca a[i ]<a[j] atunci
                                  { x=a[i]
                                     a[i]=a[j]
                                     a[j ]=x;
                                  }
                               }
pentru i de la 0 la n-1  scrie a[i]
                                
IN C++ , editat si rulat in CODEBLOCKS cu compilator MINGW C++ :
#include <iostream>
using namespace std;
int n,i,j,a[10],x;
int main()
{
    cout<<"sortarea e crescatoare-dati n ! " << endl;
    cin>>n;
    for(i=0;i<n;i++){ cout<<"a["<<i<<"]=";cin>>a[i];
    for(j=0;j<i;j++) if(a[i]<a[j]){x=a[i];
                                   a[i]=a[j];
                                   a[j]=x;
                                   }
    }
    cout<<endl<<"vectorul sortat este"<<endl;
    for (i=0;i<n;i++) cout<<a[i]<<endl;

    return 0;
}
 Se cere ca tema  :
  • explicatii sub forma unui eseu de 10 propozitii


ALGORITMI simpli tratati in pseudocod si in limbajul C++ 
1. Se cere suma tuturor numerelor intregi  din intervalul [a,b] , a<b cu a si b intregi 
2. Se dau x si y . Se cere algoritm pentru calculul mediei aritmetice 
Subiectul 2 ramane pt testare 

REZOLVARE
1.
 declara i, s, a si b intregi 
    citeste a si b 
s=0
pentru i de la a la b s=s+i
scrie i

#include<iostream>
using  namespace std; 
int a, b , i , s;
int main ()
{
cin >>a>>b;
s=0;
for(i=a;i<=b;i++) s=s+i;
cout<<i;
return 0;
}



     







[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