PHP - Conectar a dos bses de datos para mostrar datos en la misma pagina

 
Vista:
sin imagen de perfil
Val: 28
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por yaney (16 intervenciones) el 20/06/2019 11:29:20
Hola a todos:
tengo la siguiente pregunta.
¿Como puedo hacer la conexión a dos bases de datos iguales con los datos distintos que están en el mismo servidor, para mostrar datos según una condición y mostrarlos en una misma página?
El motor de base de datos es MySql

Tengo el siguiente código para contar las veces que se repite un valor en un campo. Las consustas sin poner la condicion se ejecutan, es decir, me cuenta todos los servicios de la base de datos completa, pero yo quiero que me muentre el count de un periodo seleccionado.

Si pongo la condición me muestra correctamente la primera consulta, la segunda consulta no muestra nada, no entiendo bien qué sucede, por eso pongo aquí mi código a ver si alguien puede decirme un modo de hacer esto.
muchas gracias de ante mano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<form class="form" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
    <h3>Periodo</h3>
    Da:
    <input name="start_date"  type="date" id="start_date" >
    a:
    <input name="end_date"  type="date" id="end_date" >
    <input type="hidden" id="form_sent" name="form_sent" value="true">
    <input type="submit" name="Submit" value="Envia" id="button" />
 </form>
 
<?php
    $start_date = $_POST['start_date'];
    $end_date = $_POST['end_date'];
 
 
    include('cnx1.php');
    $servicio = "SELECT servicio,count(*) as serv from tabla WHERE data BETWEEN '$start_date' AND '$end_date'";
    $result=mysqli_query($mysqli,$servicio);
 
?>
 
<table class="table">
    <br><h3>Data base 1</h3>
    <thead>
        <tr>
            <th>Servicio</th>
            <th>Cantidad</th>
        </tr>
            <?php while ($f = mysqli_fetch_array($result)) {?>
        <tr>
            <td><?php echo $f['servicio']; ?> </td>
            <td><?php echo $f['serv']; ?> </td>
        </tr>
    </tbody>
    <?php }  ?>
</table>
 
 
<?php
 
include('cnx2.php');
 
 
$start=$_POST['start_date'];
$end=$_POST['end_date'];
 
$servicio = "SELECT servicio,count(*) as serv from tabla WHERE data BETWEEN '$start' AND '$end'";
$result=mysqli_query($mysqli,$servicio);
 
?>
 
<table class="table">
    <br><h3>Data base 2</h3>
    <thead>
        <tr>
            <th>Servicio</th>
            <th>Cantidad</th>
        </tr>
            <?php while ($f = mysqli_fetch_array($result)) {?>
        <tr>
            <td><?php echo $f['servicio']; ?> </td>
            <td><?php echo $f['serv']; ?> </td>
        </tr>
    </tbody>
    <?php }  ?>
</table>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por Kathyu (905 intervenciones) el 20/06/2019 18:13:58
Count(*) a que hace referencia? porque para contar un valor se hace validando un campo

1
SELECT servicio,COUNT(problem) as serv from tabla WHERE data BETWEEN '$start' AND '$end'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 28
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por yaney (16 intervenciones) el 20/06/2019 18:16:40
Count lo utilizo para contar las recurrencias del dato del campo servicio, me da las veces que existe un registro con el valor repetido en el campo servicio. No sé si lo esté utilizando bien, pero me da el resultado que quiero.

SELECT servicio,COUNT(*) as serv from tabla WHERE data BETWEEN '$start' AND '$end'

me da por ejemplo

Servicio Cantidad
Tatuajes 254
Piercing 214
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por Kathyu (905 intervenciones) el 20/06/2019 18:24:54
COUNT(*) cuenta los registros de la SELECT guardando en memoria las columnas de las consultas, es decir si en la consulta tienes 20 columnas y 300 registros, el guardara los 6000 espacios en memoria con su data. lo cual demoraria el procesamiento de la consulta.

COUNT(columna) cuenta los registros en los cuales "columna" no es NULL

COUNT(n) (donde n es un numero) toma el valor n (en este caso) como una tabla de unica columna donde su valor por cada registro es n para cada registro, no importando que sea de 20 columnas. para el ejemplo del primer caso, serian solo 300 * 1 = 300 valores, lo cual procesaría más rápidamente la consulta.

Bueno, la cosa es que su segunda tabla no se crea en la vista, algún error?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 28
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por yaney (16 intervenciones) el 20/06/2019 18:42:14
Me aconseja que lo ponga así ?

