Foros del Web » Programando para Internet » PHP »

condición a un registro de una consulta

Estas en el tema de condición a un registro de una consulta en el foro de PHP en Foros del Web. Hola a todos tengo un pequeño problema necesito ponerle condición aun registro DENTRO DE UN CONSULTA pero que condicione solo a dicho campo mas no ...
  #1 (permalink)  
Antiguo 27/10/2015, 19:35
Avatar de Blace57  
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta condición a un registro de una consulta

Hola a todos tengo un pequeño problema necesito ponerle condición aun registro DENTRO DE UN CONSULTA pero que condicione solo a dicho campo mas no a toda la consulta de esta manera

tengo tres tablas


lo que busco es lo siguiente
que cuando haga una consulta
Código:
SELECT  programa.Nombre_Programa, responsable.  Nombre_Responsable, participante.Nombre_Participante  FROM programa INNER JOIN responsables ON responsables.ID_PROGRAMA = programa.ID_PROGRAMA
INNER JOIN participantes ON participantes.ID_PROGRAMA = programa.ID_PROGRAMA

Me aparezca de la siguiente forma


Como hago para condicionar el campo para que me seleccione según el nivel o que puedo hacer para conseguir ese resultado.
Espero que me puedan ayudar gracias de antemano
  #2 (permalink)  
Antiguo 27/10/2015, 21:10
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: condición a un registro de una consulta

Saludo
Pues con ese query trae la información consolidada,
el asunto es más visual me parece, en cuyo caso
lo que se podría hacer es un array que asocie los nombres
de los participantes en su respectivo nivel.
Ej:
Código PHP:
Ver original
  1. $niveles = array();
  2. while() //la consulta se recorre
  3. {
  4. $niveles[] = array($participante, $nivel);
  5. }
  6. // luego en el recorrido del array por cada columna
  7. $participantesnivel = '';
  8. for($i...)
  9. {
  10. if($niveles[$i][0] == 1) //comparacion de nivel
  11.     $participantesnivel .= $niveles[$i][1].',';
  12. }
  13. //en esta variable estaran los nombres de los participantes del nivel 1
  14. $participantesnivel = substr($participantesnivel,0,strlen($participantesnivel)-1);

y ya con eso el resto es dibujar los datos contenidos
en el array en el formato que se quiere.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 27/10/2015, 21:22
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: condición a un registro de una consulta

Prueba asi a ver, es un poco mas larga que la que ya te sugirieron pero igual funciona:
Código PHP:
Ver original
  1. //recibimos la id a buscar
  2. $id_programa = $_POST['id_programa'];
  3.  
  4. //buscamos el programa
  5. $prog = $db->query("SELECT * FROM programa = '$id_programa'");
  6. $tot_pro = mysqli_num_rows($prog);
  7. $row_pro = $prog->fetch_assoc();
  8. $programa = $row_pro['Nombre_Programa'];//nombre del programa para mostrarlo luego
  9.  
  10. //responsable
  11. $resp = $db->query("SELECT * FROM responsable = '$id_programa'");
  12. $tot_resp = mysqli_num_rows($resp);
  13. $row_resp = $resp->fetch_assoc();
  14. $responsable = $row_resp['Nombre_Responsable'];//nombre del responsable para mostrarlo luego
  15.  
  16. //ahora listamos los participantes
  17. $a = $db->query("SELECT COUNT(Nivel_Participante) as cantidad,Nivel_Participante FROM `participante` GROUP BY `Nivel_Participante` ORDER BY `Nivel_Participante` ASC");
  18. $to = mysqli_num_rows($a);
  19.  
  20. //creamos la lista
  21. echo "<ul>";
  22. while($row = $a->fetch_array()){
  23.    
  24.     //mostramos el nivel y cuantos participantes hay
  25.     echo "<li>Nivel ".$row['Nivel_Participante']." - ".$row['cantidad']." Integrantes<ul>";
  26.     $filtro = $row['Nivel_Participante'];
  27.        
  28.         //listamos los nombres de los participantes de ese nivel
  29.         $parti = $db->query("SELECT * FROM `participante` WHERE `Nivel_Participante` = '$filtro'");
  30.             while($rowb = $parti->fetch_array()){
  31.                 echo "<li>".$rowb['Nombre_Participante']."</li>";
  32.             } echo "</ul>";
  33.            
  34. }echo "</ul>";

Puedes verla funcionando en esta lista de Precios, ya que agrupa los items por cada categoria, en este caso por nivel en una sola consulta
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 27/10/2015, 21:28
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: condición a un registro de una consulta

Saludo
Teniendo en cuenta el código recien posteado por xfxstudios,
los dos primeros selects se pueden reemplazar por la consulta
que se tiene como base, pero haciendo solo join entre
programa y responsable, relación que actualmente es 1:1

Y ya luego, el resto propuesto.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 28/10/2015, 21:46
Avatar de Blace57  
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: condición a un registro de una consulta

Gracias a todos por responder la consulta que puse solo era una referencia de lo que queria hacer voy a probar sus sugerencias y a ver que pasa y les cuento como me fue de antemano gracias por su tiempo
  #6 (permalink)  
Antiguo 02/11/2015, 11:17
Avatar de Blace57  
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: condición a un registro de una consulta

Hola de nuevo les estoy molestando otra vez con el código proporcionado por xfxstudios me realiza bien la búsqueda de los participantes por nivel
pero lo que no logro controlar es que también controle los participantes con el proyecto asignado es decir solo los que esten asignados a un determinado proyecto y no en general como me realiza.
este es el código que modifique
Código HTML:
 <!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<form name="form1" method="post" action="probar.php" id="cdr" >
  <h3>Buscar Cliente  </h3>
      <p>
        <input name="id_programa"  type="text" id="id_programa">
        <input type="submit" name="Submit" value="buscar" />
        </p>
      </p>
</form>

<?php
 include('conexion.php');
//recibimos la id a buscar
$id_programa = $_POST['id_programa'];
 


 
//responsable
$resp = mysql_query("SELECT proyecto.NOMBRE_PROYECTO,
                     
                      responsables.NOMBRE_RESPONSABLE, responsables.APELLIDO_RESPONSABLE
FROM proyecto
INNER JOIN proyres ON proyres.ID_PROYECTO = proyecto.ID_PROYECTO
INNER JOIN responsables ON responsables.ID_RESPONSABLE = proyres.ID_RESPONSABLE  WHERE ID_PROYRES= '$id_programa'");
$row_resp = mysql_fetch_assoc($resp);
$tot_resp = mysql_num_rows($resp);
$responsable1 = $row_resp['NOMBRE_PROYECTO'];//nombre del responsable para mostrarlo luego
$responsable = $row_resp['NOMBRE_RESPONSABLE'];//nombre del responsable para mostrarlo luego
$responsable2 = $row_resp['APELLIDO_RESPONSABLE'];//nombre del responsable para mostrarlo luego

echo "<ul>";
 
echo "<li>Nombre Proyecto      "."-".$row_resp['NOMBRE_PROYECTO']." </li>";
echo "<li>Nombre Proyecto      "."-".$row_resp['NOMBRE_RESPONSABLE']." ".$responsable2."</li>";
echo "</ul>";
//ahora listamos los participantes
 $a = mysql_query("SELECT COUNT(Nivel_Participante) as cantidad,Nivel_Participante FROM participantes GROUP BY Nivel_Participante ORDER BY  Nivel_Participante ASC");

 
//creamos la lista
echo "<ul>";
while($row = mysql_fetch_array($a)){
    
    //mostramos el nivel y cuantos participantes hay
    echo "<li>Nivel ".$row['Nivel_Participante']." - ".$row['cantidad']." Integrantes<ul>";
    $filtro = $row['Nivel_Participante'];
        
        //listamos los nombres de los participantes de ese nivel
        $parti = mysql_query("SELECT * FROM participantes WHERE Nivel_Participante = '$filtro'");
            while($rowb = mysql_fetch_array($parti)){
                echo "<li>".$rowb['NOMBRE_PARTICIPANTE']." ".$rowb['APELLIDO_PARTICIPANTE']."</li>";
            } echo "</ul>";
            
}echo "</ul>";

?>
</body>
</html> 
y este es el resultado que obtengo


Gracias de antemano por su ayuda
  #7 (permalink)  
Antiguo 02/11/2015, 13:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: condición a un registro de una consulta

Saludo
Eso es porque en la segunda consulta no se está filtrando por
el programa a buscar, lo mejor es agregar eso a la misma.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #8 (permalink)  
Antiguo 02/11/2015, 17:24
Avatar de Blace57  
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: condición a un registro de una consulta

hola gracias por responder si justamente ese es el inconveniente que tengo no encuentro la manera de filtrar los datos por el id del proyecto ya que la segunda consulta esta trabajando con un COUNT y no me permite trabajar con INNER JOIN PARA QUE ME REALICE SOLO EL CONTEO DE LAS QUE ESTAN RELACIONADAS CON UN PROYECTO
No se si hay alguna manera de hacer que cuente solo los participares que tengan algún proyecto asignado
De antemano gracias por su ayuda

Última edición por Blace57; 02/11/2015 a las 17:31
  #9 (permalink)  
Antiguo 02/11/2015, 18:41
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: condición a un registro de una consulta

prueba asi amigo:

Código PHP:
Ver original
  1. //ahora listamos los participantes
  2.  $a = mysql_query("SELECT COUNT(Nivel_Participante) as cantidad,Nivel_Participante FROM participantes WHERE id_programa = '$id_programa' GROUP BY Nivel_Participante ORDER BY  Nivel_Participante ASC");

alli ya deberia de filtrarte los participantes por el programa al que pertenecen
__________________
[email protected]
HITCEL
  #10 (permalink)  
Antiguo 02/11/2015, 21:49
Avatar de Blace57  
Fecha de Ingreso: mayo-2014
Mensajes: 8
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: condición a un registro de una consulta

hola gracias por responder me funciona muy bien gracias, si no es mucha molestia una consulta mas si creo otra tabla intermedia entre las dos ya existentes de esta manera para obtener ese resultado

Código PHP:
$amysql_query("SELECT proyecto.NOMBRE_PROYECTO,
                      participantes.NOMBRE_PARTICIPANTE, participantes.APELLIDO_PARTICIPANTE
                      FROM proyecto
INNER JOIN proypar ON proypar.ID_PROYECTO = proyecto.ID_PROYECTO
INNER JOIN participantes ON participantes.ID_PARTICIPANTE = proypar.ID_PARTICIPANTE"
); 
Como realiza el conteo de los participantes con el nivel pero relacionado con esa tabla intermedia utilizando COUNT e INNER JOIN
De antemano gracias por su ayuda

Etiquetas: condición, registro, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:23.