Back to top

Autore Topic: Codice per eseguire uno script a parte  (Letto 3753 volte)

Offline james81

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
    • Mostra profilo
Codice per eseguire uno script a parte
« il: 02 Mag 2011, 11:18:43 »
Ciao a tutti,
ho bisogno di un vostro  aiuto,  ho estrapolato del codice da un componente  che attualmente eseguo sotto la parte amministrativa di jommla 1.5, perchè vorrei creare uno script da richiamare tramite un link diretto e non sotto joomla.

Ora purtroppo il le varie query sono con codice ad oggetti e quindi non volevo modificare tutto il codice, ma se era possibile volevo solamente istanziare la connessione o quello che serve all'inizio della mia pagina.

questo è un'sempio delle mie query:

$query = "SELECT MAX(id) AS last_id FROM jos_main ";
$database->setQuery($query);
$ridx = $database->loadResult();

ora appunto volevo capire cosa fare per utilizzare queste query.

graciess

Offline smino89

  • Esploratore
  • **
  • Post: 199
  • Sesso: Maschio
    • Mostra profilo
Re:Codice per eseguire uno script a parte
« Risposta #1 il: 02 Mag 2011, 11:48:21 »
Ciao,

non ho capito bene il tuo problema..
se la questione è creare un'applicativo che utilizza parte del db di joomla, puoi seguire una guida come questa:

http://php.html.it/guide/leggi/77/guida-php-e-mysql-pratica/

altrimenti potresti creare una pagina php (quindi al di fuori di joomla) che include il framework del cms, in modo da poter utilizzare comunque tutte le classi e funzioni.
Un esempio in questo caso potrebbe essere:

Codice: [Seleziona]
<?php

error_reporting
(E_ALL);