SELECT servicio,COUNT(servicio) as serv from tabla WHERE data BETWEEN '$start' AND '$end'

Las consultas por separado funcionan bien. Las dos juntas sin la condicion where también funcionan bien
Note que la primera consulta se realiza a una base de datos diferente de la segunda consulta

el problema está que cuando pongo la condición para que tome las fechas que se ingresan en el formulario y muestre los registros que están en ese periodo de fechas, la primera consulta la realiza bien, pero la segunda no arroja ningún resultado, lo deja en blanco. sin error
Gracias por su ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por Kathyu (905 intervenciones) el 20/06/2019 19:41:23
1
SELECT Count(servcio) AS xx FROM tabla...


Mire si esto le funciona?? solo cambie algunas cosas y me funciona, si a usted no ya es tema de conexiones quesas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<form class="form" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
    <h3>Periodo</h3>
    Da:
    <input name="start_date"  type="date" id="start_date" >
    a:
    <input name="end_date"  type="date" id="end_date" >
    <input type="hidden" id="form_sent" name="form_sent" value="true">
    <input type="submit" name="Submit" value="Envia" id="button" />
 </form>
 
<?php
    $start = $_POST['start_date'].' 00:00:01';
    $end = $_POST['end_date'].' 00:00:01';
    // echo "<pre>";
    //     print_r($_POST);
    // echo "</pre>";
    echo $start.'<br>';
    echo $end;
 
    include('../resources/php/linker01.php');
    $servicio = "SELECT COUNT(id) AS xxx FROM empleado WHERE recordate BETWEEN '$start' AND '$end'";
    $result=mysqli_query($mysqli,$servicio);
 
?>
 
<table class="table">
    <br><h3>Data Cruz Roja</h3>
    <thead>
        <tr>
            <th>Cantidad</th>
        </tr>
            <?php while ($f = mysqli_fetch_array($result)) {?>
        <tr>
            <td><?php echo $f['xxx']; ?> </td>
        </tr>
    </tbody>
    <?php }  ?>
</table>
 
 
<?php
 
include('../resources/php/linker02.php');
 
 
$start=$_POST['start_date'].' 00:00:01';
$end=$_POST['end_date'].' 00:00:01';
// echo "<pre>";
//         print_r($_POST);
//     echo "</pre>";
    echo $start.'<br>';
    echo $end;
$servicio = "SELECT COUNT(id) AS xxx FROM empleado WHERE recordate BETWEEN '$start' AND '$end'";
$result=mysqli_query($mysqli,$servicio);
 
?>
 
<table class="table">
    <br><h3>Data Voluntariado</h3>
    <thead>
        <tr>
            <th>Cantidad</th>
        </tr>
            <?php while ($f = mysqli_fetch_array($result)) {?>
        <tr>
            <td><?php echo $f['xxx']; ?> </td>
        </tr>
    </tbody>
    <?php }  ?>
</table>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 28
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por yaney (16 intervenciones) el 21/06/2019 09:25:19
Gracias por tu respuesta. He probado el código y aún la segunda consulta me sigue dando 0 de valor, al parecer el problema es que no se conecta a la segunda base de datos
tengo dos archivos de conexión, trabajo en un servidor local con Appserv

el cnx1.php

1
2
3
4
5
6
$mysqli=new mysqli("localhost","root","pass123","db1");
 
if(mysqli_connect_errno()){
    echo 'Conexion Fallida : ', mysqli_connect_error();
    exit();
}

cnx2.php

1
2
3
4
5
6
$mysqli=new mysqli("localhost","root","pass123","db2");
 
if(mysqli_connect_errno()){
    echo 'Conexion Fallida : ', mysqli_connect_error();
    exit();
}

No sé qué podrá ser,
gracias por su ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por Kathyu (905 intervenciones) el 21/06/2019 18:27:23
Y que error le da la segunda? Porque yo si probé y todo bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 28
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por yaney (16 intervenciones) el 21/06/2019 18:51:42
Da resultado 0 o en blanco a veces.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Conectar a dos bses de datos para mostrar datos en la misma pagina

Publicado por Kathyu (905 intervenciones) el 21/06/2019 20:17:24
Tiene permisos para la base con el usuario que se esta conectando? (puede ser eso).



Haga algo. Quite la primer parte y vea que le sale en la segunda... Quite la parte php nada mas, el html ahí déjelo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar