Foros del Web » Programando para Internet » PHP »

Mostrar resultados de sql

Estas en el tema de Mostrar resultados de sql en el foro de PHP en Foros del Web. Buenos dias, Tengo esta sentencia sql creada con la que obtengo los datos que necesito de la bbdd: SELECT A.Description, A.Partnumber, B.Modelo FROM `baterias` AS ...
  #1 (permalink)  
Antiguo 27/09/2011, 07:09
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sant Marti de Centelles
Mensajes: 25
Antigüedad: 13 años, 2 meses
Puntos: 0
Mostrar resultados de sql

Buenos dias,

Tengo esta sentencia sql creada con la que obtengo los datos que necesito de la bbdd:

SELECT A.Description, A.Partnumber, B.Modelo
FROM `baterias` AS A
INNER JOIN `baterias` AS B ON A.Partnumber = B.Partnumber
WHERE A.Modelo LIKE "ACER ASPIRE 5235"
AND A.Partnumber LIKE "BT.%"
AND A.Description LIKE "BATTERY%"
ORDER BY A.Partnumber

esto me genera varilas filas con el mismo dato de Partnumber cosa que es correcto.
Ahora bien, mi problema viene a al hora de pintarlo por pantalla, lo que quiero conseguir es que en vez de salir 3 linias con el mismo Partnumber, me salga solo 1 PERO en la 3 columna me muestre agrupado y separado por "," el modelo de B.modelo.
Quiza le exijo mucho a mi limtado conocimiento actual, agradeceria cualquier pista al respecto.

Gracias de antemano.
  #2 (permalink)  
Antiguo 27/09/2011, 08:46
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Mostrar resultados de sql

Si solo deseas mostrarlo asi y no usaras esa consulta nuevamente, yo te recomiendo que uses GROUP_CONCAT, asi te ahorras el JOIN.

SELECT Description, Partnumber, GROUP_CONCAT(Modelo) as Modelos FROM baterias
GROUP BY Partnumber

Correla, ve el resultado y dime como te fue :)
  #3 (permalink)  
Antiguo 27/09/2011, 08:54
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sant Marti de Centelles
Mensajes: 25
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Mostrar resultados de sql

La probare mañana en el curro y te digo que tal ha ido, logicamente la consulta no la quiero volver a ejecutar, cada busqueda es individual ya que me estoy haciendo un minibuscador para saber diciendo el partnumber o el modelo que equipos son compatibles con que baterias etc...

Para asegurar, esto me daria un arrai tipo

[Descripcion][Partnumber][Modelos compatibles con el Partnumber] ?

osea si pico modelo 5820 a buscar me daria la descripcion, los partnumber compatibles y los modelos de esos partnumber?
Ejemplo:
Descripcion |Partnumber|modelo
------------------------------------------
hola 11111 5830
hola 11111 5830G
adios 22222 6030



Sacaria un array que fuese

Descripcion |Partnumber|modelo
------------------------------------------
hola 111111 5830,5830G

?
  #4 (permalink)  
Antiguo 28/09/2011, 06:54
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sant Marti de Centelles
Mensajes: 25
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Mostrar resultados de sql

Bueno he decidido separar la consultar para poderla tratar mejor, pero al hacerlo me da error:


Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in C:\Program Files\EasyPHP-5.3.8.0\www\modelo.php on line 14

Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.0\www\modelo.php on line 15

Warning: mysql_query() expects parameter 2 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.0\www\modelo.php on line 21
Access denied for user 'root'@'localhost' (using password: YES)


Pongo el codigo a ver si veis el fallo:

Código PHP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3.  <head>
  4.   <title> New Document </title>
  5.   <meta name="Generator" content="EditPlus">
  6.   <meta name="Author" content="">
  7.   <meta name="Keywords" content="">
  8.   <meta name="Description" content="">
  9.  </head>
  10.  
  11.  <body>
  12.   <?php
  13.     //Conectamos la bbdd
  14.     $conexion = mysql_connect("localhost", "root", "mysql");
  15.     mysql_select_db("baterias", $conexion);
  16.  
  17.     //seleccionamos los registros que queremos
  18.     $modelo = $_POST["modelo"];
  19.     //$queEmp = 'SELECT A.Description, A.Partnumber, B.Modelo FROM baterias AS A INNER JOIN baterias AS B ON A.Partnumber = B.Partnumber WHERE A.Modelo LIKE '.$modelo.' AND A.Partnumber LIKE "BT.%" AND A.Description LIKE "BATTERY%" ORDER BY A.Partnumber';
  20.     $queEmp = 'SELECT Description, Partnumber FROM baterias WHERE Modelo = "'.$modelo.'" AND Description LIKE "BATTERY%" ORDER BY Partnumber';
  21.     $resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
  22.     $totEmp = mysql_num_rows($resEmp);
  23.     ?>
  24.     <table>
  25.     <tr>
  26.         <td>Descripcion</td>
  27.         <td>Part Number</td>
  28.         <td>Modelos Compatibles</td>
  29.     </tr>
  30.     <?php
  31.         if ($totEmp> 0) {
  32.             $contador = 0;
  33.             //$temporal= "<tr><td>".$primero."</td><td>".$segundo."</td><td>".$rowEmp['B.Modelo']."</td>";
  34.             while ($rowEmp = mysql_fetch_assoc($resEmp)) {
  35.                 if ($contador = 0){
  36.                     echo "<tr><td>".$rowEmp['Descripcion']."</td>";
  37.                     echo "<td>".$rowEmp['Partnumber']."</td>";
  38.                     $queEmp2 = 'SELECT Modelo FROM baterias WHERE Partnumber ='.$rowEmp['Partnumber'].'';
  39.                     $resEmp2 = mysql_query($queEmp2, $conexion) or die(mysql_error());
  40.                     $totEmp2 = mysql_num_rows($resEmp2);
  41.                     $rowEmp2 = mysql_fetch_assoc($resEmp2);
  42.                     $i = 0;
  43.                     while ($rowEmp2 = mysql_fetch_assoc($resEmp2)){
  44.                         if ($i = 0){
  45.                             echo "<td>".$rowEmp2['Modelo']."</td></tr>";
  46.                             $i = 1;
  47.                         }else{
  48.                             echo "<tr><td></td><td></td>";
  49.                             echo "<td>".$rowEmp2['Modelo']."</td><tr>";
  50.                         }
  51.                     }
  52.                     $contador = 1;
  53.                 }
  54.                 else{
  55.                     echo "<tr><td>".$rowEmp['Descripcion']."</td>";
  56.                     echo "<td>".$rowEmp['Partnumber']."</td>";
  57.                     $queEmp2 = 'SELECT Modelo FROM baterias WHERE Partnumber ='.$rowEmp['Partnumber'].'';
  58.                     $resEmp2 = mysql_query($queEmp2, $conexion) or die(mysql_error());
  59.                     $totEmp2 = mysql_num_rows($resEmp2);
  60.                     $rowEmp2 = mysql_fetch_assoc($resEmp2);
  61.                     $i = 0;
  62.                     while ($rowEmp2 = mysql_fetch_assoc($resEmp2)){
  63.                         if ($i = 0){
  64.                             echo "<td>".$rowEmp2['Modelo']."</td></tr>";
  65.                             $i = 1;
  66.                         }else{
  67.                             echo "<tr><td></td><td></td>";
  68.                             echo "<td>".$rowEmp2['Modelo']."</td><tr>";
  69.                         }
  70.                     }
  71.                 }
  72.             }
  73.         }
  74.     ?>
  75.     </table>
  76.  </body>
  77. </html>

Última edición por profion01; 28/09/2011 a las 07:05
  #5 (permalink)  
Antiguo 28/09/2011, 07:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Mostrar resultados de sql

Revisa el usuario y contraseña que estas usando para conectarte a MySQL. ¿Son los correctos? root:mysql
  #6 (permalink)  
Antiguo 28/09/2011, 11:40
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sant Marti de Centelles
Mensajes: 25
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Mostrar resultados de sql

En el .ini de mysql pone almenos que es mysql la contraseña y en phomyadmin aparece que el usuario es root@localhost asi que imagino que si es root:mysql
  #7 (permalink)  
Antiguo 29/09/2011, 02:58
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sant Marti de Centelles
Mensajes: 25
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Mostrar resultados de sql

Bueno problema de user/pass solucionado, ahora aparece otro xD (es el problema infinito!!!!):


Warning: mysql_error() expects parameter 1 to be resource, string given in C:\Program Files\EasyPHP-5.3.8.0\www\modelo.php on line 57

Aqui el codigo:

Código PHP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3.  <head>
  4.   <title> New Document </title>
  5.   <meta name="Generator" content="EditPlus">
  6.   <meta name="Author" content="">
  7.   <meta name="Keywords" content="">
  8.   <meta name="Description" content="">
  9.  </head>
  10.  
  11.  <body>
  12.   <?php
  13.     //Conectamos la bbdd
  14.     $conexion = mysql_connect("localhost", "root", "");
  15.     mysql_select_db("acerinterna", $conexion);
  16.  
  17.     //seleccionamos los registros que queremos
  18.     $modelo = $_POST["modelo"];
  19.     //$queEmp = 'SELECT A.Description, A.Partnumber, B.Modelo FROM baterias AS A INNER JOIN baterias AS B ON A.Partnumber = B.Partnumber WHERE A.Modelo LIKE '.$modelo.' AND A.Partnumber LIKE "BT.%" AND A.Description LIKE "BATTERY%" ORDER BY A.Partnumber';
  20.     $queEmp = 'SELECT Description, Partnumber FROM baterias WHERE Modelo = "'.$modelo.'" AND Description LIKE "BATTERY%" ORDER BY Partnumber';
  21.     $resEmp = mysql_query($queEmp, $conexion) or die(mysql_error("No hay cojones de hacer esta consulta"));
  22.     $totEmp = mysql_num_rows($resEmp);
  23.     ?>
  24.     <table border = "1">
  25.     <tr>
  26.         <td bgcolor="#c0c0c0">Descripcion</td>
  27.         <td bgcolor="#c0c0c0">Part Number</td>
  28.         <td bgcolor="#c0c0c0">Modelos Compatibles</td>
  29.     </tr>
  30.     <?php
  31.         if ($totEmp> 0) {
  32.             $contador = 0;
  33.             //$temporal= "<tr><td>".$primero."</td><td>".$segundo."</td><td>".$rowEmp['B.Modelo']."</td>";
  34.             while ($rowEmp = mysql_fetch_assoc($resEmp)) {
  35.                 if ($contador = 0){
  36.                     echo "<tr><td>".$rowEmp['Description']."</td>";
  37.                     echo "<td>".$rowEmp['Partnumber']."</td>";
  38.                     $queEmp2 = 'SELECT Modelo FROM baterias WHERE Partnumber ='.$rowEmp['Partnumber'].'';
  39.                     $resEmp2 = mysql_query($queEmp2, $conexion) or die(mysql_error("No hay cojones de hacer esta consulta"));
  40.                     $rowEmp2 = mysql_fetch_assoc($resEmp2);
  41.                     $i = 0;
  42.                     while ($rowEmp2 = mysql_fetch_assoc($resEmp2)){
  43.                         if ($i = 0){
  44.                             echo "<td>".$rowEmp2['Modelo']."</td></tr>";
  45.                             $i = 1;
  46.                         }else{
  47.                             echo "<tr><td></td><td></td>";
  48.                             echo "<td>".$rowEmp2['Modelo']."</td><tr>";
  49.                         }
  50.                     }
  51.                     $contador = 1;
  52.                 }
  53.                 else{
  54.                     echo "<tr><td>".$rowEmp['Description']."</td>";
  55.                     echo "<td>".$rowEmp['Partnumber']."</td>";
  56.                     $queEmp2 = 'SELECT Modelo FROM baterias WHERE Partnumber ='.$rowEmp['Partnumber'].'';
  57.                     $resEmp2 = mysql_query($queEmp2, $conexion) or die(mysql_error("No hay cojones de hacer esta consulta"));
  58.                     $rowEmp2 = mysql_fetch_assoc($resEmp2);
  59.                     $i = 0;
  60.                     while ($rowEmp2 = mysql_fetch_assoc($resEmp2)){
  61.                         if ($i = 0){
  62.                             echo "<td>".$rowEmp2['Modelo']."</td></tr>";
  63.                             $i = 1;
  64.                         }else{
  65.                             echo "<tr><td></td><td></td>";
  66.                             echo "<td>".$rowEmp2['Modelo']."</td><tr>";
  67.                         }
  68.                     }
  69.                 }
  70.             }
  71.         }
  72.     ?>
  73.     </table>
  74.  </body>
  75. </html>
  #8 (permalink)  
Antiguo 29/09/2011, 06:58
 
Fecha de Ingreso: septiembre-2011
Ubicación: Sant Marti de Centelles
Mensajes: 25
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Mostrar resultados de sql

Bueno voy avanzando, he purgado un poco el codigo de un par de errores que he visto pero el problema base persiste, creo que peta al intentar hacer la segunda consulta.
Como vereis lo que hago es sacar la descripcion y partnumber (de bateria) de un producto(ordenador) y luego en la segunda consultar saber con que modelos de equipos es compatible esa bateria.
Este es el error:

Warning: mysql_error() expects parameter 1 to be resource, string given in C:\Program Files\EasyPHP-5.3.8.0\www\modelo.php on line 58
Descripcion Part Number Modelos Compatibles
BATTERY.LI-ION.6C.4K4mAH.SAN BT.00603.111


Pongo el codigo actual, si veis algo raro avisad:

Código PHP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3.  <head>
  4.   <title> New Document </title>
  5.   <meta name="Generator" content="EditPlus">
  6.   <meta name="Author" content="">
  7.   <meta name="Keywords" content="">
  8.   <meta name="Description" content="">
  9.  </head>
  10.  
  11.  <body>
  12.   <?php
  13.     //Conectamos la bbdd
  14.     $conexion = mysql_connect("localhost", "root", "");
  15.     mysql_select_db("acerinterna", $conexion);
  16.  
  17.     //seleccionamos los registros que queremos
  18.     $modelo = $_POST["modelo"];
  19.     //$queEmp = 'SELECT A.Description, A.Partnumber, B.Modelo FROM baterias AS A INNER JOIN baterias AS B ON A.Partnumber = B.Partnumber WHERE A.Modelo LIKE '.$modelo.' AND A.Partnumber LIKE "BT.%" AND A.Description LIKE "BATTERY%" ORDER BY A.Partnumber';
  20.     $queEmp = 'SELECT Description, Partnumber FROM baterias WHERE Modelo = "'.$modelo.'" AND Description LIKE "BATTERY%" ORDER BY Partnumber';
  21.     $resEmp = mysql_query($queEmp, $conexion) or die(mysql_error("No hay cojones de hacer esta consulta 1"));
  22.     $totEmp = mysql_num_rows($resEmp);
  23.     ?>
  24.     <table border = "1">
  25.     <tr>
  26.         <td bgcolor="#c0c0c0">Descripcion</td>
  27.         <td bgcolor="#c0c0c0">Part Number</td>
  28.         <td bgcolor="#c0c0c0">Modelos Compatibles</td>
  29.     </tr>
  30.     <?php
  31.         if ($totEmp> 0) {
  32.             $contador = 0;
  33.             while ($rowEmp = mysql_fetch_assoc($resEmp)) {
  34.                 if ($contador = 0){
  35.                     echo "<tr><td>".$rowEmp['Description']."</td>";
  36.                     echo "<td>".$rowEmp['Partnumber']."</td>";
  37.                     $queEmp2 = 'SELECT Modelo FROM baterias WHERE Partnumber ='.$rowEmp['Partnumber'].'';
  38.                     $resEmp2 = mysql_query($queEmp2, $conexion) or die(mysql_error("No hay cojones de hacer esta consulta 2"));
  39.                     $i = 0;
  40.                     while ($rowEmp2 = mysql_fetch_assoc($resEmp2)){
  41.                         if ($i = 0){
  42.                             echo "<td>".$rowEmp['Modelo']."</td></tr>";
  43.                             $i = 1;
  44.                         }else{
  45.                             echo "<tr><td></td><td></td>";
  46.                             echo "<td>".$rowEmp2['Modelo']."</td><tr>";
  47.                         }
  48.                     }
  49.                     $contador = 1;
  50.                 }
  51.                 else{
  52.                     echo "<tr><td>".$rowEmp['Description']."</td>";
  53.                     echo "<td>".$rowEmp['Partnumber']."</td>";
  54.                     $queEmp2 = 'SELECT Modelo FROM baterias WHERE Partnumber ='.$rowEmp['Partnumber'].'';
  55.                     $resEmp2 = mysql_query($queEmp2, $conexion) or die(mysql_error("No hay cojones de hacer esta consulta 3"));
  56.                     $i = 0;
  57.                     while ($rowEmp2 = mysql_fetch_assoc($resEmp2)){
  58.                         if ($i = 0){
  59.                             echo "<td>".$rowEmp2['Modelo']."</td></tr>";
  60.                             $i = 1;
  61.                         }else{
  62.                             echo "<tr><td></td><td></td>";
  63.                             echo "<td>".$rowEmp2['Modelo']."</td><tr>";
  64.                         }
  65.                     }
  66.                 }
  67.             }
  68.         }
  69.     ?>
  70.     </table>
  71.  </body>
  72. </html>

Etiquetas: resultados, 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 21:53.