Curs Php-mysql

Part. 1   --   Part. 2

Aici, in a treia parte din acest tutorial sunt prezentate fisierele "index.php" si "grafic.css".
index.php - e fisierul care afiseaza continutul site-ului. In partea de sus a paginilor sunt afisate categoriile, meniurile principale din site. Iar in corpul paginii: in partea stanga e un meniu in care sunt afisate link-urile paginilor corespunzatoare fiecarei categorii si in centru se afiseaza continutul celei accesate.
Acest fisier trebuie creat in directorul root al site-ului (www sau httpdocs). In el sunt 2 categorii distincte de cod: scriptul PHP si codul HTML cu layout-ul site-ului.
Scriptul PHP include la inceput fisierul "admin.php", dupa care sunt definite variabilele cu datele initiale care vor fi incluse in codul HTML, pentru meniuri, nume pagina, titlul, descrierea si cuvintele cheie, apoi, in functie de pagina apelata, aceste date sunt modificate cu cele care apartin paginii respective, si care sunt preluate din MySQL.
O alta treaba pe care trebuie sa o faca scriptul din acest fisier este crearea link-urilor pentru meniuri si pagini. Adauga numele paginilor preluate din tabelul MySQL intr-o matrice, apoi parcurge aceasta matrice si formeaza cate un link cu fiecare nume, avand adresa URL de forma "index.php?p=nume_pagina". Astfel, ca sa stie ce pagina sa fie afisata cand e accesat un link, scriptul verifica valoarea variabilei $_GET['p'], care e numele paginii si care a fost folosit atat in tabelul MySQL cat si la fisierul in care e salvat continutul iei.
Ultima operatie din acest script e definirea meniului cu principalele categorii, care sunt afisate in top-ul paginii. Pentru aceasta se foloseste functia "get_meniu()" din "admin.php", datele returnate de aceasta fiind o matrice cu numele categoriilor. Se parcurge aceasta matrice si fiecare nume e adaugat in cod HTML.
Dupa scriptul PHP urmeaza codul HTML cu template-ul site-ului. Acesta preia variabilele setate in script, pentru titlu, descriere, cuvinte cheie, meniu principal, paginile din meniul curent si numele fisierului in care e continutul ce trebuie afisat. Aceste variabile au nume fixe, oricare ar fi pagina accesata, si datele din ele pot fi afisate cu instructiunea "echo", astfel, puteti modifica oricand template-ul site-ului si sa schimbati locul afisarii acestor elemente dupa cum doriti.
Veti observa ca scriptul complet din acest tutorial nu are si o grafica definita (doar superficial), asta o face fiecare dupa cum vrea, obiectul acestei lectii fiind partea de programare PHP.
Iata si codul complet din "index.php"

- Fisierul index.php

<?php
// Exemplu creare site cu PHP, de la https://marplo.net/

// Include fisierul cu datele pt. conectare la MySQL
include('admin.php');

// Creaza variabilele folosite in template-ul paginii
$meniuri_html ='';
$pagini_html ='';
$titlu ='Titlu pt. pagina principala, index';
$desc ='Descriere pt. pagina principala, index';
$cuv_key ='Cuvinte, cheie, pagina, principala, index';

// Daca sunt primite date prin $_GET, cu indice 'p'
if(isset($_GET['p'])){
 // Adauga valoarea intr-o variabila, eliminand spatii exterioare cu trim()
 // si decodand-o cu urldecode() deoarece acel sir din adresa URL este adaugat cu urlencode()
 $pag = urldecode(trim($_GET['p']));

 // Preia din sir, cu explode(), primul cuvant (cuvinte) dinainte de '-', cu indice [0]
 // deoarece acesta e numele meniului (categoriei), necesar pt. Selectarea din MySQL a paginilor din meniu
 $sir = explode('-', $pag);
 $meniu = $sir[0];

 // Deoarece la adaugarea in tabele, datele au fost filtrate cu functia filtr_sql(), creata in admin
 // Aplica acelasi filtru si variabilelor $pag si $meniu, necesare pt. Select in tabel
 $pag = filtr_sql($pag);
 $meniu = filtr_sql($meniu);

 // Selecteaza din MySQL paginile care apartin categoriei, meniului transmis in adresa URL
 $sql ="SELECT * FROM `pagini` WHERE meniu='$meniu'";
 $result = $conn->query($sql);
 if($result->num_rows == 0) echo '0 rezultate';
 else {
 while($rand = $result->fetch_assoc()){
 // Preia numele si titlul pagiilor care sunt in meniul accesat
 // unde numele din coloana pt. pagini e diferit de numele meniului
 if($rand['pagina']!=$meniu){
 // Elimina caracterele '\' care au fost adaugate de real_escape_string()
 $pg_titlu[] = stripslashes($rand['titlu']);
 $pg_nume[] = stripslashes($rand['pagina']);
 }

 // Preia numele paginii apelate, titlu, descriere, cuvinte cheie si data
 // unde randul din tabel are datele paginii accesate
 if($rand['pagina']==$pag){
 $titlu = stripslashes($rand['titlu']);
 $desc = stripslashes($rand['descriere']);
 $cuv_key = stripslashes($rand['cuv_key']);
 $pagina = stripslashes($rand['pagina']);
 $data = stripslashes($rand['data']);
 }
 }
 }
}

$meniuri = get_meniu(); // Apeleaza functia din admin.php pt. obtinerea meniurilor (categoriile) din Top

// Creaza codul HTML cu meniurile
$meniuri_html ='<ul><li><a href="index.php" title="Pagina Principala">Pagina Principala</a> &nbsp; </li>';

// Daca matricea cu meniurile contine cel putin un meniu adaugat
if(count($meniuri)>0 && !empty($meniuri[0])){
 for($i=0; $i<count($meniuri); $i++){
 // Cu ucfirst() face prima litera din meniu sa fie Majuscula
 // Cu str_replace inlocuieste '_' din numele meniului cu spatiu
 $n_meniu = ucfirst(str_replace('_', ' ', $meniuri[$i]));
 $meniuri_html .='<li><a href="index.php?p='.$meniuri[$i].'" title="'.$n_meniu.'">'.$n_meniu.'</a></li>';
 }
}
$meniuri_html .='</ul>'; // Inchide codul HTML pt. aceste meniuri

// Creaza codul HTML cu paginile din categoria curenta, daca acestea exista, pt. meniul din stanga
if(isset($pg_nume)){
 $nrpgs = count($pg_nume); //numar de pagini in categorie
 $pagini_html = '<ul id="pagini">';
 for($i=0; $i<$nrpgs; $i++){
 $pagini_html .='<li><a href="index.php?p='.$pg_nume[$i].'" title="'.$pg_titlu[$i].'">'.ucfirst($pg_titlu[$i]).'</a></li>';
 }
 $pagini_html .='</ul>';
}

// In continuare, codul HTML in care se adauga si variabilele necesare generate de PHP
?>
<!doctype html>
<html lang="ro">
<head>
<meta charset="utf-8" />
 <title><?php echo $titlu; ?></title>
 <meta name="description" content="<?php echo $desc; ?>" />
 <meta name="keywords" content="<?php echo $cuv_key; ?>" />
 <meta name="robots" content="index, follow" />
 <link href="grafic.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- Start Top pagina -->
<div id="top">
 <h1>Sectiunea din top-ul paginii</h1>
 <div id="meniu">
<?php echo $meniuri_html; ?>
 </div>
</div>

<!-- Start Corp pagina -->
<div id="corp">
 <!-- Start Meniul cu paginile -->
 <div id="meniu_p">
 <h4>Pagini</h4>
<?php echo $pagini_html; ?>
 </div>

 <!-- Start Context -->
 <div id="context">
<?php
// Daca e setata o valoare pt. variabila $pagina,
// Variabila definita prin Selectul din MySQL, si contine numele paginii, pt. adresa ei
if(isset($pagina)){
 // Afisaza data la care a fost creata psgina, preluata din MySQL
 echo '<em>'.date('j-F-Y ', $data).'</em><br>';

 // Include fisierul in care e continutul
 readfile('pagini/'.$pagina.$ext);
}
else {
 // Daca nu e apelat vreun link din meniu sau pagini, Afiseaza continutul pt. pagina 'index'
 // Il puteti crea cu 'echo' ori sa-l includeti din alt fisier extern
 echo "<h3>Continut initial pentru pagina index</h3>
 <h3>Creati cu 'echo' tag-urile HTML sau includeti continut din alt fisier extern,<br>
 cu include('fisier.php') sau readfile('fisier.html')</h3>";
}
?>
 </div>
</div>

<!-- Start Subsol pagina -->
<div id="subsol">
 <a href="add_del.php" title="Admin"><em><b>Admin</b></em></a>
 <h4>Continutul din subsolul paginii</h4>
 <h4>Va apare in toate paginile site-ului</h4>
</div>

</body>
</html>

Ultimul fisier din acest script gen CMS este cel care se ocupa de grafica site-ului. L-am denumit "grafic.css" si contine doar cateva coduri CSS pentru o structura de baza a cadrelor din pagina.
Acest fisier este apelat in sectiunea HEAD a codului HTML din "index.php".

- Fisierul grafic.css

body {
 margin:0px auto;
 width:1000px;
 background-color:#e8e8fe;
 text-align:center;
}

/* Grafica pentru sectiunea Top */
#top {
 margin:2px auto;
 position:relative;
 border:1px solid #ceceda;
 background-color:#dedeee;
}

/* Grafica pentru sectiunea Corp */
#corp {
 position:relative;
 margin:2px auto;
 width:100%;
 border:1px solid #eeeefe;
 background-color:#ededfe;
 text-align:left;
}

/* Grafica pentru Meniu principal */
#meniu {
 position:relative;
 margin:2px auto;
 border:1px solid #dafedf;
 background-color:#deefee;
 padding-left:5px;
}
#meniu ul {
 margin:0px;
 background-color:#cceede;
 list-style:none;
 padding:0px 0px 1px 5px;
}
#meniu ul li {
 display:inline;
 margin:1px 3px;
 border:1px solid silver;
 padding:3px;
}
#meniu ul li a {
 margin:0px;
 border:1px solid #daccfe;
}
#meniu ul li a:hover {
 background-color:#ebede0;
}

/* Grafica pentru meniul din stanga */
#meniu_p {
 float:left;
 position:relative;
 width:240px;
 border:1px solid green;
 padding:2px
}

/* Grafica pentru Context */
#context {
 min-height:200px;
 margin:0px 1px 1px 260px;
 padding:3px 5px;
}

/* Grafica pentru sectiunea Subsol */
#subsol {
 clear:both;
 position:relative;
 margin:2px auto;
 border:1px solid #ceced8;
 background-color:#ebede0;
 z-index:10;
}

- Arhiva cu scriptul complet o puteti descarca de aici -> Creare site - CMS.
Site-ul creat cu acest script poate folosi si afisa caracterele in format UTF-8, iar codul HTML generat este valid XHTML.
Cateva date suplimentare despre modul de utilizare gasiti in fisierul "Citeste.html".
Part. 1   --   Part. 2

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag este element de tip bloc?
<div> <img> <span>
<div>Web Programming and Development</div>
Care cod CSS afiseaza textul subliniat?
font-style: italic; text-decoration: underline; font-weight: 500;
h2 {
  text-decoration: underline;
}
Clic pe functia JavaScript care apeleaza o alta functie dupa un anumit timp.
insertBefore() setTimeout() querySelector()
function someFunction() { alert("CoursesWeb.net"); }
setTimeout("someFunction()", 2000);
Clic pe instructiunea care returneaza numarul total de elemente dintr-un array asociativ.
count($array) count($array, 1) strlen()
$food =["fruits" =>["banana", "mar"), "veggie" =>["ceapa", "rosie"));
$nr_food = count($food, 1);
echo $nr_food;       // 6
Indicati Viitorul Perfect la negativ al verbului din paranteze, in propozitia: "The child (to not play) by Sunday".
has't played haven't been playing will haven't played
The child will haven't played by Sunday.
- Copilul nu s-ar fi jucat pana duminica.
Indicati Viitorul Perfect pentru verbul "contar" (a povesti) la forma "Él".
habrá contado va a contar contaba
Él no habrá contado el cuento.
- El nu ar fi spus povestea.
Creare site cu PHP si MySQL - CMS - Part 3

Last accessed pages

  1. Curs si Tutoriale Ajax (106052)
  2. Prezent perfect - Exercitii si teste incepatori (20021)
  3. Substantivul din limba engleza - The Noun (57922)
  4. Verbe modale - SHALL, SHOULD, OUGHT TO, WILL, WOULD, USED TO, BE TO, DARE (32399)
  5. Teste spaniola - Tests y ejercicios de Español - Gramática (25629)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1274)
  2. Curs HTML gratuit Tutoriale HTML5 (968)
  3. Coduri pt culori (727)
  4. Creare si editare pagini HTML (567)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (526)