Foros del Web » Programando para Internet » PHP »

PHP OO Utilizar el mismo archivo de conección local y en web

Estas en el tema de Utilizar el mismo archivo de conección local y en web en el foro de PHP en Foros del Web. Hola a todos haber si me ayudan con esto. He querido implementar este código para lograr que la coneccion a la base de datos sea ...
  #1 (permalink)  
Antiguo 13/08/2011, 12:51
 
Fecha de Ingreso: julio-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta Utilizar el mismo archivo de conección local y en web

Hola a todos haber si me ayudan con esto.

He querido implementar este código para lograr que la coneccion a la base de datos sea dimamica cuando ingreso en local y en web que evalue la url y dependiendo de ella que ejecute la coneccion.

El problema es que solo funciona el primer if ya sea en web o en local.
Ejemplo:
Estoy trabajando en local pero si el primer if es el de la web no funciona genera los errores de siempre funtion.mysql-conect el error apunta al hostin de miarroba(mysql.webcindario.com) y si el caso es contrario (trabajando en linea pero la función tiene en el primer if la conexión al server local no funciona) es la misma situación.

No entiendo cual es el problema para que evalué la dirección y si no es correcta que verifique el segundo if. tambien intente con el elseif y es el mismo caso.

Este es mi codigo haber si me puedes ayudar. Gracias.

Código PHP:
public static function con()
    {
        
$url strtolower($_SERVER['HTTP_REFERER']);
        if(
$url == "http://inacra2010.webcindario.com" or "http://www.inacra2010.webcindario.com")
        {
            
$con=mysql_connect("mysql.webcindario.com","inacra2010","123456");
            
mysql_query("SET NAMES 'utf8'");
            
mysql_select_db("inacra2010");
            return 
$con;
        }
        if( 
$url == "http://localhost:88/pagina_ina_ajax/")
        {
            
$con=mysql_connect("localhost","root","ADMIN2010");
            
mysql_query("SET NAMES 'utf8'");
            
mysql_select_db("instnacdeapopa");
            return 
$con;
        }
        else
        {
            echo 
"Error de coneccion con la DB";
        }    
    } 
  #2 (permalink)  
Antiguo 13/08/2011, 13:09
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Utilizar el mismo archivo de conección local y en web

Yo lo haria asi:
$online_path = '/path_online/';
$local_path = '/path_local/';
$_SERVER['SERVER_NAME'] = '';
if(is_dir(online_path)){
$_SERVER['SERVER_NAME'] = 'www.mi_sitio_web.com';
} elseif(is_dir($local_path)){
$_SERVER['SERVER_NAME'] = 'localhost';
}
  #3 (permalink)  
Antiguo 13/08/2011, 14:15
 
Fecha de Ingreso: julio-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta Respuesta: Utilizar el mismo archivo de conección local y en web

Cita:
Iniciado por Patriarka Ver Mensaje
Yo lo haria asi:
$online_path = '/path_online/';
$local_path = '/path_local/';
$_SERVER['SERVER_NAME'] = '';
if(is_dir(online_path)){
$_SERVER['SERVER_NAME'] = 'www.mi_sitio_web.com';
} elseif(is_dir($local_path)){
$_SERVER['SERVER_NAME'] = 'localhost';
}
Gracias por responder Patriarka.

