Location: PHPKode > projects > Progetto e3g > e3g_0.19.2/objects/sqlexecute.php
<?php
/**
 * Progetto e3g - Equogest/GestiGAS
 *   Software gestionali per l'economia solidale
 *   <http://www.progettoe3g.org>
 *
 * Copyright (C) 2003-2009
 *   Andrea Piazza <http://www.andreapiazza.it>
 *   Marco Munari  <http://www.marcomunari.it>
 *
 * @package Progetto e3g - Equogest/GestiGAS
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * 
 * Questo  programma e' software  libero; e' lecito redistribuirlo  o
 * modificarlo secondo i termini  della Licenza Pubblica Generica GNU
 * come  pubblicata dalla Free  Software  Foundation; o la versione 2
 * della licenza o (a propria scelta) una versione successiva.
 * 
 * Questo programma e' distribuito nella  speranza che sia  utile, ma
 * SENZA  ALCUNA GARANZIA;  senza  neppure la  garanzia implicita  di
 * NEGOZIABILITA' o di APPLICABILITA' PER  UN PARTICOLARE  SCOPO.  Si
 * veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.
 * 
 * Questo  programma deve  essere  distribuito assieme  ad una  copia
 * della Licenza Pubblica Generica GNU.
*/


require_once( dirname(__FILE__) . '/../libraries/e3g_utils.php' );
require_once( dirname(__FILE__) . '/../config.php' );


class sqlexecute extends P4A_Mask
{
	function sqlexecute()
	{
		$this->p4a_mask();
		$this->addCss(E3G_TEMPLATE_DIR . 'css/style.css');
		$p4a =& p4a::singleton();

		$this->SetTitle('Esecuzione Query');

		// Toolbar
		$this->build("p4a_quit_toolbar", "toolbar");

		// Message
		$message =& $this->build("p4a_message", "message");
		$message->setWidth("300");

		//Button per la execute
		$this->build("p4a_button", "bu_esegui");
		$this->bu_esegui->setLabel("Esegui query");
		$this->bu_esegui->setIcon("execute");
		$this->bu_esegui->addAction("onClick");
		$this->intercept($this->bu_esegui, "onClick", "bu_esegui_click");

		//$this->build("p4a_filesystem_navigator", "navigator");
		//$this->navigator->files->enablePreview(); // enable a preview link to open files
		//$this->navigator->files->no_files_message = "No files in this folder";
		//$this->navigator->folders->no_folders_message = "No folders";
		//$this->navigator->folders->collapse(); // If you want to open only the currently selected folder
		 
		//$this->navigator->f_folders->setTitle("Folders");
		//$this->navigator->f_files->setTitle("Files");
		//$this->navigator->folders->create_folder_button->setValue("Create");
		//$this->navigator->files->upload_field->setLabel("Upload a file");
		
		// Campo di testo		
		$testo_sql=& $this->build("p4a_field", "testo_sql");
		$testo_sql->setLabel("Testo della query");
		$testo_sql->setWidth(716);
		$testo_sql->setHeight(50);
		
		// DB source
		$this->build("p4a_db_source", "ds_row");
    	$this->ds_row->setQuery("SELECT * FROM ".$p4a->e3g_prefix."articoli WHERE 1=0");
    	$this->ds_row->setPageLimit(20);
    	$this->ds_row->load();
		
		// Griglia
		$tab_row =& $this->build("p4a_table", "tab_row");
		$tab_row->setSource($this->ds_row);
		$this->tab_row->setTitle("Risultato");
		//$tab_row->setWidth(730);
		$this->tab_row->setInvisible();


		// Visualizzazione oggetti ---------------------------------------------
		
		$fset=& $this->build("p4a_fieldset", "frame");
		//$fset->setTitle("");
 		$fset->anchor($this->testo_sql);
 		$fset->anchorRight($this->bu_esegui);
		$fset->setWidth(730);


		// Frame
		$frm=& $this->build("p4a_frame", "frm");
		$frm->setWidth(730);

		$frm->anchor($message);
		$frm->anchor($fset);
		$frm->anchor($this->tab_row);
			

		e3g_scrivi_footer( $this, $frm );

  		// Display
		$this->display("menu", $p4a->menu);
		$this->display("top", $this->toolbar);
		$this->display("main", $frm);
	}



	function main()
	{
		parent::main();
	}


	function bu_esegui_click()
	{
		$db =& p4a_db::singleton();
			
// TODO    	
    	// Provvisorio... non funziona se c'è un ";" che deve essere scritto in
    	// un campo di testo e che quindi non separa due istruzioni SQL
    	$query = explode(";", $this->testo_sql->getNewValue());
		
		foreach ($query as $riga)
    	{
    		$strdata = $riga;

			$pos = strpos(strtoupper($strdata), "SELECT");

			if (is_integer($pos))
			{
				//FOUND
				//$this->ds_row->setQuery($strdata);
            	//$this->ds_row->load();

        		$this->build("p4a_db_source", "ds_row2");
            	$this->ds_row2->setQuery($strdata);
            	$this->ds_row2->setPageLimit(10);
            	$this->ds_row2->load();

        		$this->tab_row->setSource($this->ds_row2);
        		$this->tab_row->setVisible();
        		
			}
			else
			{
				// NOT FOUND
				$db->query($strdata);
// TODO Non c'è modo di sapere se la query è stata eseguita correttamente o ha
// dato origine ad errori, per qualche errore di sintassi od altro...
				
			}
					
    	}
		
	}
		

}


?>
Return current item: Progetto e3g