Sunteți pe pagina 1din 9

P.P.C.D.

- TEMA DE CREATIE

Să se modifice şi să se adaptaze aplicaţia Tehnologia AJAX - MySQL-3AUTOCOMPLETARE AJAX DIN


MySQL "Istoria muzicii- Compozitori celebri din toate timpurile" (USH-BB PPCD-Lucrari de laborator),
înlocuindu-se BD „compozitori” cu BD „countries”, prin modificarea corespunzătoare a modulelor de cod
(cu explicitarea rolului şi efectelor acestor modificări).

Am adaugat in baza de date tabela countries:

FISIERE CE COMPUN CODUL SURSA

1. INDEX.HTML

Am modificat index.html astfel (am facut referire la tari in loc de compozitori)

<form name="autofillform" action="autocomplete1.php">


<table border="0" cellpadding="5">
<tbody>
<tr>
<td><strong>Numele Tarii:</strong></td>
<td><input type="text"
size="40"
id="complete-field"
onkeyup="doCompletion();">
</td>
</tr>
<tr>
<td id="auto-row" colspan="2">
<td/>
</tr>
</tbody>
</table>
</form>
Generează şi controlează formularul cu controlul de cautare aproximativa (generica). Scriptul declanşat
ca „action” este <action="autocomplete1.php">.

2. ComposerDataMysql.PHP
Reprezinta descrierea clasei ComposerData precum si interogarea Mysql
Crează clasa ComposerData prin selectarea tuturor înregistrărilor din tabla MySQL „COMPOZITORI";
$interogare="SELECT * FROM COMPOZITORI"; Câmpul de date este un tablou de obiecte de tipul
Composers cu câmpuri completate seccesiv cu toate înregistrările din tabla MySQL „COMPOZITORI";
Include modulele:
require "Composer.php";
require_once('conectareMySQL.php');

<?php
require "Composer.php";
require_once('conectareMySQL.php');//CONECTARE DIRECTA CU DRIVERUL MySQL FARA ODBC DNS
/**
* Descrierea clasei ComposerData
*/
class ComposerData {
public $composers;
function __construct() {
GLOBAL $con_id;
$this->composers = array();
$interogare="select.
id as `id`,
country_name as `first_name`,
country_code as `last_name`,
phone_code as `category`
from countries.
";
$rez_id=mysqli_query($con_id,$interogare);
while($inreg=mysqli_fetch_row ($rez_id)) {
$id=$inreg[0];.
$firstName=$inreg[1];
$lastName=$inreg[2];
$category=$inreg[3];
array_push($this->composers, new Composer($id, $firstName, $lastName, $category));
}
}
}
?>
In loc sa modific codul sursa si sa inlocuiesc
firstname cu coutry_name,
lastname cu country_code si
category cu phone_code
am modificat interogarea SQL si astfel campul firstname este populat cu campul country_name. campul
lastname este populat cu campul country_code iar campul categorie este populat cu campul
phone_code.
Astfel nu a mai fost nevoie de schimbarea definitiei clasei composer
<?php
/**
* Descrierea clasei Composer
*/
class Composer {
public $id;
public $firstName;
public $lastName;
public $category;
function __construct($id, $firstName, $lastName, $category) {
$this->id = $id;
$this->firstName = $firstName;
$this->lastName = $lastName;
$this->category = $category;
}
}
?>
Nu am mai modificat nici fisierul autocomplete1.php
<?php
//echo '<script>alert("autocomplete1.php")</script>';
require_once("ComposerDataMySQL.php");
session_start();
$composerData = new ComposerData();
$composers = $composerData->composers;
$results = array();
$namesAdded = false;

// Potrivire cu initiala numelui, prefixului sau cu ambele


if (isset($_GET['action']) && $_GET['action'] == "complete") {
foreach ($composers as $composer) {
if (!is_numeric($_GET['id']) &&
// Daca id se potriveste cu numele tarii
(stripos($composer->firstName, $_GET['id']) === 0 ||
// Daca id se potriveste cu prefixul tarii
stripos($composer->lastName, $_GET['id']) === 0) ||
// Daca id se potriveste cu numel + prefix
stripos($composer->firstName . " " . $composer->lastName, $_GET['id']) === 0) {

$results[] = $composer;
}
// Pregatirea datelor xml pentru expediere de la server catre client
if (sizeof($results) != 0) {
header('Content-type: text/xml');
echo "<composers>";
foreach ($results as $result) {
echo "<composer>";
echo "<id>" . $result->id . "</id>";
echo "<firstName>" . $result->firstName . "</firstName>";
echo "<lastName>" . $result->lastName . "</lastName>";
echo "</composer>";
}
echo "</composers>";
}
}
// Daca utilizatorul alege din lista derulanta (pop-up box)
if (isset($_GET['action']) && isset($_GET['id']) && $_GET['action'] == "lookup") {
foreach ($composers as $composer) {
if ($composer->id == $_GET['id']) {
$_SESSION ["id"] = $composer->id;
$_SESSION ["firstName"] = $composer->firstName;
$_SESSION ["lastName"] = $composer->lastName;
$_SESSION ["category"] = $composer->category;

header("Location: composerView.php");
}
}
}
}
?>
Alcătuieşte şi completează tabloul de înregistări $results = array(); prin potrivire simpla cu initiala
numelui sau a prefixului sau cu ambele din obiectul $composerData care este o nouă instanţiere a clasei
ComposerData(); [$composerData = new ComposerData();]. Apoi datele obiectului sunt stocate în
variabila locală $composers = $composerData->composers;
Apoi pregateste şi impachetează datele intr-o structură xml pentru expediere către client în vederea
generării listei derulante dinamice „Autocomplete”
Daca utilizatorul alege din lista derulanta (pop-up box) atunci preia datele tarii alese folosind variabila
globală $_SESSION şi generează o nouă pagină web, apelând modulul composerView.php";
[header("Location: composerView.php");

„composerView.php”

Preia datele compozitorului ales folosind variabila globală $_SESSION şi generează o nouă pagină web.

<?php
session_start();
$id = $_SESSION ["id"];
$firstName = $_SESSION ["firstName"];
$lastName = $_SESSION ["lastName"];
$category = $_SESSION ["category"];
?>

<html>
<head>
<title>Informatii despre tara</title>

<link rel="stylesheet" type="text/css" href="stylesheet.css">


</head>
<body background="ANTARCTICA.jpg">

<table>
<tr>
<th colspan="2">Informatii despre tara</th>
</tr>
<tr>
<td>Numele tarii: </td>
<td><?php echo $firstName; ?></td>
</tr>
<tr>
<td>Codul tarii: </td>
<td><?php echo $lastName; ?></td>
</tr>
<tr>
<td>ID=index in lista: </td>
<td><?php echo $id; ?></td>
</tr>
<tr>
<td>Prefix Telefonic: </td>
<td><?php echo $category; ?></td>
</tr>
</table>

<p font="black">Intoarcere la <a href="index.html" class="link"> pagina "application


home=index.html"</a>.</p>
</body>
</html>

Fisierul "Composer.php
Crează clasa Composer utilizată în alcătuirea tabloului de obiecte composers din alcătuirea clasei ComposerData;

Print Screen 1 – Inainte sa scriu ceva


Print Screen 2 – Scriu Ger sa imi afiseze tari ce contin Ger in nume

Print Screen 3 – Scriu An sa imi afiseze tari cu “An” in nume


Print Screen 4 – Date Andorra

S-ar putea să vă placă și