Comunidad de diseño web y desarrollo en internet online

Dos consultas simultáneas a la misma tabla...

Citar            
MensajeEscrito el 25 Nov 2011 02:16 pm
Hola a todos,
Tengo dos consultas simultáneas a la misma tabla, una sólo pide una cadena de nombres que coincidan con la letra con que comienzan los productos, y la otra, debería traer todos los campos de la misma tabla, pero SOLO del primer producto, ya que son muchos los campos que debe traer.
Me hago bolas con el resultado. La primera consulta debe ir situada en una línea sobre la segunda consulta. Esto lo resuelvo con los estilos y las tablas, pero... no sé cómo resolver este lío!

Código PHP :

$letra=$_GET['letra'];
$result = mysql_query(“SELECT nombre FROM verd WHERE nombre LIKE '$letra%' ORDER BY nombre
         AND SELECT * FROM verd WHERE '$letra%' = 1”);


Me pregunto si el código de arriba haría lo que yo quiero o si tengo que separar las consultas en dos y poner de esta otra forma:

Código PHP :

$result = mysql_query(“SELECT nombre FROM verd WHERE nombre LIKE '$letra%' ORDER BY nombre”);
$result1 = mysql_query(“SELECT * FROM verd WHERE nombre LIKE '$letra%' = 1”);


Siendo esta la opción más acertada, cómo haría entonces el recorrido y la búsqueda con el mysql_fetch_array? Se puede poner ($result, $result1)?

Código PHP :

