entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

consulta lista de usuarios en mysql

Hola a todos... tengo un inconveniente con una consulta en mysql... es aquí el código para explicarle mejor:

 <?php

include("conexion/conexion.php");

$consulta=mysql_query("SELECT driver, COUNT(id) AS travels, SUM(amount) AS totals FROM waybill WHERE driver='???????' AND date=date(NOW()) ") or die(mysql_error());
$registro=mysql_fetch_array($consulta);

echo "<table id='cuadro' cellpadding='0' cellspacing='0' width='100%'>";
do{

 $drivers=$registro['driver'];
 $travel=$registro['travels'];
 $total= $registro['totals'];

echo "<tr><td><div class='marco_driver'>$drivers, $travel, $total</div></br></tr></td>";

}while($registro=mysql_fetch_array($consulta));
echo "</table>";

    ?>

Tengo en la tabla una columna llamada usuarios en la cual necesitaría que se ponga como variable en la zona de los ??????? donde el código de arriba... es necesario para cuando el haya un usuario nuevo también haga ese filtro por usuario.

Desde ya muchas gracias...

1 Respuesta

1voto

white Puntos75880

Hola @chirola30, intenta con las consultas preparadas de mysqli ( mysqli::prepare )

intenta así:

<?php

include("conexion/conexion.php");

// variable
$usuario = 'jhon doe';

// consulta preparada
$stmt = $mysqli->prepare("SELECT driver, COUNT(id) AS travels, SUM(amount) AS totals FROM waybill WHERE driver=? AND date=date(NOW())");

// agregamos los parametros a la consulta
$stmt->bind_param("s", $usuario);

    // ejecutar consulta
    $stmt->execute();

// obtenemos el resultado
$result = $stmt->get_result();

echo "<table id='cuadro' cellpadding='0' cellspacing='0' width='100%'>";

while($registro = $result->fetch_array()){

 $drivers=$registro['driver'];
 $travel=$registro['travels'];
 $total= $registro['totals'];

echo "<tr><td><div class='marco_driver'>$drivers, $travel, $total</div></br></tr></td>";

}

echo "</table>";

http://php.net/manual/es/mysqli.quickstart.prepared-statements.php
http://php.net/manual/es/mysqli.prepare.php

saludos!


PD: talvez te entendi mal, pero la variable que dices querer en WHERE driver = '???' es una columna de waybils con que contenido? es una cadena separada por un delimitador? si es asi lo que deberias hacer es:

WHERE driver IN('usuario1', 'usuario2', 'etc')

o

WHERE driver regexp 'usuario1|usuario2|usuario3'    

Si es asi como deseas hacerlo entonces estas haciendo algo innecesario y no tendrias que pasar por esta consulta si normalizas correctamente tus tablas, deberia existir una tabla usuarios con relacion a waybills

0voto

chirola30 comentado

Lo unico que necesito es de la misma data de la tabla en la columna de driver es poder poner el valor (nombre) del driver pero la dificultad es que quiero que tome el valor, pero como son varios valores necesito que pasen por la consulta cada uno para que pueda ver la cantidad de viajes y dinero de cada driver, y ademas quiero usar el nombre del driver como para poder usarlo como titulo.

0voto

white comentado

intenta con esta consulta:

SELECT driver, SUM(amount) as totals, COUNT(id) as travels
FROM waybill
GROUP BY driver

while($registro = $result->fetch_array())
{
    $driver = $registro['driver'];
    $travels = $registro['travels'];
    $total = $registro['totals'];

    echo sprintf('El conductor %s tiene %d viajes, con un total de: %d', 
                                                            $driver, $travels, $total);
}

0voto

chirola30 comentado

SOLUCIONADO DE LA SIGUIENTE MANERA---->

<?php
    include("conexion/conexion.php");

    $consulta_driver=mysql_query("SELECT * FROM login WHERE admin='0'");
    $registro_driver=mysql_fetch_array($consulta_driver);

    do{
        $drivers=$registro_driver['fullname'];

    $consulta=mysql_query("SELECT driver, COUNT(id) AS travels, SUM(amount) AS totals FROM waybill WHERE driver='".$drivers."' AND date=date(NOW()) ") or die(mysql_error());
    $registro=mysql_fetch_array($consulta);

    echo "<table id='cuadro' cellpadding='0' cellspacing='0' width='100%'>";
    do{

     $drivers=$registro_driver['fullname'];   
     $travel=$registro['travels'];
     $total= $registro['totals'];

    echo "<tr><td><div class='marco_driver'><b>$drivers</b></br><span>Travels: </span> $travel </br><span>Total: </span>$total</div></br></tr></td>";

    }while($registro=mysql_fetch_array($consulta));
    echo "</table>";

    }while($registro_driver=mysql_fetch_array($consulta_driver));

    ?>

Ahora como podria hacer lo mismo pero para obtener viajes de la fecha de la ultima semana actual?

0voto

white comentado

WHERE driver='".$drivers."'
AND date >= CURDATE() - interval 7 day

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta