Pregunta:
Fecha: 27-05-2017 14:00:26
(En Español)
Bueno y la duda es esa: ¿Cual puede ser el motivo por el cual una pagina que no se conecta no tire ningun error?
Estaba probando un codigo (form de registro) al que por error no le asigne correctamente los parametros de conexion (precisamente estaba mal el nombre del servidor). Obviamente los datos no se cargaban en la base, sin embargo la pagina corria como si estuviera funcionando todo correctamente.
Desde ya gracias. Daniel Votos: 1 - Respuestas: 3 - Vistas: 18 Compartir en: Google Facebook Twitter LinkedIn Link
PHP - MYSQL: no se conecta con la base pero no da error[No resuelta]
Hola soy nuevo en el foro y estoy aprendiendo PHP.Bueno y la duda es esa: ¿Cual puede ser el motivo por el cual una pagina que no se conecta no tire ningun error?
Estaba probando un codigo (form de registro) al que por error no le asigne correctamente los parametros de conexion (precisamente estaba mal el nombre del servidor). Obviamente los datos no se cargaban en la base, sin embargo la pagina corria como si estuviera funcionando todo correctamente.
Desde ya gracias. Daniel Votos: 1 - Respuestas: 3 - Vistas: 18 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 27-05-2017 14:59:54 Hola Daniel, bienvenido.
Es probable que realmente no tengas error, que sea más bien error humano (de lógica). Sería excelente que compartieras el código que tienes.
Te comparto un código extraído de php.net que estoy seguro que servirá de algo.
<?php // Desactivar toda notificación de error error_reporting(0); // Notificar solamente errores de ejecución error_reporting(E_ERROR | E_WARNING | E_PARSE); // Notificar E_NOTICE también puede ser bueno (para informar de variables // no inicializadas o capturar errores en nombres de variables ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Notificar todos los errores excepto E_NOTICE error_reporting(E_ALL ^ E_NOTICE); // Notificar todos los errores de PHP (ver el registro de cambios) error_reporting(E_ALL); // Notificar todos los errores de PHP error_reporting(-1); // Lo mismo que error_reporting(E_ALL); ini_set('error_reporting', E_ALL); ?>
Escribe una de las instrucciones que te acabo de postear arriba y revisa nuevamente.
También existe la posibilidad de que tu servidor no te devuelva los reportes de error, no sé qué servidor (Apache, NGinx, IIS) utilices.
Comenta si te ha funcionado.
¡Saludos!. Votos: 3 - Link respuesta -
Fecha: 27-05-2017 15:53:16 Gracias genio por responder!
Error humano hay seguro. Jaja
Estoy usando Apache. Hubiera pensado que el problema podría estar en la no devolucion de errores, pero en otro codigo que tengo cuando pongo mal los parametros los errores si aparecen.
Algo que me olvidé de comentar es que este mismo codigo lo estaba escribiendo en una PC diferente y en esa SI da error cuando los parametros de conexion a la base no son correctos.
Pero bueno, ya que me lo solicitanm, les paso el codigo. Como les decia recien estoy aprendiendo pero funciona. Cualquier observacioon que le puedan hacer tenga o no que ver con el tema que me trajo aqui sera bienvenida. Saludos
Archivo "config.php" aqui pongo los parametros. Si adrede los pongo mal la pagina sigue funcionando aunque los datos no lleguen a la base.
<?php //se definen los paramatros de conexion en varias constantes define('DB_HOST','localhost:33065'); define('DB_USUARIO','root'); define('DB_PASS',''); define('DB_NOMBRE','wiredpet'); define('DB_CHARSET','utf8'); ?>
Archivo "Conexion.php"
<?php require("../../config/config.php");//llama al archivo que contiene los parametros para conectarse class Conexion{//clase conexion protected $conexion_db;//aca se guardara la conexion function __construct(){//constructor de la clase $this->conexion_db=new mysqli(DB_HOST,DB_USUARIO,DB_PASS,DB_NOMBRE);//se establece conexion. if($this->conexion_db->connect_errno){//condicional por si falla la conexion "error al conectar a la BBDD: " . $this->conexion_db->connect_error; return; } $this->conexion_db->set_charset(DB_CHARSET); //para que soporte caracteres latinos } } ?>
Archivo "consulta.php" aqui tengo las querys para hacer select e insert en la base
<?php //acceso a la tabla y devolucion de registros require("../../modelo/bbdd/conexion.php");//llamada al archivo que establece la conexion class Consulta extends Conexion{//hereda de la clase Conexion function __construct(){//constructor de la clase Consulta parent::__construct();//llama al constructor de la clase padre (clase Conexion) } public function getRegistros($sql){ //metodo que hace la consulta y devuelve resultado. Se le debe pasar la consulta por parametro "($sql)". $resultado=$this->conexion_db->query($sql);//guarda registros en "$resultado" return $resultado; } public function insertRegistros($insert){ //metodo que inserta datos en la base. Se le debe pasar la consulta por parametro "($sql)". $resultadoINS=$this->conexion_db->query($insert); } } ?>
Archivo "proceso_registro" procesa los datos que vienen del formulario para tratarlos con la BBDD
<?php $nombre=$_POST["nombre"]; $apellido=$_POST["apellido"]; $usuario=$_POST["usuario"]; $clave=$_POST["clave"]; $fecha=$_POST["fecha"]; $telefono=$_POST["telefono"]; $domicilio=$_POST["domicilio"]; $mail=$_POST["mail"]; $sexo=$_POST["sexo"]; require("../../modelo/bbdd/consulta.php");//llamada al archivo que contiene la clase consulta $consulta=new consulta();//instancia la clase consulta $insert="insert into usuarios (Nombre,Apellido,Mail,Telefono,Sexo,FechaNac,Domicilio) values('$nombre','$apellido','$mail','$telefono','$sexo','$fecha','$domicilio');";//se crea la variable $insert (que contiene la query) y se pasará como parametro. $insertResult=$consulta->insertRegistros($insert);//llamada al metodo "insertRegistro" de la clase consulta $insert="insert into login (Usuario,Clave) values('$usuario',MD5('$clave'));";//se crea la variable $insert (que contiene la query) y se pasará como parametro. $insertResult=$consulta->insertRegistros($insert);//llamada al metodo "insertRegistro" de la clase consulta if ($insertResult==true) { echo "error"; }else{ header("location:/application/vistas/miCuenta.html"); msqli_close($consulta->conexion_db); } ?>
Y este es el html para el form
<form name="myForm" method="POST" action="../controladores/registro/proceso_registro.php" class="form-horizontal"> <div class="row formcentrados "> <input name="nombre" ng-model="nombre" type="text" class="form-control" id="inlineFormInput" placeholder="Nombre" required> <span ng-show="myForm.nombre.$touched && myForm.nombre.$invalid" id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Falta "Nombre"</span> <br> <input name="apellido" ng-model="apellido" type="text" class="form-control" id="inlineFormInput" placeholder="Apellido" required> <span ng-show="myForm.apellido.$touched && myForm.apellido.$invalid" id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Falta "Apellido"</span> <br> <div class="input-group mb-2 mr-sm-2 mb-sm-0"> <div class="input-group-addon">@</div> <input name="usuario" ng-model="usuario" type="text" class="form-control" id="inlineFormInputGroup" placeholder="Nombre de Usuario" required> </div> <span ng-show="myForm.usuario.$touched && myForm.usuario.$invalid"id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"> </span> Falta "Nombre de Usuario"</span> <br> <input name="clave" ng-model="clave" type="password" class="form-control" id="inlineFormInputGroup" placeholder="Clave" required> <span ng-show="myForm.clave.$touched && myForm.clave.$invalid"id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"> </span> Falta "Clave"</span> <br> <input name="fecha" ng-model="fecha" type="text" id="fecha" name="fecha" class="form-control" placeholder="Fecha de Nacimiento" required > <span ng-show="myForm.fecha.$touched && myForm.fecha.$invalid"id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"> </span> Falta "Fecha Nacimiento"</span> <br> <input name="telefono" ng-model="telefono" type="tel" class="form-control" id="inlineFormInput" placeholder="Telefono" required> <span ng-show="myForm.telefono.$touched && myForm.telefono.$invalid" id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Falta "Telefono"</span> <br> <input name="domicilio" ng-model="domicilio" type="text" class="form-control" id="inlineFormInput" placeholder="Domicilio" required> <span ng-show="myForm.domicilio.$touched && myForm.domicilio.$invalid" id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Falta "Domicilio"</span> <br> <input name="mail" ng-model="mail" type="email" class="form-control" id="inlineFormInput" placeholder="Mail" required> <span ng-show="myForm.mail.$touched && myForm.mail.$invalid" id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Falta "Mail"</span> <br> <select class="form-control " id="sel1" name="sexo"> <option value="vacio">Sexo</option> <option value="Masculino">Masculino</option> <option value="Femenino">Femenino</option> </select><span ng-show="myForm.sexo.$touched && myForm.sexo.$invalid" id="danger"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> Falta "Mail"</span> <br> <button class="btn btn-primary btn-lg btn-block" type="submit" name="enviar" id="enviar" >Enviar</button> </form> <br>
Votos: 3 - Link respuesta -
Fecha: 28-05-2017 10:03:57 He probado el código de la conexión, si me ha provocado un error, y es en el puerto del host, se lo que quitar y todo funciona excelente.
Lo que imagino es que tú si puedes estar corriendo MySQL con host y puerto incluido, ya que se puede crear un host de esa forma.
Omitiendo que ese sea el problema, porque no me dices directamente donde está el error que has agregado adrede, la cual ese dato sería bueno tenerlo.
He utilizado tu clase conexión, agregando alguno de mis datos para aplicar la conexión correcta, anteriormente, con el cambio que le hice que fue remover el puerto, funciona bien.
Teniendo en cuenta que no sea ese el problema, entonces seguimos en las mismas, pero he modificado un poco el constructor, hágase ver la pequeña validación que le he agregado.
<?php define('DB_HOST', '127.0.0.1'); define('DB_USUARIO','SideMaster'); define('DB_PASS', 'Inform@tico'); define('DB_NOMBRE', 'sidemaster'); define('DB_CHARSET','utf8'); class Conexion { protected $conexion_db; function __construct(){ $this->conexion_db = new mysqli(DB_HOST, DB_USUARIO, DB_PASS, DB_NOMBRE); if (!$this->conexion_db->connect_errno) echo "It works"; else echo "Connection error"; $this->conexion_db->set_charset(DB_CHARSET); } } $Conexion = new Conexion(); ?>
Prueba la conexión que te he compartido y cambia alguno de los varlores, revisa si te ha dado It work o Connection error.
¡Saludos colega!. Votos: 2 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión