Foros del Web » Programando para Internet » PHP »

Duda sobre consulta

Estas en el tema de Duda sobre consulta en el foro de PHP en Foros del Web. Buenas noches a todos los del foro, tengo una duda lo que estoy haciendo es lo siguiente, una consulta a mi base que me muestre ...
  #1 (permalink)  
Antiguo 24/05/2012, 23:54
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Duda sobre consulta

Buenas noches a todos los del foro, tengo una duda lo que estoy haciendo es lo siguiente, una consulta a mi base que me muestre resultados donde el estado sea Galeria, pero la bronca es que tengo como 4 resultados con eso como puedo hacer para que me aparescan esos 4 pero que no se repitan los datos, ya que cada uno consta de diferentes datos, por favor este es mi codigo:


Código PHP:
 <?php

              
// Datos de conexión a la base
              
$base="juamazon";
              
$con=mysql_connect(localhost,root,root);
               
mysql_select_db($base,$con);
              
$pegar "SELECT * FROM articulos WHERE estado='Galeria'";
              
$cad mysql_db_query($base,$pegar) or die (mysql_error());
              
$row mysql_fetch_array($cad);
    
            
?>
            
            
            <!--  content -->  
            <div id="content">
              <div id="apDiv2">
              
               <?php echo' <div id="contenido1">
                  <div id="C1">
                    <div id="C5">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In rutrum   fringilla urna quis suscipit. Phasellus mattis ultrices sapien, id   euismod leo sodales eget.    fringilla urna quis suscipit. </div>
                    <div id="C6">'
.$row[1].'</div>
                    <div id="C7">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
                    <div id="C8">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
                    <div id="C9"><a href="x.html"><img src="images/añadir.PNG" width="101" height="45" alt="a" /></a></div>
                    <div id="C10"><a href="x.html"><img src="images/vermas.PNG" width="101" height="45" alt="v" /></a></div>
                    <p>&nbsp;</p>
                  </div>
                  <div id="C2">
                    <div id="c11">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In rutrum   fringilla urna quis suscipit. Phasellus mattis ultrices sapien, id   euismod leo sodales eget.    fringilla urna quis suscipit. </div>
                    <div id="c12">'
.$row[1].</div>
                    <
div id="c13">Lorem ipsum dolor sit ametconsectetur adipiscing elit.</div>
                    <
div id="c14">Lorem ipsum dolor sit ametconsectetur adipiscing elit.</div>
                    <
div id="c15"><a href="x.html"><img src="images/añadir.PNG" width="101" height="45" alt="a1" /></a></div>
                    <
div id="c16"><a href="x.html"><img src="images/vermas.PNG" width="101" height="45" alt="v1" /></a></div>
                    <
p>&nbsp;</p>
</
div>
  #2 (permalink)  
Antiguo 25/05/2012, 00:57
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

Cita:
Iniciado por echo_ Ver Mensaje
Buenas noches a todos los del foro, tengo una duda lo que estoy haciendo es lo siguiente, una consulta a mi base que me muestre resultados donde el estado sea Galeria, pero la bronca es que tengo como 4 resultados con eso como puedo hacer para que me aparescan esos 4 pero que no se repitan los datos, ya que cada uno consta de diferentes datos, por favor este es mi codigo:


Código PHP:
 <?php

              
// Datos de conexión a la base
              
$base="juamazon";
              
$con=mysql_connect(localhost,root,root);
               
mysql_select_db($base,$con);
              
$pegar "SELECT * FROM articulos WHERE estado='Galeria'";
              
$cad mysql_db_query($base,$pegar) or die (mysql_error());
              
$row mysql_fetch_array($cad);
    
            
?>
            
            
            <!--  content -->  
            <div id="content">
              <div id="apDiv2">
              
               <?php echo' <div id="contenido1">
                  <div id="C1">
                    <div id="C5">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In rutrum   fringilla urna quis suscipit. Phasellus mattis ultrices sapien, id   euismod leo sodales eget.    fringilla urna quis suscipit. </div>
                    <div id="C6">'
.$row[1].'</div>
                    <div id="C7">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
                    <div id="C8">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
                    <div id="C9"><a href="x.html"><img src="images/añadir.PNG" width="101" height="45" alt="a" /></a></div>
                    <div id="C10"><a href="x.html"><img src="images/vermas.PNG" width="101" height="45" alt="v" /></a></div>
                    <p>&nbsp;</p>
                  </div>
                  <div id="C2">
                    <div id="c11">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In rutrum   fringilla urna quis suscipit. Phasellus mattis ultrices sapien, id   euismod leo sodales eget.    fringilla urna quis suscipit. </div>
                    <div id="c12">'
.$row[1].</div>
                    <
div id="c13">Lorem ipsum dolor sit ametconsectetur adipiscing elit.</div>
                    <
div id="c14">Lorem ipsum dolor sit ametconsectetur adipiscing elit.</div>
                    <
div id="c15"><a href="x.html"><img src="images/añadir.PNG" width="101" height="45" alt="a1" /></a></div>
                    <
div id="c16"><a href="x.html"><img src="images/vermas.PNG" width="101" height="45" alt="v1" /></a></div>
                    <
p>&nbsp;</p>
</
div>
Necesitas hacer un bucle, ya que siempre imprimes los valores de la última fila encontrada.
Código PHP:
 <?php

              
// Datos de conexión a la base
              
$base="juamazon";
              
$con=mysql_connect(localhost,root,root);
               
mysql_select_db($base,$con);
              
$pegar "SELECT * FROM articulos WHERE estado='Galeria'";
              
$cad mysql_db_query($base,$pegar) or die (mysql_error());
             
// $row = mysql_fetch_array($cad);
                        // Usa esto:
            
while($row mysql_fetch_array($cad)){
                    
Aquí pondrías el contenido de un solo divya que se repetiría el número de vecescomo filas haya encontrado.
                     <
div>
                          echo 
$row['nombre de el campo 1 en la base de datos'];
                          echo 
$row['nombre de el campo 2 en la base de datos'];
                          
Si la consulta te retornara más de una columna
                     
</div>
            }
    
            
?>
            
            
            <!--  content -->  
            <div id="content">
              <div id="apDiv2">
              
               <?php echo' <div id="contenido1">
                  <div id="C1">
                    <div id="C5">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In rutrum   fringilla urna quis suscipit. Phasellus mattis ultrices sapien, id   euismod leo sodales eget.    fringilla urna quis suscipit. </div>
                    <div id="C6">'
.$row[1].'</div>
                    <div id="C7">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
                    <div id="C8">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
                    <div id="C9"><a href="x.html"><img src="images/añadir.PNG" width="101" height="45" alt="a" /></a></div>
                    <div id="C10"><a href="x.html"><img src="images/vermas.PNG" width="101" height="45" alt="v" /></a></div>
                    <p>&nbsp;</p>
                  </div>
                  <div id="C2">
                    <div id="c11">Lorem ipsum dolor sit amet, consectetur adipiscing elit. In rutrum   fringilla urna quis suscipit. Phasellus mattis ultrices sapien, id   euismod leo sodales eget.    fringilla urna quis suscipit. </div>
                    <div id="c12">'
.$row[1].</div>
                    <
div id="c13">Lorem ipsum dolor sit ametconsectetur adipiscing elit.</div>
                    <
div id="c14">Lorem ipsum dolor sit ametconsectetur adipiscing elit.</div>
                    <
div id="c15"><a href="x.html"><img src="images/añadir.PNG" width="101" height="45" alt="a1" /></a></div>
                    <
div id="c16"><a href="x.html"><img src="images/vermas.PNG" width="101" height="45" alt="v1" /></a></div>
                    <
p>&nbsp;</p>
</
div>
  #3 (permalink)  
Antiguo 25/05/2012, 00:59
Avatar de kar_kastillo  
Fecha de Ingreso: mayo-2012
Mensajes: 32
Antigüedad: 12 años
Puntos: 2
Respuesta: Duda sobre consulta

buen dia echo_ haber si t sirve de algo esta info...
esa es una consulta general y te pueden Aparecer datos repetidos:

select autor from libros;

Para obtener la lista de autores sin repetición usamos:

select distinct autor from libros;

También podemos tipear:

select autor from libros group by autor;

Note que en los tres casos anteriores aparece "null" como un valor para "autor"· Si sólo queremos la lista de autores conocidos, es decir, no queremos incluir "null" en la lista, podemos utilizar la sentencia siguiente:

select distinct autor from libros where autor is not null;

Contar los distintos autores


Para contar los distintos autores, sin considerar el valor "null" usamos:

select count(distinct autor) from libros;

Note que si contamos los autores sin "distinct", no incluirá los valores "null" pero si los repetidos:

select count(autor) from libros;

Esta sentencia cuenta los registros que tienen autor.

Para obtener los nombres de las editoriales usamos:

select editoriales from libros;

Para una consulta en la cual los nombres no se repitan tipeamos:

select distinct editorial from libros;

Podemos saber la cantidad de editoriales distintas usamos:

select count(distinct editoriales) from libros;

Podemos combinarla con "where". Por ejemplo, queremos conocer los distintos autores de la editorial "Planeta":

select distinct autor from libros where editorial='Planeta';

También puede utilizarse con "group by":

select editorial, count(distinct autor) from libros group by editorial;

Para mostrar los títulos de los libros sin repetir títulos, usamos:

select distinct titulo from libros order by titulo;

La cláusula "distinct" afecta a todos los campos presentados. Para mostrar los títulos y editoriales de los libros sin repetir títulos ni editoriales, usamos:

select distinct titulo,editorial from libros order by titulo;

Note que los registros no están duplicados, aparecen títulos iguales pero con editorial diferente, cada registro es diferente.

espero esta informacion t ayude a solucionar tu probrema.. saludos
  #4 (permalink)  
Antiguo 25/05/2012, 01:04
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

Gracias por tu respuesta jeixuxspn
, pero no es lo que busco ya que los divs son 4 y estan estaticos lo unico que quiero que cambie es la informacion y haciendo lo que tu me comentas dependiendo de los registros que encuente me muesta la cantidad de divs :c
  #5 (permalink)  
Antiguo 25/05/2012, 01:16
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

Cita:
Iniciado por echo_ Ver Mensaje
Gracias por tu respuesta jeixuxspn
, pero no es lo que busco ya que los divs son 4 y estan estaticos lo unico que quiero que cambie es la informacion y haciendo lo que tu me comentas dependiendo de los registros que encuente me muesta la cantidad de divs :c
Pero de la forma que lo estás intentando hacer nunca va a funcionar esto: $row = mysql_fetch_array($cad);

devuelve solo la primera fila de la consulta: $pegar = "SELECT * FROM articulos WHERE estado='Galeria'";

Según la documentación de PHP esto es lo que hace mysql_fetch_array

mysql_fetch_array — Recupera una fila de resultado como un array asociativo, un array numérico o como ambos.

Si tienes 4 DIVS estáticos entonces puedes hacer una consulta limitando el resultado a 4 con limit 4. A lo mejor no he entendido bien lo que quieres hacer.
  #6 (permalink)  
Antiguo 25/05/2012, 01:25
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

si entiendo perfectamente lo que me planteas y desdeluego muchas gracias, pero lo que quiero hacer es: tengo 5 registros de en el cual su estado es Galeria y otros mas que tienen otros estados diferentes, ami solo me importa los que tienen galeria ya que esos son los que mostrare en los divs, ahora si hago la consulta como lo estaba haciendo solo me muestra el primer registro que agarra en la BD y me muestra lo mismo en los 4 divs.
Saludos!
  #7 (permalink)  
Antiguo 25/05/2012, 01:45
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

Lo que puedes hacer, es guardar el resultado en un array y luego recorrelo manualmente, de esta manera controlas lo que quieres mostrar.
  #8 (permalink)  
Antiguo 25/05/2012, 01:55
 
Fecha de Ingreso: noviembre-2011
Ubicación: Sevilla
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Duda sobre consulta

como ha dicho jeixuxspn tienes que hacer lo siguiente :
$pegar = "SELECT * FROM articulos WHERE estado='Galeria' LIMIT 4";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());
while ($row = mysql_fetch_array($cad))
{
//Aqui pones el código de 1 div, ya que se imprimirá 4 veces.
echo $row['campo_bd'];
}

Sinceramente, también te recomiendo que uses nombres de variables un poco más claros
"$pegar" para la sentencia de busqueda? "$cad" para el resultado de la consulta?
mejor $select para la sentencia o $cadena_consulta o simplemente $consulta.
  #9 (permalink)  
Antiguo 25/05/2012, 02:02
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

Gracias, exacto con arrays pero como lo puedo hacer?
  #10 (permalink)  
Antiguo 25/05/2012, 02:05
 
Fecha de Ingreso: noviembre-2010
Ubicación: Munich - Alemania
Mensajes: 76
Antigüedad: 13 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

Cita:
Iniciado por echo_ Ver Mensaje
Gracias, exacto con arrays pero como lo puedo hacer?

Esto te puede ayudar:

Código PHP:
<?php

               
// Datos de conexión a la base
              
$base="juamazon";
              
$con=mysql_connect(localhost,root,root);
               
mysql_select_db($base,$con);
              
$pegar "SELECT * FROM articulos WHERE estado='Galeria'";
              
$cad mysql_db_query($base,$pegar) or die (mysql_error());
              
              
$array = array(); // Inicialización de un array vacío
            
             
while($row mysql_fetch_array($cad)){ // Aqui guardas el resultado en un array
                
array_push($array,$row);
             }
             
             echo 
$array[0]['estado']; // contenido de la variable estado de la primera fila encontrada
             
echo $array[1]['estado']; // contenido de la variable estado de la segunda fila encontrada
             
echo $array[2]['estado']; // contenido de la variable estado de la tercera fila encontrada
             
echo $array[3]['estado']; // contenido de la variable estado de la cuarta fila encontrada
             
             // En este caso el estado será siempre el mismo 'Galeria', pero tu lo puedes cambiar por el dato 
             // que desees mostrar (id o como se llama tu campo en la BBDD).
?>
  #11 (permalink)  
Antiguo 25/05/2012, 02:08
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

jeixuxspn gracias, probare y te digo.
Saludos!
  #12 (permalink)  
Antiguo 25/05/2012, 02:12
 
Fecha de Ingreso: noviembre-2011
Ubicación: Paris
Mensajes: 450
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Duda sobre consulta

jeixuxspn sos un capo tio! me funciona al 100 muchisimas gracias : )

Etiquetas: html, mysql, sql
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 22:52.