Foros del Web » Programando para Internet » PHP »

Consultar datos de un array

Estas en el tema de Consultar datos de un array en el foro de PHP en Foros del Web. Hola, de nuevo por aqui, hace rato que no pasaba por estos lados. Tengo 39 datos en un array llamado $dato, los datos que contiene ...
  #1 (permalink)  
Antiguo 17/03/2012, 15:51
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Consultar datos de un array

Hola, de nuevo por aqui, hace rato que no pasaba por estos lados.

Tengo 39 datos en un array llamado $dato, los datos que contiene el array son ids de unos campos que tengo en una base de datos, mi pregunta es: ¿como puedo consultar todos y cada uno de los datos de este array en mysql?

como deberia estar construida la consulta?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 17/03/2012, 15:56
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Consultar datos de un array

Código PHP:
Ver original
  1. $sql = 'select * from mitabla where id in('.implode(',',$dato).')';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 17/03/2012, 16:01
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Consultar datos de un array

me da este error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)' at line 1
__________________
Say no more.......
  #4 (permalink)  
Antiguo 17/03/2012, 16:02
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Consultar datos de un array

o.O Es obvio el error, tienes x items en el array, pero muchos de ellos están vacíos...

Actualización: Será mejor que muestres la estructura del array para saber lo que contiene
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 17/03/2012, 16:16
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Consultar datos de un array

Ahhhh ya, lo que pasa es que los datos de ese array vienen de un formulario donde hay 39 campos de tipo checkbox y lo que necesito es consultar solo los datos que fueron seleccionados, por eso pense en ponerlos todos en un array, pero veo que no es la forma... sabes de que otra forma lo podria hacer?

La estructura de mi Array es:

Código PHP:
Ver original
  1. //recibimos variables
  2. $_1 = $_POST['1'];
  3. $_2 = $_POST['2'];
  4. $_3 = $_POST['3'];
  5. $_4 = $_POST['4'];
  6. $_5 = $_POST['5'];
  7. $_6 = $_POST['6'];
  8. $_7 = $_POST['7'];
  9. $_8 = $_POST['8'];
  10. $_9 = $_POST['9'];
  11. $_10 = $_POST['10'];
  12. ......
Código PHP:
Ver original
  1. $dato = array($_1,$_2,$_3,$_4,$_5,$_6,$_7,$_8,$_9,$_10,$_11,$_12,$_13,$_14,$_15,$_16,$_17,$_18,$_19,$_20,$_21,$_22,$_23,$_24,$_25,$_26,$_27,$_28,$_29,$_30,$_31,$_32,$_33,$_34,$_35,$_36,$_37,$_38,$_39);
__________________
Say no more.......

Última edición por el_cesar; 17/03/2012 a las 16:22 Razón: Especificar
  #6 (permalink)  
Antiguo 17/03/2012, 18:50
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Consultar datos de un array

o.O mmm se puede hacer mucho mejor!

formulario
Código HTML:
Ver original
  1. <input type="text" name="dato[]" />
  2. <input type="text" name="dato[]" />
  3. <input type="text" name="dato[]" />
  4. <input type="text" name="dato[]" />
  5. <input type="text" name="dato[]" />
  6. <input type="text" name="dato[]" />
  7. <input type="text" name="dato[]" />
  8. <input type="text" name="dato[]" />
  9. <!-- Y así todos los campos que necesites -->

PHP
Código PHP:
Ver original
  1. $sql = 'select * from mitabla where id in('.implode(',',$_POST['dato']).')';

Pero tu problema es que hay campos que están vacíos, tendrás que hacer algo así...
Código PHP:
Ver original
  1. $newArray = array();
  2. foreach($_POST['dato'] as $item) {
  3.      if (!empty($item)) {
  4.           $newArray[] = $item;
  5.      }
  6. }
  7.  
  8. $sql = 'select * from mitabla where id in('.implode(',',$newArray).')';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 27/03/2012, 23:43
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Consultar datos de un array

Bueno ya todo me funciona bien, el tema ahora es que necesito mostrar el contenido de mi form en una tabla, como tengo unos campos de tipo text que corresponden a la seleccion en un checkbox tambien, lo que hice para mostrar el contenido del text es esto

Código PHP:
Ver original
  1. $modul = count($_POST['modulo']) ? $_POST['modulo'] : array();
  2.  
  3.       for($i=0;$i<count($modul);$i++)
  4.  
  5. $vector = count($_POST['cantidad']) ? $_POST['cantidad'] : array();
  6.       for($i=0;$i<count($vector);$i++)
  7.     if(empty($modul[$i])){  }
  8. else {      
  9. $tablahtml.="<td>$vector[$i] </td>";
  10. }
  11. echo "";

Pero resulta que $vector[$i] me esta mostrando todos los datos del array en una misma linea y yo necesito que me lo separe en orden que vienen pero que los muestre en celdas independientes de la tabla.

me podrias ayudar un poco? una guia al respecto

Gracias
__________________
Say no more.......
  #8 (permalink)  
Antiguo 28/03/2012, 00:14
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Consultar datos de un array

Se mas explicito, en realidad con tu código (con algunas deficiencias >.<) te esta generando cada item en una celda de una tabla, ahora, dices que quieres que lo separe en el orden que viene, explica el orden y el porque esta desordenado...

Tu código mas optimo y suponiendo que en algún momento debes de cambiar de fila...3
Código PHP:
Ver original
  1. $tablahtml = '<table>';
  2.  
  3. foreach ($_POST['modulo'] as $modulo) {
  4.       $tablahtml .= '<tr>';
  5.       foreach($_POST['cantidad'] as $cantidad) {
  6.             if (!empty($cantidad)) {
  7.                   $tablahtml .= '<td>'.$cantidad.'</td>';
  8.             }
  9.       }
  10.       $tablahtml .= '</tr>';
  11. }
  12.  
  13. $tablahtml .= '</table>';
  14.  
  15. echo $tablahtml;
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 28/03/2012, 10:18
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Consultar datos de un array

Bueno a ver te cuento claramente que es lo que estoy haciendo, por un lado tengo un formulario que construyo desde una base de datos asi

Código PHP:
Ver original
  1. //construimos la Tabla para presentar los datos
  2.  
  3. echo "<table>";
  4. echo "<tr><td colspan='2'><div style='background-color: #ff6600; text-align: center;'>M&oacute;dulos a contratar</div></td></td>";
  5. echo "<tr><td>M&oacute;dulo</td>";
  6. echo "<td>Cantidad</td>";
  7. echo "<td>Contratar</td></tr>";
  8.  
  9. while ($row = mysql_fetch_array ($runsql)) {
  10.  
  11.    
  12.     echo "<tr><td>$row[1]</td>";
  13.     echo "<td><input type='text' name='cantidad[]' size='4' maxlength='3' value='1' ></td>";
  14.     echo "<td><input type='checkbox' name='modulo[]' value='$row[0]'></td></tr>";
  15. }
  16.  
  17. echo "</table>";

Y del otro lado, recibo los array para armar un documento en pdf, todo esta funcionando bien, pero lo que necesito es que en la tabla que formo me aparezca el modulo que seleccionó, el valor y la cantidad seleccionada.

por ejemplo

FORM
Módulo cantidad
Módulo 1 12 [x]
Módulo 2 [ ]
Modulo 3 4 [x]

TABLA DE PRESENTACION
Módulo Cantidad Valor
Modulo 1 12 $5.000
Módulo 3 4 $6.000

el tema del calculo del valor lo tengo solucionado, el lio que tengo es que no he logrado mostrar las cantidades en la tabla como corresponde, ayer logré mostrar los valores con este código:

