Spanish (SOLUCIONADO) Problemas con el cambio de BD de Hostinger a 000wethost

JMMF

Member
Licensed User
Longtime User
Hola a todos.
he cambiado el servidor de Hostinger a 000wethost. y no consigo conectarme.
Me da el siguiente error.
B4X:
--------- beginning of main
--------- beginning of system
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = false **
** Activity (jaula) Create, isFirst = true **
** Activity (jaula) Resume **
** Activity (jaula) Pause, UserClosed = false **
** Activity (jaula) Resume **
** Activity (jaula) Pause, UserClosed = false **
** Activity (aves) Create, isFirst = true **
** Activity (aves) Resume **
*** Service (httputils2service) Create ***
** Service (httputils2service) Start **
Error occurred on line: 162 (Aves)
java.lang.RuntimeException: JSON Array expected.
    at anywheresoftware.b4a.objects.collections.JSONParser.NextArray(JSONParser.java:62)
    at b4a.Bajas.aves._jobdone(aves.java:1119)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:342)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
    at anywheresoftware.b4a.BA$2.run(BA.java:360)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:158)
    at android.app.ActivityThread.main(ActivityThread.java:7230)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
¿Necesita el Index.PHP, en la carpeta Public?
¿Es un problema de las direcciones a el servidor?

Que perdidito estoy...
 

josejad

Expert
Licensed User
Longtime User
No nos das muchas pistas...
¿Cual es tu codigo? ¿Que hay en la linea 162? ¿Como es el php? ¿Te funciona accediendo desde un navegador?
 

Descartex

Well-Known Member
Licensed User
Longtime User
Buenas.
Echa un vistazo a lo que te devuelve el servidor, es decir, el texto que tu esperas que sea un JSON, tal vez el servidor inserte algo de publicidad y te este tirando abajo.
Si es asi, deberias trocear la cadena retornada para quedarte con lo que te hace falta.
Un saludo.
 

JMMF

Member
Licensed User
Longtime User
Hola jose j. Aguilar
Haber si se explica bien mi problema.
El código de llamada es este.
B4X:
'__________ Busca las aves
Sub Buscar_Aves
    Jaula.hc.Initialize ("Leer", Yo)
    ProgressDialogShow ("Buscando las aves de la jaula" y BajasModulo.N_JAULA) 'Abre la barra de progreso
    Dim MiSQL como String = "SELECT * FROM dbAves" & BajasModulo.N_NAVE & "WHERE dbJaula LIKE '" & BajasModulo.N_JAULA & "' ORDER BY dbAve"
    Jaula.hc.Download2 ("https://dbbajasesyes.000webhostapp.com/BajasPHP.php", Array As String ("Operacion", Jaula.hc.JobName, "IdOperario", BajasModulo_Operador, "MiSQL", MiSQL) )
End Sub
y esta la respuesta.
B4X:
'__________ Respuestas de la Base de datos
Sub JobDone (Job As HttpJob)
    Si Job.Tu éxito entonces
        Dim res As String
        res = Job.GetString
        Seleccione Jaula.hc.JobName
            Caso "Modificar"
                Seleccione res
                    Caso 1
                        Msgbox (BajasModulo.CS.Initialize.Alignment ("ALIGN_CENTER"). Append ($ "Usted no tiene permiso de escritura en la BD." $). PopAll, BajasModulo.CS.Initialize.Typeface (Typeface.FONTAWESOME) .Color ( Colors.Red) .Size (40) .Append (Chr (0xF0EE)). Pop.pop.Append ("" & BajasModulo_Operador) .PopAll)
                        Actividad.Finalizar
                    Caso 2
                        Buscar_Aves
                        ToastMessageShow (BajasModulo.CS.Initialize.Alignment ("ALIGN_CENTER"). Append ($ ComentarioToast $). PopAll, True)
                Selección final
            Caso "Leer"
                Seleccione res
                    Caso 0
                        Msgbox (BajasModulo.CS.Initialize.Alignment ("ALIGN_CENTER"). Append ($ "Usted no tiene permiso de lectura en la BD." $). PopAll, BajasModulo.CS.Initialize.Typeface (Typeface.FONTAWESOME) .Color ( Colors.Red) .Size (40) .Append (Chr (0xF0EE)). Pop.pop.Append ("" & BajasModulo_Operador) .PopAll)
                        Actividad.Finalizar
                    Caso más
                        Analizador de Dim como JSONParser
                        analizador. Inicializar (res)
                        A. Inicializar
                        A = parser.NextArray
                        Si A. Tamaño <> 0 Entonces
                            m = A.Get (0)
                            If Jaula.ActAbierta = "Retorno" Or Jaula.ActAbierta = "RetornoGuardar" Or ComentarioToast <> "" Or BDInterna = "Comprobar" Then
                                If ComentarioToast = "Guardadas las observaciones" Then
                                    Rellena_Observaciones
                                Else
                                    If PnlAves.IsInitialized Then PnlAves.RemoveView
                                    CrearLayoutAves
                                End If
                            Else
                                Dim Resultado As Int = Msgbox2(BajasModulo.CS.Initialize.Alignment("ALIGN_CENTER").Append($"¿Es correcto el piso?"$).PopAll,BajasModulo.CS.Initialize.Color(Colors.Green).Typeface(Typeface.FONTAWESOME).Size(40).Append(Chr(0xF039)).Popall.Append("  Piso " & m.Get("dbPiso")).PopAll, "Si","No", "",Null)
                                If Resultado = DialogResponse.POSITIVE Then
                                    BajasModulo.N_PISO = m.Get("dbPiso")
                                    CrearLayoutAves
                                Else
                                    Activity.Finish
                                End If
                            End If
                        Else
                            BajasModulo.GallinaCanta
                            ToastMessageShow(BajasModulo.CS.Initialize.Alignment("ALIGN_CENTER").Append($ "La jaula " $).Size(30).Color(Colors.Yellow).Append($ BajasModulo.N_JAULA & "." $).Pop.Pop.Append(CRLF & $ "No existe." $).PopAll,True)
                            Activity.Finish
                        End If
                End Select
        End Select
    Else
        ToastMessageShow("Error: Fallo con la conexion de la red",True)
        If BDInterna = "Comprobar" Then
            Activity.Finish
        Else
            Dim Resultado As Int = Msgbox2(BajasModulo.CS.Initialize.Alignment("ALIGN_CENTER").Append($"¿Guardamos la baja en BD interna?"$).PopAll,BajasModulo.CS.Initialize.Color(Colors.Red).Typeface(Typeface.FONTAWESOME).Size(40).Append(Chr(0xF1EB)).Popall.Append("  SIN RED  ").Color(Colors.Green).Typeface(Typeface.FONTAWESOME).Size(40).Append(Chr(0xF0C7)).PopAll,"SI","↺","NO",Null)
            BDInterna = ""
            Select Resultado
                Case -1     'Guardar en BD Interna
                    BDInterna = "Guardar"
                    Activity.Finish
                    StartActivity(BuscarAve)
                Case -2     'Salir
                    Activity.Finish
                Case -3    'Reintentar
                    Buscar_Aves
            End Select
        End If
    End If
    ProgressDialogHide'Cierra la barra de progreso
    Job.Release
    Jaula.hc.Release
End Sub

Y el PHP es este.

B4X:
<?php


//BajasPHP_JMMF

// Recupera las variables de B4A
$OperacionPHP=$_GET[Operacion];
$IdOperarioPHP=$_GET[IdOperario];

// Autorizados
$Miguel= <<< EDT
xxxxxxxxxx
EDT;
$Fran= <<< EDT
xxxxxxxxxx
EDT;

// Comprueba si es escritura
if ($OperacionPHP == Modificar)
    {

    // Si es escritura, comprueba el Operador
    if ($IdOperarioPHP == $Miguel or $IdOperarioPHP == $Fran)
        {

    // Si esta autorizado. Modifica la BD
        Conectar();
        Print 2;
        }
    else
        {
    // Si no esta autorizado
        print 1;
        }    
    }
else
    {
    // Si es lectura, comprueba el Operador
    if ($IdOperarioPHP == $Miguel or $IdOperarioPHP == $Fran)
        {

    // Si esta autorizado. Lee la BD
        Conectar();
        }
    else
        {
    // Si no esta autorizado
        print 0;
        }    
    }


function Conectar()
    {
    error_reporting ( E_ALL  ^  E_NOTICE  ^  E_DEPRECATED );
    $databasehost = "dbbajasesyes.000webhostapp.com";
    $databaseusername ="xxxxxxxx";
    $databasepassword = "xxxxxxxx";
    $databasename = "xxxxxxxxx";
    global $MiSQLPHP, $OperacionPHP;

    $con = mysql_connect( $databasehost,$databaseusername,$databasepassword, $databasename ) or die(mysql_error());
    mysql_select_db($databasename) or die(mysql_error());
    mysql_query("SET CHARACTER SET utf8");
    mysql_query("SET NAMES 'utf8'");
    $MiSQLPHP=$_GET[MiSQL];

        $pre = mysql_query($MiSQLPHP);

    if (mysql_errno())
        {
        header("HTTP/1.1 500 Internal Server Error");
        echo $query.'\n';
        echo mysql_error();
        }
    else
        {
        if ($OperacionPHP == Leer)
            {
            $rows = array();
            while ($ r = mysql_fetch_assoc ($ pre))
                {
                $ filas [] = $ r;
                }
            print json_encode ($ rows);
            }
        }

    }

?> [/ CÓDIGO]

Acceder desde el navegador.
Esto es más complicado para mi.
Cuando pongo la direccion (https://dbbajasesyes.000webhostapp.com/BajasPHP.php)
me  aparece   un 0

Gracias
 
Last edited:

Descartex

Well-Known Member
Licensed User
Longtime User
Buenas.
Create un formulario simple con el que le puedas pasar los parametros que necesita el script y así podrás ver la salida por el navegador.
Un saludo.
 

Seneca

Active Member
Licensed User
Hola.

¿Has comprobado si la versión de PHP del antiguo servidor y del nuevo es la misma? A veces ocurre que el nuevo servidor tiene una versión PHP más avanzada y el código deja de funcionar porque algún comando queda obsoleto.

He comprobado tu código PHP y tiene varios errores, además de algunos comandos obsoletos. Estos comandos son: mysql_error y mysql_select_db que se consideran obsoletos desde PHP 5.5.0 y eliminados en PHP 7.0.0

En cuanto a los errores de código, tienes varias variables de cadena en las que has dejado un espacio entre el símbolo $ y el nombre de la variable. Son los siguientes 5 casos:

while ($ r = mysql_fetch_assoc ($ pre))
{
$ filas [] = $ r;
}
print json_encode ($ rows);

Solo tengo conocimientos básicos de PHP y espero no haber cometido ningún error en lo anterior y no sé si todo esto puede ser la causa del problema.

Para analizar el código PHP vienen muy bien herramientas online como esta: https://phpcodechecker.com/

Saludos.
 

JMMF

Member
Licensed User
Longtime User
Fallo mio.
El nombre de la BD, no era el correcto.
Mil disculpas.
 
Top