|
71
|
Programación / PHP / Re: Recoger datos de procedimiento almacenado en PHP con SQLSRV
|
en: 8 Marzo 2018, 04:16 am
|
Si entiendo lo que dices, solo llamar a un SP no devuelve nada. Estuve toda la tarde pensando, se me hace dificl no poder montar una vm para probar. Otra cosa el proceso almacenado(SP) veo que tiene un solo UNION de tres SELECT, devuelve dos tablas, quizas eso sea, tambien agrege los '&' en los parametros por que me habia olvidado.. este es el codigo completo, pruebalo.. ini_set('display_startup_errors', 1); $f_inicial = '01/01/'.(date("Y")); $f_final = date("d/m/Y"); $gestora = 'pescobar'; $mes = 0; $actual = 0; $anterior = 0; $crecimiento = 0; include("seguro.php"); global $HOSTNAME, $USERNAME, $PASSWORD, $DATABASE; $info = array('Database' => 'Adicional', 'UID' => $USERNAME, 'PWD' => $PASSWORD); $conexion = sqlsrv_connect($HOSTNAME, $info); if ($conexion === false) { } $sql_preg = "{CALL comparar_ventas_meses(?, ?, ?)}"; array( &$f_inicial, SQLSRV_PARAM_IN ); array( &$f_final, SQLSRV_PARAM_IN ); array( &$gestora, SQLSRV_PARAM_IN ); ); $registros = sqlsrv_query($conexion, $sql_preg, $params); if( $registros === false) { } $rows = sqlsrv_has_rows( $registros ); //Vemos si existen filas.. if ($rows === true) { //Existen? cuantas? echo 'Cant: ' . sqlsrv_num_rows( $registros ) . '</br>'; }else{ echo 'No existen datos </br>'. } /* while ($id = sqlsrv_fetch_array($registros, SQLSRV_FETCH_ASSOC)) { echo '<pre>'; print_r($id); echo '</pre>'; } */ //Quizas esta sea la mejor forma para un SP do { while ($row = sqlsrv_fetch_array($registros)) { echo '<pre>'; echo '</pre>'; } } while (sqlsrv_next_result($registros)); //Siguiente tabla
|
|
|
72
|
Programación / PHP / Re: Recoger datos de procedimiento almacenado en PHP con SQLSRV
|
en: 8 Marzo 2018, 03:14 am
|
Estoy empezando a dudar si la db esta vacia ja. Haber la conexion lo establece y parece ser que tambien realiza la consulta, lo que dudo es que no devuelve nada por que este vacia ?. $rows = sqlsrv_has_rows( $registros ); //Vemos si existen filas.. if ($rows === true) { //Existen? cuantas? echo 'Cant: ' . sqlsrv_num_rows( $registros ) . '</br>'; }else{ echo 'No existen datos </br>'. } while ($id = sqlsrv_fetch_array($registros, SQLSRV_FETCH_ASSOC)) { echo '<pre>'; echo '</pre>'; }
Probaste el SP sobre MSSQL no ? te devuelve la lista de filas no? Que version de PHP y MSSQL estas.
|
|
|
74
|
Programación / PHP / Re: Recoger datos de procedimiento almacenado en PHP con SQLSRV
|
en: 7 Marzo 2018, 19:19 pm
|
Los errores de php te los a mostrado antes no ? Fijate en tu archivo php.ini si es correcto el siguiente parametro display_errors = on Algunos cambios, prueba y dime <?php //Solo para asegurar que los errores en php se //muestren, luego borralo ini_set('display_startup_errors', 1); $f_inicial = '01/01/'.(date("Y")); $f_final = date("d/m/Y"); $gestora = 'pescobar'; $mes = 0; $actual = 0; $anterior = 0; $crecimiento = 0; include("seguro.php"); global $HOSTNAME, $USERNAME, $PASSWORD, $DATABASE; $info = array('Database' => 'Adicional', 'UID' => $USERNAME, 'PWD' => $PASSWORD); $conexion = sqlsrv_connect($HOSTNAME, $info); if ($conexion === false) { } //Segun varios ejemplos con mssql para SP //vi que utilizan 'call' $sql_preg = "{CALL comparar_ventas_meses(?, ?, ?)}"; //Tambien siguiendo varios ejemplos utilizan //arrays multimensional para definir //parametros conjunto a una constante en //este caso SQLSRV_PARAM_IN array( $f_inicial, SQLSRV_PARAM_IN ); array( $f_final, SQLSRV_PARAM_IN ); array( $gestora, SQLSRV_PARAM_IN ); ); $registros = sqlsrv_query($conexion, $sql_preg, $params); //No se pudo realizar la consulta, boom error if( $registros === false) { } //Mostrar todo lo que devuelve la consulta //sola para ver que devuelve echo '<pre>'; echo '</pre>'; while ($id = sqlsrv_fetch_array($registros)) { echo $id['actual']; }
Si no voy a tratar de montar una maquina virtual para ver si es correcto, no tengo como probar el codigo.
|
|
|
78
|
Programación / Bases de Datos / Re: Base de datos con eficiencia?
|
en: 6 Marzo 2018, 02:53 am
|
No, no es buena practica agregar nuevas columnas, modificar la db puede corromperla si no sabes lo que haces, ademas el formato de tiempo(YYYY/MM/DD) no es bueno para definir una columna. Lo mejor seria crear otra tabla y relacionar los datos. id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, email VARCHAR(50) ); CREATE TABLE attend ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id INT(6) UNSIGNED, /* Lo relacionamos con el id del usuario */ DATE DATE );
Y luego en nuestra consulta pedimos los datos ordenados como lo queramos.. /* Obtener todas fechas y usuarios */ SELECT USER.id, firstname, DATE FROM attend INNER JOIN USER ON attend.user_id = USER.id;
http://sqlfiddle.com/#!9/7307a7/1
|
|
|
79
|
Programación / PHP / Re: Envio de datos a la base de datos con AJAX
|
en: 5 Marzo 2018, 22:53 pm
|
... $.when($.ajax("verificar_captcha.php"),$.ajax("anadirevento.php")) .then(validar12(),send()); ...
Creo que el error se debe a validar12(), debe pasarse como una referencia a una funcion(validar12) en .then y como es una funcion sin argumentos siempre se cumplira la condicion. ... .then(validar12); //Nota que es sin los parentesis. ...
Creo que no es valido usar send() despues de validar12, segun la documentacion la sagunda funcion se reserba en caso de que alguno de las peticiones ajax no pudieron realizarse. Ademas, deberias plantear si de verdad necesitas un captcha, por que estas tratando de validar el captcha pero a la vez subes la consulta, osea que el captcha no sirve para nada. Fijate en la consola, F12 > Network, veras como se disparan las dos consultas ajax cuando apretas el boton. Deberias ser.. verificar campos vacios > verificar captcha > añadir evento.
|
|
|
|
|
|
|