Código PHP:
Ver original
  1. $tablahtml='';
  2. $tablahtml.="<table >";
  3. $tablahtml.="<tr ><td><div style='align:center; background-color:#FF8000; color: #fffff; font-weight: bold;'>M&oacute;dulo</div></td>";
  4. $tablahtml.="<td><div style='align:center; background-color:#FF8000; color: #fffff; font-weight: bold;'>Cantidad</div></td>";
  5. $tablahtml.="<td><div style='align:center; background-color:#FF8000; color: #fffff; font-weight: bold;'>Valor</div></td></tr>";
  6.  
  7. while ($row = mysql_fetch_array($rsql)) {
  8.  
  9.  
  10.  
  11. $tablahtml.="<tr><td>$row[1]</td>";
  12. $valor = $row[2] * $vr_hora;
  13.  
  14. //armamos el array para el total de horas
  15. $horasd[] = $row[2];
  16. $totalhoras = array_sum($horasd);
  17.  
  18. //convertimos valor a miles
  19. $tablahtml.="<tr><td>$row[1]</td>";
  20. $valor1_mil=number_format($valor,0,'.',',');
  21.  
  22. //Armamos el array para sumar el valor total
  23. $sant = implode('<td></td>',$cant);
  24. $precio[] = $row[2] * $vr_hora;
  25.  
  26.  
  27. //Recibimos variables para cantidades
  28.  
  29. $modul = count($_POST['modulo']) ? $_POST['modulo'] : array();
  30.  
  31.       for($i=0;$i<count($modul);$i++)
  32.  
  33. $vector = count($_POST['cantidad']) ? $_POST['cantidad'] : array();
  34.       for($i=0;$i<count($vector);$i++)
  35.     if(empty($modul[$i])){  }
  36. else {    
  37.  
  38. $tablahtml.="<td>$vector[$i] </td>";
  39.  
  40. }
  41. echo "";
  42. $tablahtml.="<td><div align='right'>$valor1_mil</div></td></tr>";
  43. ....

de esta forma me muestra los valores así

Módulo Cantidad Valor
Módulo 1 12 4 $5.000
Módulo 2 12 4 $5.000

y lo que yo necesito es


Módulo Cantidad Valor
Módulo 1 12 $5.000
Módulo 2 4 $4.000

y lo probpe asi
Código PHP:
Ver original
  1. $valor = $row[2] * $vr_hora;
  2.  
  3. //armamos el array para el total de horas
  4. $horasd[] = $row[2];
  5. $totalhoras = array_sum($horasd);
  6.  
  7. //convertimos valor a miles
  8.  
  9. $valor1_mil=number_format($valor,0,'.',',');
  10. //Armamos el array para sumar el valor total
  11. $sant = implode('<td></td>',$cant);
  12. $precio[] = $row[2] * $vr_hora;
  13. //Recibimos variables para cantidades
  14.  
  15. $modul = count($_POST['modulo']) ? $_POST['modulo'] : array();
  16.  
  17.       for($i=0;$i<count($modul);$i++)
  18.  
  19. $vector = count($_POST['cantidad']) ? $_POST['cantidad'] : array();
  20.       for($i=0;$i<count($vector);$i++)
  21.     if(empty($modul[$i])){  }
  22. else {    
  23. $tablahtml.="<tr><td>$row[1]</td>";
  24. $tablahtml.="<td>$vector[$i] </td>";
  25. $tablahtml.="<td><div align='right'>$valor1_mil</div></td></tr>";
  26. }
  27. echo "";
y me los muestra asi

Módulo Cantidad Valor
Modulo 1 12 $5.000
4
Modulo 3 12 $5.000
4
__________________
Say no more.......
  #10 (permalink)  
Antiguo 28/03/2012, 11:02
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Consultar datos de un array

Seria bueno que mostraras la estructura del array para saber como se esta entregando para después saber como darle el formato, has un...

Código PHP:
Ver original
  1. <pre>
  2. <?php echo var_dump($_POST['modulo']); ?>
  3. </pre>
  4.  
  5. <pre>
  6. <?php echo var_dump($_POST['cantidad']); ?>
  7. </pre>

Y muestralo aquí para poder saber como darle formato...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #11 (permalink)  
Antiguo 28/03/2012, 11:09
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Consultar datos de un array

el resultado del dump es

Cita:
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(2) "14"
}
array(38) {
[0]=>
string(1) "1"
[1]=>
string(1) "4"
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(0) ""
[5]=>
string(0) ""
[6]=>
string(0) ""
[7]=>
string(0) ""
[8]=>
string(0) ""
[9]=>
string(0) ""
[10]=>
string(0) ""
[11]=>
string(0) ""
[12]=>
string(1) "6"
[13]=>
string(0) ""
[14]=>
string(0) ""
[15]=>
string(0) ""
[16]=>
string(0) ""
[17]=>
string(0) ""
[18]=>
string(0) ""
[19]=>
string(0) ""
[20]=>
string(0) ""
[21]=>
string(0) ""
[22]=>
string(0) ""
[23]=>
string(0) ""
[24]=>
string(0) ""
[25]=>
string(0) ""
[26]=>
string(0) ""
[27]=>
string(0) ""
[28]=>
string(0) ""
[29]=>
string(0) ""
[30]=>
string(0) ""
[31]=>
string(0) ""
[32]=>
string(0) ""
[33]=>
string(0) ""
[34]=>
string(0) ""
[35]=>
string(0) ""
[36]=>
string(0) ""
[37]=>
string(0) ""
}
En el array de abajo los objetos que están vacios son los que el usuario no selecciono con el checkbox por lo cual el usuario no le asigno un valor y en el de arriba solo muestra los que seleccionó, solo los que marcó en el checkbox
__________________
Say no more.......

Última edición por el_cesar; 28/03/2012 a las 11:10 Razón: Amplio explicacion
  #12 (permalink)  
Antiguo 28/03/2012, 11:20
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Consultar datos de un array

A ver, hay una cosa que no entiendo, según tu el formato que esperas es

|modulo|cantidad|valor|

en los "array" que has imprimido voy a suponer que sacas de hay el numero de modulo, ejemplo:

Código PHP:
Ver original
  1. echo 'Modulo '.$_POST['modulo'][0];   //En este caso sería: Modulo 1
  2. echo 'Modulo '.$_POST['modulo'][1];   //En este caso sería: Modulo 2
  3. echo 'Modulo '.$_POST['modulo'][2];   //En este caso sería: Modulo 3

Ahora, lo que no entiendo es de donde se saca el valor de "cantidad", viendo el segundo array que has imprimido supondré que es sumando el numero de items que hay en el array (descontando los items vacíos?) o como es que obtienes el valor, porque si imprimimos los items del array tal como propones sería algo así...

Modulo 1 | 1 - 4 - 6 | valor

Lo que entiendo sería sumar los valores dentro del array para que se creara algo así

Modulo 1 | 11 | valor

por ultimo, veo que la variable valor se obtiene fuera de los "for" por lo tanto su valor nunca cambiara, esto es correcto? o como se debe obtener el valor?
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #13 (permalink)  
Antiguo 28/03/2012, 14:18
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Consultar datos de un array

el valor de cantidad lo traigo del form de la página anterior, es un valor que asigna el usuario a los items que quiere comprar, este es el form

Código PHP:
Ver original
  1. echo "<table>";
  2. echo "<tr><td colspan='2'><div style='background-color: #ff6600; text-align: center;'>M&oacute;dulos a contratar</div></td></td>";
  3. echo "<tr><td>M&oacute;dulo</td>";
  4. echo "<td>Cantidad</td>";
  5. echo "<td>Contratar</td></tr>";
  6.  
  7. while ($row = mysql_fetch_array ($runsql)) {
  8.  
  9.    
  10.     echo "<tr><td>$row[1]</td>";
  11.     echo "<td><input type='text' name='cantidad[]' size='4' maxlength='3'  ></td>";
  12.     echo "<td><input type='checkbox' name='modulo[]' value='$row[0]'></td></tr>";
  13. }
  14.  
  15. echo "</table>";

Entonces la idea es que si el usuario selecciono 5 articulos de los 37 que se le muestran, la pag de respuesta debe mostrar solo los articulos que selecciono con sus respectivas cantidades (las que el asignó)
__________________
Say no more.......

Etiquetas: consultar, mysql
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 15:01.