Comunidad de diseño web y desarrollo en internet online

PHP-MySQL: mostrar determinados elementos de una tabla.

Citar            
MensajeEscrito el 14 Nov 2006 07:45 pm
Tengo un script para mostrar los datos de la base de datos, pero necesitaría dar un paso más, sería que sólo se mostrasen determinados elementos de la DB.
Ahora mismo tengo esto

Código :

<?php
   $result=mysql_query("SELECT * FROM cosas ORDER BY id ASC",$link);
   while ($row=mysql_fetch_array($result))
   {
?>
      <p>
         <?php echo $row['pais']?>
      </p>
<?php
   }
?>


lo que hace es mostrar todos los elementos de la columna "pais" de la tabla, desde 0 hasta N.
Pero lo que me interesa es que muestre por ejemplo sólo los de el país "Francia"
me valdría con esto??

Código :

<?php
   $result=mysql_query("SELECT * FROM cosas ORDER BY id ASC",$link);
   while ($row=mysql_fetch_array($result))
   {
      if ($row['pais'] == Francia)
      {
?>
         <p>
            <?php echo $row['pais']?>
         </p>
         
<?php
      }
   }
?>

Es que lo he probado y no me funciona, y no encontré nada en ningún sitio, igual no busqué bien, pero es que no sé por qué nombre buscarlo...
Gracias de antemano :wink:

Por Johnny

Claber

1589 de clabLevel

4 tutoriales

  Héroes

firefox
Citar            
MensajeEscrito el 14 Nov 2006 07:52 pm
no seria algo como?

Código :

if ($row['pais'] == 'Francia')

(cuidado con las apóstrofes)

Por H3r3j3

290 de clabLevel

1 tutorial

Genero:Masculino  

Desarrollador Multimedia

firefox
Citar            
MensajeEscrito el 14 Nov 2006 08:01 pm
Tambien puedes hacer algo como (creo que más optimo):

Código :

<?php
   $result=mysql_query("SELECT * FROM `cosas` WHERE `pais` = 'Francia' ORDER BY `id` ASC", $link);
   while ($row=mysql_fetch_array($result))
   {
?>
      <p>
         <?php echo $row['pais']?>
      </p>
<?php
   }
?>


Digo, no me parece necesario traer datos que no necesitas ^^

Por Ramm

BOFH

3152 de clabLevel

6 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell REC Héroes

London, UK

firefox
Citar            
MensajeEscrito el 14 Nov 2006 08:55 pm
Efectivamente, era por los apóstrofes. Ramm también he contemplado tu opción, pero no me funcionaba, de todas formas muchas gracias, la investigaré más adelante.
En fin, gracias a ambos, saludos :wink:

Por Johnny

Claber

1589 de clabLevel

4 tutoriales

  Héroes

firefox
Citar            
MensajeEscrito el 14 Nov 2006 11:43 pm
La solución más óptima es sin duda la que apunta Ramm:

Código :

<?php
   $result=mysql_query("SELECT * FROM cosas WHERE pais = 'Francia' ORDER BY id ASC", $link);
   while ($row=mysql_fetch_array($result))
   {
?>
      <p>
         <?php echo $row['pais']?>
      </p>
<?php
   }
?>


Esto solo te mostrará un subconjunto de resultados que te interesan (tu ordenador te lo agradecerá si tienes una base de datos muy grande) :wink:

:roll: Y supongo que mostrarás más datos de lo que indicas en el código porque si no se mostrarán una larga lista del mismo país.

Un saludo.

Por dmvalverde

150 de clabLevel



Genero:Masculino  

Extremadura

firefox
Citar            
MensajeEscrito el 15 Nov 2006 11:06 am
Es más, yo cambiaría ese * por los nombres de los campos que quieres mostrar

Código :

"SELECT pais FROM cosas WHERE pais = 'Francia' ORDER BY id ASC"
Porque seleccionar todos los campos de todos los registros para mostrar solo uno es meterle un monton de trabajo innecesario a mysql

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 15 Nov 2006 01:43 pm
Bueno, ya todo arreglado y optimizado, he contemplado también la solución Yranac, pero no me es válida, ya que el único elemento que se queda sin mostrar de los que se extraen es el id. De todas formas gracias de nuevo, ya que me sirvió para ver por qué no me funcionaba la solución de Ramm, y era porque le sobraban comillas a la instrucción.
Ya que estamos os explico para qué quería saber esto, es por una web para un coleccionista de cascos militares que estoy haciendo, tiene una colección de más de 250 cascos diferentes y los quiere mostrar por países. Así que me hacía falta recorrer la tabla para que sólo se mostrasen los de un país determinado. He creado la plantilla para que cambiando una variable muestre el país que se desee haciendo uso del mismo documento, y el código al final quedó así:

Código :

         <!--principio-->
         <?php
            include('seguridad/conexion.php');
            $pais = Francia;
            $result=mysql_query("SELECT * FROM cascos WHERE pais_destino = '$pais' ORDER BY id ASC",$link);
         ?>
            <h3>Secci&oacute;n: <?php echo $pais ?></h3>
         <?php
            while ($row=mysql_fetch_array($result))
            {
?>
         <div class="ficha">
            <div class="izq">
               <a href="<?php echo $row['foto_1']?>" target="blank"><img src="<?php echo $row['tn_foto_1']?>" title="<?php echo $row['tn_foto_1']?>" alt="Vista lateral izquierdo de <?php echo $row['denominacion']?>" /></a>
               <a href="<?php echo $row['foto_2']?>" target="blank"><img src="<?php echo $row['tn_foto_2']?>" title="<?php echo $row['tn_foto_2']?>" alt="Vista de frente de <?php echo $row['denominacion']?>" /></a>
                   <a href="<?php echo $row['foto_3']?>" target="blank"><img src="<?php echo $row['tn_foto_3']?>" title="<?php echo $row['tn_foto_3']?>" alt="Vista inferior de <?php echo $row['denominacion']?>" /></a>
               <p><span class="titulillo">Descripci&oacute;n: </span><?php echo $row['descripcion']?></p>
            </div>
            <div class="der">
               <ul>
                  <li><span class="titulillo">Denominaci&oacute;n: </span><?php echo $row['denominacion']?></li>
                  <li><span class="titulillo">A&ntilde;o: </span><?php echo $row['anyo']?></li>
                  <li><span class="titulillo">Pa&iacute;s de Origen: </span><?php echo $row['pais_origen']?></li>
                  <li><span class="titulillo">Pa&iacute;s de Destino: </span><?php echo $row['pais_destino']?></li>
                  <li><span class="titulillo">Per&iacute;odo: </span><?php echo $row['periodo']?></li>
                  <li><span class="titulillo">Material: </span><?php echo $row['material']?></li>
                  <li><span class="titulillo">Guarnici&oacute;n: </span><?php echo $row['guarnicion']?></li>
                  <li><span class="titulillo">Barboquejo: </span><?php echo $row['barboquejo']?></li>
               </ul>
            </div>
            <div class="clearing"></div>
         </div>
            <?php
            }
         ?>
         <!--fin-->


Ya sólo tengo que hacer que la variable $pais tome los datos por get o post, en vez de tomarlos en el documento, y así todo mejor.
Gracias de nuevo a todos. :D

Por Johnny

Claber

1589 de clabLevel

4 tutoriales

  Héroes

firefox
Citar            
MensajeEscrito el 15 Nov 2006 03:22 pm

Johnny escribió:

he contemplado también la solución Yranac, pero no me es válida, ya que el único elemento que se queda sin mostrar de los que se extraen es el id.
Dependiendo de la base de datos el hacer una consulta con el asterisco o del tipo

Código :

SELECT nombre, capital, idioma, num_habitantes, lo_que_sea FROM cascos WHERE pais_destino = '$pais' ORDER BY id ASC
puede llegar a ser mucha, aunque hay que reconocer que el * es muy cómodo :lol: :lol:

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 15 Nov 2006 07:23 pm
y tanto... :lol:

Por Johnny

Claber

1589 de clabLevel

4 tutoriales

  Héroes

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.