# Definizione costanti
// Set flag that this is a parent file
defined('_JEXEC') or define'_JEXEC');
defined('JPATH_BASE') or define'JPATH_BASE'realpath(dirname(__FILE__)."/") ); //path-to-joomla-root
defined('DS') or define'DS'DIRECTORY_SEPARATOR );
///////////////////////////////////////////////////
# Inclusione Framework
$_REQUEST['option'] = 'com_content';
require_once ( 
JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( 
JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe = &JFactory::getApplication('site'); //per avere accesso al sito di front-end
//$mainframe =& JFactory::getApplication('administrator'); //per avere accesso alla parte amministrativa
// set the language
$mainframe->initialise();
JPluginHelper::importPlugin('system');

$db = &JFactory::getDBO();
$user = &JFactory::getUser();
$lang = &JFactory::getLanguage();
$session = &JSession::getInstance(null,null);
$config = new JConfig();

///////////////////////////////////////////////////

if(!$user->get('id')) { //fornisco un form di login stile-joomla

global $mainframe;
$options = array();
$options['remember'] = false;
$options['return']   = "index.php?qui=1";
$credentials = array();
$ris null;
if(JRequest::getVar('username','').JRequest::getVar('password','') != '') {
$credentials['username'] = JRequest::getVar('username',''); //variabili in $_REQUEST
$credentials['password'] = JRequest::getVar('password',''); //variabili in $_REQUEST
$ris $mainframe->login($credentials,$options);
if(!is_object($ris) && intval($ris) == 1) {
header('Location: '.$_SERVER['REQUEST_URI']);
die();
}
}

?>

<h1 class="pagetitle">Login page</h1>
<div class="fieldsetbox" style="width: 400px; float:left;">
<?php
if(
is_object($ris)&&isset($ris->message)) {
echo $ris->message;
}
?>

<fieldset>
<legend><?php echo JText::_('LOGIN'); ?></legend>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post" name="adminForm">
<table border="0" width="100%" style="padding: 30px;">
<tbody><tr>
<td align="right">Username: </td>
<td>
<input type="text" name="username" value="" />
</td>
</tr>
<tr class="registration">
<td align="right">Password: </td>
<td>
<input type="password" name="password" value="" />
</td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" style="width:130px;" />
</td>
</tr>
</tbody>
</table>
<input type="hidden" name="task" value="save" />
</form>
</fieldset>
</div>
<?php
} else {
//sono autenticato
echo "doing something..";
}

?>


P.S. si tratta solo di una bozza..

Offline james81

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
    • Mostra profilo
Re:Codice per eseguire uno script a parte
« Risposta #2 il: 02 Mag 2011, 14:57:28 »
quindi se aggiungessi alla mia pagina queste due righe dovremmo essere apposto ?


include("include/defines.php");
include("include/framework.php");

Offline smino89

  • Esploratore
  • **
  • Post: 199
  • Sesso: Maschio
    • Mostra profilo
Re:Codice per eseguire uno script a parte
« Risposta #3 il: 02 Mag 2011, 16:01:56 »
credo ci vada almeno anche questa:
Codice: [Seleziona]
defined('_JEXEC') or define( '_JEXEC', 1 );

poi in teoria dovresti esserci..

per eseguire una query sul db, poi, usa:

Codice: [Seleziona]
$mainframe =& JFactory::getApplication('administrator'); //per avere accesso alla parte amministrativa
// set the language
$mainframe->initialise();
JPluginHelper::importPlugin('system');

$db = &JFactory::getDBO();
$query = "SELECT MAX(id) AS last_id FROM #__main ";
$db->setQuery($query);
$ridx = $db->loadResult();

ripeto comunque che non ho avuto occasione di testare il codice, quindi... buona fortuna!

mau_develop

  • Visitatore
Re:Codice per eseguire uno script a parte
« Risposta #4 il: 02 Mag 2011, 16:28:55 »
maddai su non diciamo eresie....
se devi aggiungere script o li implementi con il framework o se js usi i metodi messi a disposizione.
Richieste cross domain sono da evitare per quanto possibile.

M

Offline smino89

  • Esploratore
  • **
  • Post: 199
  • Sesso: Maschio
    • Mostra profilo
Re:Codice per eseguire uno script a parte
« Risposta #5 il: 02 Mag 2011, 16:41:03 »
Citazione
se devi aggiungere script o li implementi con il framework o se js usi i metodi messi a disposizione.
Richieste cross domain sono da evitare per quanto possibile.

sono d'accordissimo..
mi è capitato ancora, però, di dover implementare un'applicativo, separato dal sito, che usasse il db di joomla; e piuttosto che collegarmi con il php "classico", meglio usare classi ecc. che il cms mette a disposizione.

spero comunque di non beccarmi l'etichetta di eretico...  :-\


mau_develop

  • Visitatore
Re:Codice per eseguire uno script a parte
« Risposta #6 il: 02 Mag 2011, 22:10:57 »
hai presente le tipiche barzellette "Quanti carabineri ci vogliono per ..."  ecco, stai applicando quella logica

M.

Offline james81

  • Appassionato
  • ***
  • Post: 475
  • Sesso: Maschio
    • Mostra profilo
Re:Codice per eseguire uno script a parte
« Risposta #7 il: 03 Mag 2011, 11:14:37 »
alla fine ho pensato che faccio prima ad estrapolare le query e modificarle

le query che attualmente uso sono queste:

allora ho fatto varie prove e modifiche (ho cercato un rete nelle varie guide che ormai sono tutte sulle classi!!)

ho estrapolato le mie query

        $host="xxxxxxxx";
   $user="xxxxxxxxx";
   $password="xxxxxxx";
   $name="xxxxxxxxxx";
        $conn = mysql_connect($host, $user, $password) or die("connesione non riuscita");
        $db=mysql_select_db($name) or die("Impossibile selezionare db");

******************************************************
$query = "SELECT MAX(id) AS last_id FROM tabella ";
$database->setQuery($query);
$ridx = $database->loadResult();
$ridx1 = $ridx+1;

******************************************************
$query = "SELECT id FROM tabella ORDER BY id DESC LIMIT 1 ";
      $database->setQuery($query);
      $database->loadObject($recordid);
                $idr = $recordid->id;
      $idx = $idr+1 ;

******************************************************
$query = "SELECT id,obj_id FROM tabella WHERE obj_id='".$id."'";
      $result = mysql_query($query) or die (mysql_error());
      $obj = $record->obj_id;

******************************************************

volevo ora chiedervi come fare per modificare le query per poter non usare le classi..graciess

mau_develop

  • Visitatore
Re:Codice per eseguire uno script a parte
« Risposta #8 il: 03 Mag 2011, 15:34:02 »
noneee...

studia le classi invece di evitarle, non puoi fare una cosa del genere metti a rischio tutta la sicurezza del cms oltre che a peggiorarne sensibilmente le performances.

La bestialità meno grande sarebbe l'import della classe JConfig e da li ti fai la tua query .... ma è comunque una cosa stramba e non si insegnano queste cose

M.

 



Web Design Bolzano Kreatif