Foros del Web » Programando para Internet » PHP »

problema con in_array

Estas en el tema de problema con in_array en el foro de PHP en Foros del Web. Buenas, tengo el siguiente problema. Estoy armando un array con los resultados de un query que me devuelve unos ids. Luego hago otro query e ...
  #1 (permalink)  
Antiguo 26/04/2015, 16:50
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 10 años
Puntos: 8
problema con in_array

Buenas,
tengo el siguiente problema. Estoy armando un array con los resultados de un query que me devuelve unos ids. Luego hago otro query e intento comprobar si el id de los resultados de éste están dentro del array que había formado, si es así entonces que de un resultado y sino que de otro. Dejo el código:

Código PHP:
Ver original
  1. <?php
  2.     $conn;
  3.  
  4.     $query_datos = mysql_query("SELECT id_adicional FROM adicionales_data WHERE id_inmueble = '".$_GET['id']."'") or die(mysql_error());
  5.  
  6.         //Armando array...
  7.     $adicionales = '';
  8.     while($res_datos = mysql_fetch_array($query_datos)) {
  9.         $adicionales .= "'$res_datos[0]',";
  10.     }
  11.     $adicionales = substr($adicionales,0,-1);
  12.     $adicionales = array($adicionales);
  13.    
  14.         $query_ca = mysql_query("SELECT * FROM adicionales") or die(mysql_error());
  15.     while($row_ca = mysql_fetch_array($query_ca)) {
  16.            
  17.             if(in_array($row_ca['id'], $adicionales)) {
  18.                 echo 'checked';
  19.             } else {
  20.                 echo 'unchecked';
  21.             }
  22.  
  23.         }
  24. ?>

he comprobado que el array que hice si funciona ya que al hacer print_r me da el siguiente resultado: Array ( [0] => '2','3' )

y también he comprobado que la variable $row_ca['id'] imprime bien los ids de cada uno de los resultados. El problema está en que incluso si el id esta dentro del array imprime el resultado como si no lo estuviera. Espero puedan ayudarme.
  #2 (permalink)  
Antiguo 26/04/2015, 17:04
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 7 años, 3 meses
Puntos: 319
Respuesta: problema con in_array

Código PHP:
Ver original
  1. <?php
  2.     $query = mysql_query("SELECT
  3.                            id_adicional
  4.                          FROM adicionales_data
  5.                            INNER JOIN adicionales ON adicionales_data.id_adicional = adicionales.id
  6.                          WHERE id_inmueble = '".$_GET['id']."'") // Acá tienes que escapar las variables por seguridad.
  7.              or die(mysql_error());
  8.              
  9.     echo (mysql_fetch_array($query) ? "checked" : "unchecked");
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 26/04/2015, 17:15
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 10 años
Puntos: 8
Respuesta: problema con in_array

Cita:
Iniciado por NSD Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2.     $query = mysql_query("SELECT
  3.                            id_adicional
  4.                          FROM adicionales_data
  5.                            INNER JOIN adicionales ON adicionales_data.id_adicional = adicionales.id
  6.                          WHERE id_inmueble = '".$_GET['id']."'") // Acá tienes que escapar las variables por seguridad.
  7.              or die(mysql_error());
  8.              
  9.     echo (mysql_fetch_array($query) ? "checked" : "unchecked");
Muchas gracias por tu respuesta. Explico un poco más a detalle lo que necesito conseguir:

Tengo dos tablas:
adicionales » id, nombre
adicionales_data » id, id_adicional, id_inmueble

Al ingresar un inmueble se registra en la tabla adicionales_data las opciones elegidas, Ej:
adicionales_data »
1(id), 3(id_adicional), 1(id_inmueble)
2(id), 5(id_adicional), 1(id_inmueble)

Entonces al editar el inmueble necesito que aparezcan todos los registros de la tabla adicionales y además los que hayan sido marcados al crear dicho inmueble también salgan marcados, Ej:

1(id), Gimnasio
2(id), Jacuzzi
3(id), Jardín (checked)
4(id), Ascensor
5(id), Sauna (checked)
  #4 (permalink)  
Antiguo 29/04/2015, 23:34
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 4 años, 4 meses
Puntos: 8
Respuesta: problema con in_array

Hola,
Reemplaza todo esto.
$adicionales = '';
while($res_datos = mysql_fetch_array($query_datos)) {
$adicionales .= "'$res_datos[0]',";
}
$adicionales = substr($adicionales,0,-1);
$adicionales = array($adicionales);


por

$adicionales=array();
while($res_datos = mysql_fetch_array($query_datos)) {
$adicionales[]=$res_datos[0];
}

luego tu demás código.
$query_ca = mysql_query("SELECT * FROM adicionales") or die(mysql_error());
....
...
...
  #5 (permalink)  
Antiguo 30/04/2015, 13:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 4 meses
Puntos: 2534
Respuesta: problema con in_array

Exactamente esa es la solución, sin embargo, ¿podrías explicarnos cual era el problema oggy_15_3?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: mysql, select, sql, variable
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:56.