Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
collegamento tra due files php
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
ms91
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 10/10/08 20:42
Messaggi: 144
Residenza: Dorgali

MessaggioInviato: 19 Dic 2009 20:06    Oggetto: collegamento tra due files php Rispondi citando

Ciao a tutti avrei la neccesità di collegare due files php tra loro, i files sono di un componente e un modulo per joomla in due cartelle diverse ma nello stesso database,uno (mod_j15paypal.php) serve per effettuare un pagamento con l'inserimento di tutti i campi, l'altro(default_addproperty.php) serve per creare un annuncio, vorrei fare in modo che nel primo viene inizializzata una variabile, se viene effettuato il pagamento a questa viene assegnato un certo valore, nel secondo file una volta che si vuole salvare l'annuncio, se la variabile non ha il valore assegnato da mod_jpaypal.php non si potrà salvare l'annuncio.
Si può fare una cosa del genere?
Se si come?
Grazie!
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 19 Dic 2009 20:23    Oggetto: Rispondi citando

Ciao,
non sviluppo per joomla però credo di aver capito quello che vuoi fare.
In soldoni:
1) hai una variabile nel file uno.php
2) vuoi nel file due.php controllare il valore di questa.
3) se la var in questione ha un certo valore allora due.php può fare quello per cui è scritto altrimenti no.

Ora, da quello che ho capito non hai un inclusione di uno in due quindi da due non puoi leggere la variabile in uno. Dato che uno non lavora sia come script singolo che come "parte di un altro script" non puoi fare l'include.
Bene, quello che chiedi allora non è fattibile.
Per far comunicare i due devi scegliere una delle seguenti vie:
1) la variabile va messa in sessione così tutti gli script possono vederla
2) usi un campo nel db
3) ti appoggi ad un file di testo, xml, altro.

Io consiglio di usare (2) perchè senza diventar matto puoi crearti una tabella di appoggio in cui avrai un riferimento al pagamento che devi controllare (lo script uno scriverà il valore in questo campo). Lo script due leggerà questo campo e deciderà cosa fare a seconda del valore.

ciao
Top
Profilo Invia messaggio privato
ms91
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 10/10/08 20:42
Messaggi: 144
Residenza: Dorgali

MessaggioInviato: 20 Dic 2009 13:37    Oggetto: Rispondi citando

A si, ok non ci avevo pensato, siccome non sono molto pratico, potresti aiutarmi?
Io uso easyphp, creo una tabella nello stesso database con un campo dove lo script 1 inserirà la variabile, e con delle istruzioni lo script due deve accedere alla tabella e controllare la variabile.
potresti magari indicarmi una guida che spiega queste istruzioni perchè piano piano sto cercando di imparare questo linguaggio...
te ne sarei molto grato!
Top
Profilo Invia messaggio privato
ms91
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 10/10/08 20:42
Messaggi: 144
Residenza: Dorgali

MessaggioInviato: 20 Dic 2009 22:56    Oggetto: Rispondi citando

Ho provato a mettere questo nello script2 dopo aver creato una tabella e inserito un valore in un campo:

Codice:
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_database = "nomedb";
$db_tabella = "prova";

$connessione = mysql_connect($db_host,$db_user,$db_password);
?>
mysql_db_query($db_nomedb,"select variabile from ".$db_tabella." where ".$cat."=1 order by variabile",$connessione);
if(db_variabile==1){istruzioni da eseguire}

non funziona!!! è giusto?
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 22 Dic 2009 21:58    Oggetto: Rispondi citando

Ciao,
no, lo script non può funzionare.

Allora, l'idea base dietro ad una connessione a mysql è la seguente:
1) crei la connessione al server
2) ti connetti al db
3) fai le query

Tu hai scelto di usare la funzione mysql_db_query, io ti consiglio invece di procedere con:
Codice:

$conn=mysql_connect($db_host,$db_user,$db_password) or die('Errore sulla connessione al server');
mysql_select_db($db_database) or die('Errore sulla connessione al db);

Così hai una connessione aperta e hai selezionato il db una volta per tutte.

La funzione mysql_query ritorna un recordset sotto forma di array che va attraversato per poter leggere i valori dei vari campi (se ovviamente fai una query di selezione).
Se hai una tabella che si chiama "tabella" con le colonne "uno,due,tre,quattro", l'uso della funzione è il seguente:
Codice:

// qui ti connetti al server e al db come nello script precedente
...
// ecco la nostra select
$query="SELECT uno,due,tre,quattro FROM tabella WHERE due=1";
$rs=mysql_query($query,$conn);


Ora, la nostra select sta a significare: "dalla tabella "tabella" tira fuori i valori delle quattro colonne dalle righe che hanno la colonna "due" uguale a 1". Se la sintassi è corretta dentro a $rs avremo il nostro insieme di risultati (righe della tabella).
Se la query non è corretta $rs sarà false.

Ora leggiamo le righe.
Codice:

// tutto il codice di prima più il seguente
if ($rs)
{
   if (mysql_num_rows($rs)>0)
   {
      while ($row=mysql_fetch_assoc($rs))
      {
         print $row['uno'] . ' - ' . $row['due'] . ' - ' . $row['tre'] . ' - ' . $row['quattro'] . '<br/>   ;
      }
   }
   else
   {
      print 'Nessuna riga trovata!';   
   }
}
else
{
   print 'problemi sul recordset';
}

Nell'esempio noi verifichiamo se il recordset è buono e se non lo è segnaliamo l'errore.
Poi guardiamo se non è vuoto (mysql_num_rows) ritorna il numero di righe del recordset (di una query di selezione).
La funzione mysql_fetch_assoc legge una riga per volta dal recordset e la ritorna sottoforma di vettore associativo.
La sorella mysql_fetch_row la ritorna sottoforma di vettore classico (indici numerici 0-based) e la sorella mysql_fetch_array ritorna la riga in entrambe le forme oppure in una delle due se passato un parametro opzionale.

Quando il recordset è finito ritorna false.
Il nostro ciclo in pratica vuol dire: "fino a che ci sono righe nel recordset, dammele che io le stampo.
Come vedi per leggere il valore di una certa colonna basta rifersi all'indice del vettore $row.

Questo è proprio uno spiegone volante sull'uso di mysql con php.
Tieni presente però che joomla utilizza un layer per l'accesso al db (che però io non conosco perchè non lo uso) per cui per aver una corretta integrazione con la piattaforma dovresti passare per quello. Lì le cose sono un po' diverse perchè ti ritrovi a lavorare con degli oggetti invece che con semplici vettori.
Il layer serve per rendere trasparente a joomla il tipo di dbms a cui si attacca.

ciao
Top
Profilo Invia messaggio privato
ms91
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 10/10/08 20:42
Messaggi: 144
Residenza: Dorgali

MessaggioInviato: 22 Dic 2009 23:35    Oggetto: Rispondi citando

ok, ma ,qual'è il vettore vero e proprioora come faccio ad utilizzare il valore di un record?.
Es. se voglio mettere in una nuova variabile il valore della colonna due per il quale l'id è 1, queste istruzioni servono per stampare a video.
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 23 Dic 2009 18:11    Oggetto: Rispondi citando

Non ho mica capito il tuo dubbio!
Ad ogni ciclo while dentro a $row ci sarà una riga del recordset; ad ogni colonna presenta dopo "SELECT" e prima di "FROM" corrisponde un elemento del vettore.
La variabile $row['uno'] conterrà al primo ciclo il valore della colonna "uno" della prima riga e così via.
Tu chiedi come fare:
Citazione:

se voglio mettere in una nuova variabile il valore della colonna due per il quale l'id è 1

Beh, se supponiamo che la tabella di prima abbia anche una colonna che si chiama id e che ci sia solo una riga nella tabella con id=1 allora avremo:
Codice:

// qui fai la connessione al db

$query="SELECT * FROM tabella WHERE id=1";
$rs=mysql_query($query,$conn);

$var=null;  // var in cui mettere il valore della colonna due

if ($rs && mysql_num_rows($rs)==1)
{
$row=mysql_fetch_assoc($rs);

$var=$row['due'];
}


esattamente come prima.
Top
Profilo Invia messaggio privato
ms91
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 10/10/08 20:42
Messaggi: 144
Residenza: Dorgali

MessaggioInviato: 25 Dic 2009 19:39    Oggetto: Rispondi citando

garzie mille!
Evvai! Evvai! questo è il codice funzionante Evvai! Evvai!

Codice:
<?PHP
          $hostname = "localhost";
          $dbName   = "database1";
          $username = "root";
          $password = "";
          $database = mysql_Connect($hostname,$username,$password);
          $db_selected=mysql_select_db ($dbName,$database);
$valore=null;
if (!$db_selected) {
    die('Impossibile connettersi. Errore : ' . mysql_error());
                   }
$query="SELECT * FROM tabella WHERE id=2";                       
$valore=mysql_query($query,$database);
if (!$valore)
{
   echo "Errore nell'esecuzione della query";
}
else
$risultato= mysql_fetch_array($valore);
echo $risultato["prova"];
?>
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 21:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 26 Dic 2009 18:43    Oggetto: Rispondi

Ok, ora ricorda che per integrarti con joomla sarebbe meglio passare per il suo abstraction layer.
Alla fine la differenza non è molta ma avrai una separazione più netta tra il dbms e il tuo codice.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi