Precedente :: Successivo |
Autore |
Messaggio |
ms91 Eroe in grazia degli dei

Registrato: 10/10/08 20:42 Messaggi: 144 Residenza: Dorgali
|
Inviato: 19 Dic 2009 20:06 Oggetto: collegamento tra due files php |
|
|
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 |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 19 Dic 2009 20:23 Oggetto: |
|
|
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 |
|
 |
ms91 Eroe in grazia degli dei

Registrato: 10/10/08 20:42 Messaggi: 144 Residenza: Dorgali
|
Inviato: 20 Dic 2009 13:37 Oggetto: |
|
|
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 |
|
 |
ms91 Eroe in grazia degli dei

Registrato: 10/10/08 20:42 Messaggi: 144 Residenza: Dorgali
|
Inviato: 20 Dic 2009 22:56 Oggetto: |
|
|
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 |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 22 Dic 2009 21:58 Oggetto: |
|
|
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 |
|
 |
ms91 Eroe in grazia degli dei

Registrato: 10/10/08 20:42 Messaggi: 144 Residenza: Dorgali
|
Inviato: 22 Dic 2009 23:35 Oggetto: |
|
|
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 |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 23 Dic 2009 18:11 Oggetto: |
|
|
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 |
|
 |
ms91 Eroe in grazia degli dei

Registrato: 10/10/08 20:42 Messaggi: 144 Residenza: Dorgali
|
Inviato: 25 Dic 2009 19:39 Oggetto: |
|
|
garzie mille!
questo è il codice funzionante
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 |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 26 Dic 2009 18:43 Oggetto: |
|
|
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 |
|
 |
|