Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

De la DBF la MySQL utilizând 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.

Despre autor
Author

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ă

Comentarii (1)
  • Avatar

    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 .. :)

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =