Newsgroup: it.comp.www.php
Titolo: Scrivere dati da php in mysql su db in altro spazio web

Ciao a tutti.
Io ho uno spazio web ma il mio piano di hosting non comprende la possibilita di avere un db in mysql.
Ho anche un'altro spazio web che invece include ben 5 db mysql.
Volevo chiedere, se era possibile creare sul primo spazio (quello senza db) pagine in php (lo supporta!) che vanno a 
scrivere dati inseriti dagli utenti, nel db presente su di un'altro spazio web (quello con i 5 db mysql)?
I due spazi web corrispondono a domini differenti, ma mi chiedevo se fosse possibile una cosa del genere.
Credo di si, ma tempo fa forse ci avevo provato senza riuscirci, quindi chiedo cortesemente se qualcuno mi puo delucidare in merito.
Ringrazio anticipatamente.

 possibile una cosa del genere.
Dipende dal fornitore del servizio db.


In che senso dipende dal fornitore  del servizio web?
Se io ho un sito 
www.aaa.it
 che supporta php ma non ha db, ed ho un sito 
www.bbb.it
 che supporta php ed ha un db,
posso creare una pagina in php sul sito 
www.aaa.it
 che vada a scrivere dati sul db del sito 
www.bbb.it
 ?
Perche dipende dal fornitore?
Grazie in anticipo, Marco.

 Perche dipende dal fornitore?
Perche' spesso i fornitori di hosting impongono limitazioni all'uso del 
db, accettando connessioni solo da localhost
Se hai un'interfaccia grafica di gestione del db sul sito b (es. 
phpmyadmin) dovresti poter verificare facilmente quali opzioni puoi 
settare e quali no e se hai la possibilita' di gestire gli utenti a 
piacimento

 Perche dipende dal fornitore?
Perché magari chi ti fornisce il db accetta connessioni solo in locale. 
E' uno scenario improbabile nel caso che la macchina con il db non abbia 
PHP ma può essere.
Come esempio TopHost accetta connessioni via internet (cioè non socket 
UNIX) ma solo dalla macchina su cui gira il server web. Ripeto che 
dipende dal fornitore, devi controllare il documento che spiega i 
servizi che offrono o comunque quelli che hai acquistato.

 scrivere dati inseriti dagli utenti, nel db presente su di un'altro spazio web (quello con i 5 db mysql)?
Banalmente: nella pagina 
http://www.nodb.it/form.php
 crei una pagina di 
immissione dei dati dai tuoi utenti, all'interno della quale definisci 
l'action della <form method="post" .../> con 
"
http://www.yesdb.com/inserisci.php
"...
Ovviamente l'elaborazione dei dati la fai sul server che ha il DB...
Al termine dell'elaborazione ricarichi una pagina in www.nodb.it...
Diversamente la vedo dura, quasi tutti gli hosting "economici" accettano 
connessioni ai DB solo da localhost...
JM


Grazie Jm,
fortunatamente ho risolto temporaneamente utilizzando solo uno spazio e per giunta quello fornito di db e supporto php.
Tengo comunque in considerazione la tua risposta in quanto dovro applicare la cosa ad un'altro mio spazio web (quello senza db)
e sara li che vedo se la cosa funziona.
Nel frattempo mi sono immerso nel php facendo controlli di vario tipo, validazione delle email, e controllo dei campi definiti obbligatori.
Inoltre sono riuscito a collegarmi con un database ms access in locale al db mysql e quindi farci quello che voglio tramite le query di access.
A titolo informativo riporto qui la parte di codice che viene eseguita quando l'utente clicca sul pulsante per inviare i dati e quindi effettuare
una richiesta alla quale dovro rispondere.
L'unica cosa che non mi funziona e quella dell'email, che vorrei fosse inviata al cliente a seguito dell''esito positivo di inserimento dati.
Mi puoi suggerire cosa e sbagliato?
Grazie ancora. (alcune parti del codice sono di Lorenzo Saibal)
*********************************************************************************************************************************************************************
Ecco il codice :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
#inizio
$host="222.222.222.222";  #l'indirizzo ip del server db
$username="ilnomeutentedeldb";
$password="lapassword";
$database="ilnomedeldb";
$tipo = $_POST['tipo'];
$larghezza = $_POST['larghezza'];
$altezza = $_POST['altezza'];
$diametro = $_POST['diametro'];
$speed = $_POST['speed'];
$marca = $_POST['marca'];
$email = $_POST['email'];
$note = $_POST['note'];
mysql_connect($host,$username,$password);
mysql_select_db($database) or die ('Errore : '.mysql_error ());
#######################################
#    IMPOSTAZIONI DI CONFIGURAZIONE   #
#######################################
//oggetto dell'email
$oggetto_email = "Pneumatici - Conferma di ricezione della vostra richiesta d'offerta";
//nome mittente dell'email
$nome_mittente = "Pneumatici  - Pneumatici di qualitA�";
//indirizzo email mittente
$email_mittente = "
in...@ilmioindirizzoemail.it
";
//indirizzo email del destinatatio della risposta automatica
$emaildestinatario = $email;
//corpo dell'email
$corpo = "Grazie per averci contattato. Il nostro sistema provvederA� ad inviarvi un'offerta per il prodotto da voi richiesto.";
//se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y". valori possibili: "y" e "n"
$all_free = "n";
//se invece avete messo "n" inserire tra virgolette, separati da virgola, i nomi dei campi da rendere OBBLIGATORI
//Esempio: $campi_req = array("telefono","via");
$campi_req = array("larghezza","altezza","diametro", "email");
//controllo del campo email? valori possibili: "y" e "n"
$obbligo_email = "y";
//obbligare l'utente ad accettare le condizioni? valori possibili: "y" e "n"
#$accetta_condizioni = "y";
//url della pagina di ringraziamento
$pagina_grazie = "dataok.html";
//url della pagina errore campi vuoti
$pagina_error_empty = "campi_vuoti.htm";
//url della pagina errore email
$pagina_error_email = "errore_email.htm";
//orario e data
$ora = date ("H:i:s"); 
$data = date ("d/m/Y");
//======================= NON TOCCARE NULLA... SE NON VUOI INCASINARE QUALCOSA =======================\
########### CODICE VARIO ###########
//variabili per rendere lo script compatibile anche con PHP 4.2 - copyright di Chris
if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))){  
$_POST = &$HTTP_POST_VARS; 
}
//prendo il numero IP
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
 
	if ($_SERVER["HTTP_X_FORWARDED_FOR"] == "") {
$ip = getenv("REMOTE_ADDR");
		}else {
$ip = getenv("HTTP_X_FORWARDED_FOR");
			}
		} else {
$ip = getenv("REMOTE_ADDR");
		}
###################################
########### CONTROLLO DEI CAMPI ###########
$control_campi = 0;
if($all_free != "y"){
    foreach($_POST as $key => $valore){
        if(in_array($key,$campi_req)){
            if(trim($valore) == ""){
            $control_campi++;
 
                                    } 
                                }
                            }
                        } else {
            $control_campi = 0;    
                                }                    
########### CONTROLLO DEL CAMPO EMAIL ###########
$control_email = 0;
if($obbligo_email == "y"){
    if(isset($_POST['email'])){
        //espressione regolare a cura dell'esimio dott. Grande Minchia - 
http://www.myphp.it
        if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){
        $control_email++;
                            }
                        } else {
        $control_email = 0;
                            }
                        }
 ########### INSERIMENTO DATI NEL DATABASE ###########
if($control_campi == 0){
        if($control_email == 0){
# invio email di conferma al cliente
//inizio l'invio dell'email
// questa parte di invio email non mi funziona ma non capisco come mai
mail("$emaildestinatario","$oggetto_email","$corpo", "From: $nome_mittente <$email_mittente>");
$query = "INSERT INTO test (data, tipo, larghezza, altezza, diametro, speed, marca, email, note, ip)
VALUES ('$data','$tipo', '$larghezza', '$altezza', '$diametro', '$speed', '$marca', '$email' , '$note', '$ip')";
mysql_query($query) or Die ('Errore : '.mysql_error ());
#redireziona alla pagina di inserimento dati avvenuto con successo
                header ("Location: $pagina_grazie");
                                } else {
                header ("Location: $pagina_error_email");
                            }
                        } else {
                header ("Location: $pagina_error_empty");
                        }
#echo "Database aggiornato : " .$tipo. " ".$larghezza. " ".$altezza. " ".$diametro. " ".$speed. " ".$marca. " ".$email. " ".$note;
mysql_close();
?>

 Mi puoi suggerire cosa e sbagliato?
Sicuro che il tuo "spazio" permetta di inviare email ?
Controlla, se puoi, il file php.ini, se non puoi prova a vedere il 
risultato del phpinfo(), all'interno dovresti trovare valorizzato il 
valore "sendmail_path", se non ï¿œ valorizzato probabilmente non puoi 
inviare email...
JM


Ti ringrazio JM, in realta stavo sbagliando io il codice php per l'invio dell'email.
Il server infatti permette l'invio email ed ora funziona.
Grazie ancora dell'aiuto.
Maroso Marco