utilizando tu codigo hago lo siguiente:
Código PHP:
public static function con()
    {
        
$online_path '/path_online/';
        
$local_path '/path_local/';
        
$_SERVER['SERVER_NAME'] = '';
        if(
is_dir(online_path))
        {
            
$_SERVER['SERVER_NAME'] = "http://inacra2010.webcindario.com" or "http://www.inacra2010.webcindario.com";
            
$con=mysql_connect("mysql.webcindario.com","inacra2010","123456");
            
mysql_query("SET NAMES 'utf8'");
            
mysql_select_db("inacra2010");
            return 
$con;
        } 
        elseif(
is_dir($local_path))
        {
            
$_SERVER['SERVER_NAME'] = 'http://localhost:88/pagina_ina_ajax/';
            
$con=mysql_connect("localhost","root","ADMIN2010");
            
mysql_query("SET NAMES 'utf8'");
            
mysql_select_db("instnacdeapopa");
            return 
$con;
        }

y en ambos obtengo el mismo error:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/webcindario/i/n/inacra2010/class/class_trabajo.php on line 166

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/webcindario/i/n/inacra2010/class/class_trabajo.php on line 167

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\PAGINA_INA_AJAX\class\class_trabajo .php on line 166

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\PAGINA_INA_AJAX\class\class_trabajo .php on line 167

y esa class_trabajo.php en esa linea lo que contiene es:
public function get_frases()
{
$sql="SELECT frase FROM frases ORDER BY rand( ) LIMIT 1 ";
$res=mysql_query($sql,Conectar::con());
while ($row=mysql_fetch_array($res))
{
echo $row['frase'];
}
return $row['frase'];
}
lo que esta en rojo es la linea 167 donde en ambos casos marca error.

cual podria ser la solucion?

Gracias por tu ayuda Patriarka .
  #4 (permalink)  
Antiguo 13/08/2011, 14:41
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Utilizar el mismo archivo de conección local y en web

bueno pero esto:
$online_path = '/path_online/';
$local_path = '/path_local/';
siempre va a dar false por que es un directorio de ejemplo, ponele el real de tu sistema

cual es la carpeta de tu proyecto en tu pc?
  #5 (permalink)  
Antiguo 13/08/2011, 15:11
 
Fecha de Ingreso: julio-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta Respuesta: Utilizar el mismo archivo de conección local y en web

Cita:
Iniciado por Patriarka Ver Mensaje
bueno pero esto:
$online_path = '/path_online/';
$local_path = '/path_local/';
siempre va a dar false por que es un directorio de ejemplo, ponele el real de tu sistema

cual es la carpeta de tu proyecto en tu pc?
He escrito esto y sigue siendo el mismo error:
$online_path = '/home/webcindario/i/n/inacra2010/';
$local_path = '/C:/AppServ/www/PAGINA_INA_AJAX/';

Gracias por intentar ayudar...
  #6 (permalink)  
Antiguo 13/08/2011, 15:29
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Utilizar el mismo archivo de conección local y en web

Aquí:
Código PHP:
Ver original
  1. $res=mysql_query($sql,Conectar::con());
Déjalo así:
Código PHP:
Ver original
  1. $res=mysql_query($sql);
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 13/08/2011, 16:37
 
Fecha de Ingreso: julio-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 2
Sonrisa Respuesta: Utilizar el mismo archivo de conección local y en web

Cita:
Iniciado por Sourcegeek Ver Mensaje
Aquí:
Código PHP:
Ver original
  1. $res=mysql_query($sql,Conectar::con());
Déjalo así:
Código PHP:
Ver original
  1. $res=mysql_query($sql);

Hago
Código PHP:
$res=mysql_query($sql,Conectar::con()); 
por que lo conecto desde una clase aqui el codigo completo:
Código PHP:
class Conectar
{
    public static function 
con()
    {
        
$online_path '/home/webcindario/i/n/inacra2010/';
        
$local_path '/C:/AppServ/www/PAGINA_INA_AJAX/';
        
$_SERVER['SERVER_NAME'] = '';
        if(
is_dir(online_path))
        {
            
$_SERVER['SERVER_NAME'] = "http://inacra2010.webcindario.com" or "http://www.inacra2010.webcindario.com";
            
$con=mysql_connect("mysql.webcindario.com","inacra2010","123456");
            
mysql_query("SET NAMES 'utf8'");
            
mysql_select_db("inacra2010");
            return 
$con;
        } 
        elseif(
is_dir($local_path))
        {
            
$_SERVER['SERVER_NAME'] = 'http://localhost:88/pagina_ina_ajax/';
            
$con=mysql_connect("localhost","root","ADMIN2010");
            
mysql_query("SET NAMES 'utf8'");
            
mysql_select_db("instnacdeapopa");
            return 
$con;
        }
    }

para no estar colocando el servidor,usuario, pass, base de datos cada vez que llamo la conexión.

El código que me funciona a la perfección, todo si lo hago plano, me refiero dejar una sola conexión.
Ejemplo:

Código PHP:
class Conectar
{
    public static function 
con()
    {
            
$con=mysql_connect("mysql.webcindario.com","inacra2010","123456");
            
mysql_query("SET NAMES 'utf8'");
            
mysql_select_db("inacra2010");
            return 
$con;
    
            
/*$con=mysql_connect("localhost","root","ADMIN2010");
            mysql_query("SET NAMES 'utf8'");
            mysql_select_db("instnacdeapopa");
            return $con;*/
    
}

En otras palabras comentando la conexión que no voy a utilizar.

Pero me entro curiosidad de poder hacerlo de forma que dependa de la url la conexión ya que es la única variable para cambiar los datos.

Gracias.
  #8 (permalink)  
Antiguo 13/08/2011, 19:00
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Utilizar el mismo archivo de conección local y en web

Tienes que quitarlo, lees el error?
Cita:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/webcindario/i/n/inacra2010/class/class_trabajo.php on line 166
Entonces ponlo así:
Código PHP:
Ver original
  1. Conectar::con();
  2. $res=mysql_query($sql);
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 13/08/2011, 22:14
 
Fecha de Ingreso: julio-2008
Mensajes: 56
Antigüedad: 15 años, 9 meses
Puntos: 2
Exclamación Respuesta: Utilizar el mismo archivo de conección local y en web

Cita:
Iniciado por Sourcegeek Ver Mensaje
Tienes que quitarlo, lees el error?


Entonces ponlo así:
Código PHP:
Ver original
  1. Conectar::con();
  2. $res=mysql_query($sql);
Gracias por tu ayuda. Pero sigue el mismo error con ese codigo.

por el momento archivare este tema y lo terminare otro día...

Gracias

Etiquetas: conexion, poo, programacion, bases-de-datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:00.