ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | PHP | Espressioni | Comandi | Libreria | Form | Cookie | Database | Config | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Tutorial PHP
Database
Modifica del database


<<< Modifica del database

L'ultima parte dell'agenda comprende le funzioni utilizzate per salvare i dati sul database. Poiché l'inserimento e la modifica di un record sono ottenute utilizzando la stessa form, abbiamo uniformato la gestione, utilizzando la stessa pagina sia per le operazioni di Nuovo e Modifica (che sia contatto o ditta). Analogamente, uniformiamo le gestione per l'inserimento e l'aggiornamento nel database, con le funzioni insert_update_company() e insert_update_contact().

// File: functions.inc

 Function insert_update_contact() { 
	global $Contact;
	$Contact  = dbquote($Contact);

	if(!$Contact[idContact]) {
	 $query = "INSERT INTO Contact(fkCompany, FirstName, LastName, Home, Mobile, Email)"
	  . " VALUES ($Contact[fkCompany], '$Contact[FirstName]', '$Contact[LastName]', "
	  . " '$Contact[Home]', '$Contact[Mobile]','$Contact[Email]')";
	 $res = mysql_query($query);
	 if(!$res) 
		setErr(ERR_FAIL_UPDATE);
	} else {
	  $query = " UPDATE Contact SET fkCompany='$Contact[fkCompany]', FirstName='$Contact[FirstName]', LastName='$Contact[LastName]', "
	  ." Home='$Contact[Home]', Mobile='$Contact[Mobile]', Email='$Contact[Email]' where idContact=$Contact[idContact]";
	 $res = mysql_query($query);
	 if(!$res) setErr(ERR_FAIL_UPDATE);
	}

 }

 Function insert_update_company() { 
	global $Company;
	$Company = dbquote($Company);
	if(!$Company[idCompany]) {
	 $query = "INSERT INTO Company(Name, Street,City,State,Phone,Fax,Email,Web)"
	  . " VALUES ('$Company[Name]', '$Company[Street]', '$Company[City]', "
	  . " '$Company[State]','$Company[Phone]', '$Company[Fax]', '$Company[Email]', '$Company[Web]')";
	 $res = mysql_query($query);
	 if(!$res)  
		setErr(ERR_FAIL_UPDATE);
	} else {

	 $query  = "UPDATE Company SET Name='$Company[Name]', Street='$Company[Street]', City='$Company[City]', State='$Company[State]',"
	  ." Phone='$Company[Phone]', Fax='$Company[Fax]', Email='$Company[Email]', Web='$Company[Web]'"
	  . " WHERE idCompany=$Company[idCompany]";

	 $res = mysql_query($query);

	 if(!$res) setErr(ERR_FAIL_UPDATE);
	}
 }

Anche in questo caso i dati sono presi da Company e Contact. Se è definito, rispettivamente, Contact[idContact] e Company[idCompany]allora vuol dire che è stata richiesta originariamente una modifica del database, pertanto va eseguita una UPDATE, altrimenti una INSERT. Notare che si ha il problema di distinguere i caratteri speciali nelle interrogazioni del database, analogamente al problema di visualizzare i dati in una pagina HTML. Caratteri come ' devono essere scritti in un comando SQL come \'. La funzione che risolve questo problema è la dbquote(), che segue:

 // File: functions.inc
 Function dbquote($a) {
	$b = array();
	while(list($k,$v) = each($a)) 
	  $b[$k]=AddSlashes($v);
	return $b;
 }

La cancellazione di un record è più semplice. I casi sono due. Il primo, cancellare un contatto, è immediato. Nel secondo caso, l'unica accortezza è che prendiamo è di evitare di cancellare una ditta se contiene dei contatti, in modo da non lasciare contatti "orfani" che pur essendo presenti nel database non vengono visualizzati.

 // File: functions.inc
 Function delete_contact($idContact) {
	$res = mysql_query("DELETE FROM Contact WHERE idContact=$idContact");
	if(!$res) setErr(ERR_FAIL_UPDATE);
 }

 Function delete_company($idCompany) {
	$res = mysql_query("SELECT idContact FROM Contact WHERE fkCompany=$idCompany");
	if(mysql_num_rows($res)>0)
		return setErr(ERR_CANNOT_DELETE, "la ditta contiene dei contatti");
	$res = mysql_query("DELETE FROM Company WHERE idCompany=$idCompany");
	if(!$res) setErr(ERR_FAIL_UPDATE);
 }

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com