Teste de informatică pentru liceu, articole C#, C/C++, PHP
Considerând o tabelă FoxPro, ne propunem să adăugăm înregistrările sale în MySQL. Pentru aceasta considerăm că avem la dispoziţie o tabelă FoxPro elevi.dbf
structura tabelei elevi.dbf
nume C(40)
clasa C(10)
Considerăm de asemenea că există într-o bază de date MySQL o tabelă numită elevi.myd.
Structura tabelei elevi.myd
id int(11)
nume text
clasa text
Baza de date se poate crea utilizând PhpMyAdmin care este un manager gratuit pentru bazele de date MySQL. Acesta vă oferă unelete pentru administarea completă a structurii şi a datelor.
Ideea este de a realiza o „conversie” de la FoxPro la MySQL în etape:
Etapa I: Se preiau datele din tabela elevi.dbf şi crearea unui fişier text elevi.txt care să conţină (pentru fiecare înregistrare din tabelă) o linie care conţine comanda SQL insert. O astfel de linie are forma:
INSERT INTO elevi (nume, clasa) VALUES ("ROSCA DANA", "XI-A")
Etapa II: se crează un fişier adauga.php care citeşte din fişierul elevi.txt liniile de forma celor de mai sus şi să o "execute" prin intermediul funcţiei PHP mysql_query.
Etapa I
Considerăm că avem adăugate înregistrările:
Vom crea programul creare_fisier.prg:
CLOSE ALL
USE elevi
SET DEVICE TO FILE elevi.txt
i=1
j = 1
SCAN
@i,0 say 'insert into elevi (id,nume,clasa) values (' + ALLTRIM(STR(j)) + ' ," ' + ALLTRIM(nume) + ' "," ' + ALLTRIM(clasa) + ' ") '
i = i+1
j = j+1
ENDSCAN
SET DEVICE TO screen
CLOSE ALL
Fişierul rezultat elevi.txt după execuţia programului creare_fisier.prg arată astfel:
Etapa II
Vom crea fişierul PHP adauga.php:
<?php
// conectare la baza de date cu id-ul root şi parolă lipsă
$msql = mysql_connect("localhost" , "root", "") ;
if (!$msql)
{
echo "Nu s-a realizat conectarea la MySQL" ;
exit ;
}
$baza = mysql_select_db("db_elevi") ;
if (!$baza)
{
echo "Nu exista baza de date" ; exit ;
}
// deschidere si citire fisier text
$f = fopen("elevi.txt","r") ;
$i = 1 ;
while (!feof($f))
{
$linie = fgets($f,1000) ;
$res=mysql_query($linie);
// daca sunt probleme cu aceasta linie, se afiseaza in browser un mesaj
if (!$res) echo 'Probleme la linia '.$i.'<br>' ;
$i++ ;
}
fclose($f) ;
?>
Se execută acest fişier deschizând un browser şi scriind comanda:
http://localhost//adauga.php
În tabela elevi.myd datele sunt adăugate. Mai trebuie avut în vedere faptul că ID este un câmp care ar trebui să fie unic, aşa că s-ar putea astfel duplica aceste informaţii, deoarece programul PHP numerotează implicit ID-urile începând cu 1.
Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică
alexandyducu 2-11-2012 12:53:56
problema ID-ului se rezolva simplu : lasi campul id necompletat adica
in loc de
values (' + ALLTRIM(STR(j)) + ' ," ' + ALLTRIM(nume) + ' "," ' + ALLTRIM(clasa) + ' ")
se scrie
values (" " ' + ' ," ' + ALLTRIM(nume) + ' "," ' + ALLTRIM(clasa) + ' ")
restul le rezolva mysql-ul prin declararea campului id autoincrement .. :)