while($row=mysql_fetch_array($result)) {
   echo $row['nombre'];

Por M_o_n_i_c

25 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 25 Nov 2011 04:03 pm

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 25 Nov 2011 06:41 pm
Hola, escucha, las consultas son en LA MISMA TABLA, no necesito hacer un JOIN. Por eso mi consulta, las consultas son simultáneas, no necesito unir ninguna tabla ni otra db porque toda la información está en la MISMA TABLA. Gracias por tu respuesta. No es lo que estoy buscando. Si no soy clara, os ruego que me lo hagan notar. Por favor. Muchas gracias!!

Por M_o_n_i_c

25 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 25 Nov 2011 08:06 pm
pudes hacer un UNION si son 2 consultas separadas o hacer un join si necesitas la 1° consulta para discriminar en la 2°

Código MySQL :

SELECT *
FROM tabla1  t1
INNER JOIN tabla1 t2 ON t1.parent = t2.id

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 25 Nov 2011 09:57 pm
Inyaka, me interesa mucho tu respuesta, claro que quiero diferenciar una consulta de otra, pero... cómo resuelvo la respuesta? cómo indico que la primera consulta, que sólo es una lista de los nombres de los productos que comiencen por la misma letra, de la que trae todos los campos del primer producto de la lista? Yo pensé en esto:

Código PHP :

$letra = $_GET['letra'];
$result =mysql_query ("select nombre from tabla where nombre like '$letra%' order by nombre");
$result1 =mysql_query("select * from tabla where nombre like '$letra%' ASC, limit = 1");


Te parece que esto funcione? lo oque quiero es que me cargue todos los productos que comienzan por una letra, pero al mismo tiempo, también que me traiga todos los campos del primer registro de esa letra, se entiende? Me temo que no soy clara, por eso repito las cosas, perdona.
Y luego, cómo diferencio el odern de las respuestas?

Por M_o_n_i_c

25 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 25 Nov 2011 11:04 pm
eso es un UNION de 2 SELECT http://dev.mysql.com/doc/refman/5.0/es/union.html



atencion tienes un error de seguridad en ese ejemplo

Código PHP :

$letra = $_GET['letra'];

debiera ser

Código PHP :

$letra = addslashes($_GET['letra']);

para evitar códigos malicioso de algun juaker (jamás faltan)

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 26 Nov 2011 06:06 pm
Inaka, no estoy preugntando sobre SQL ni MySQL, sino sobre PHP. Necesito saber cómo hacer las consultas desde PHP, no desde SQL. NO necesito UNIR tablas, porque la tabla ES UNA SOLA. A ver si me entienden los que leen. No preciso SQL ni MYSQL, sino PHP y creo haber enttrado en el foro específico. Muchas gracias
De paso pregunto porqué no me funciona este if. Me responde el segundo, pero no el primero, como las dos consultas dan el mismo resulado, pensé que lo propio era hacer un if, si pulsan un nombre sale un resultado, y si van al buscador, sale el mismo resultado. Qué problema tiene este código? Graicas desde ya:

Código PHP :

<?php  
   @$db = mysql_pconnect("localhost", "root", "123456"); 
   if (!$db) 
   {
   echo "Error no se ha podido conectar a la bd. Prueba más tarde";
   exit;
   }

   mysql_select_db("natur");
   $searchterm =$_GET['searchterm'];
   if($_GET['searchterm']) {
      $result = mysql_query("Select * from verduras where nombre = '$searchterm'") or die(mysql_error());
   } else {
      $word= $_GET['word'];
      $result = mysql_query("Select * from verduras where nombre = '$word'") or die(mysql_error());
      }
      
   while ($row = mysql_fetch_assoc($result)) {
      echo "<table width=900 border=0>\n";
      echo "<tr><td width=300><table width=300>
      <tr><td valign=top><h3 style=color:#333; margin-top:-30px;>{$row['nombre']}</h3></td></tr>
      <tr><td><h6 style=color:#b41>{$row['tmb']}</h6></td></tr>
      <tr><td>{$row['fot']}</td></tr></table></td>
      <td width=200><table width=200 border=0>
      <tr><td width=100 align=center><h5>Minerales:</h5><p>{$row['minerales']}</p></td>
      <td align=center valign=top><h5>Vitaminas:</h5><p>{$row['vitaminas']}</p></td></tr><tr>
      <td width=100 align=center><h5>Prote&iacute;nas:</h5><p><span style=color:#ff0000;> Por 100 grms</span><br />{$row['proteinas']}</p></td>
      <td align=center><h5>Calor&iacute;as:</u></span></h5> <p><span style=color:#ff0000;> Por 100 grms</span><br />{$row['calorias']}<p></td></tr></table></td>
      <td width=400 valign=top><h5>Beneficios:</h5><p>{$row['prop']}</p></td>
      </tr>";
   }
  echo "</table";
 ?>

Por al_di

65 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 27 Nov 2011 05:27 pm
Inaqia, tenías razón, he leído detenidamente los enlaces que me enviaste. Claro, para hacer las consultas simultáneas, primero debo unir las partes en myslq, pero me olvidé de un detalle importante. No soy experta, como lo habrás notado, sólo que quiero entender PHP y mysql.
Escucha, cuando traigo el array con todos los nombres (sale perfecto) no sólo debería aparecerme el primer registro de la primera palabra, para eso, ahora entiendo, debería unir o hacer un JOIN. Tienes razón, me costó entenderlo, pero me ayudó muchísimo que me respondieras con esos enlaces.
El caso es que, cuando pulso, por ejemplo, la letra B, deberías aparecer todos aquellos productos que comiencen con "B", si? esto ya está resuelto, el detalle que yo había omitido es que... al traer este listado (en horizontal) cada uno de ellos, de los nombres comenzados por x letra, deben tener a su vez su propia consulta. Un "select nombre from verd where nombre ="word". Entiendes?
No sé si es posible hacer esto. Es decir, además de traer el listado, a su vez cada uno de ellos debe tener su propia ocnsulta. Supongo que puede ser posible, pero como te digo yo soy novata y por hacer una práctica, creo que me metí en un berenjenal. Si es muy complicado, dímelo, por favor, me será de mucha ayuda y perdona que te moleste tanto.

Por al_di

65 de clabLevel



Genero:Femenino  

firefox

 

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