Foros del Web » Programando para Internet » PHP »

Creación de imnumerables variables

Estas en el tema de Creación de imnumerables variables en el foro de PHP en Foros del Web. Hola a todos, necesito hacer los siguiente: Leer de una base de datos el nombre de las localidades que esten en un campo concreto y ...
  #1 (permalink)  
Antiguo 04/06/2009, 13:49
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Creación de imnumerables variables

Hola a todos,

necesito hacer los siguiente:
Leer de una base de datos el nombre de las localidades que esten en un campo concreto y el resultado meterlo en un combo para posteriormente hacer una busqueda sobre esa base de datos en función del campo localidades. He conseguido hacerlo, pero tengo el problema de que si un localidad esta repetida(que puede estarlo) me la pone tantas veces como aparezca y claro para luego hacerlas busquedas en función de la localidad sólo necesito que aparezca una vez.

Se me ocurrio crear una variable por cada localidad y hacer una comparación de lo encontrado en la base de datos con todas las variables que se hayan creado y si hay coincidencia pues que no haga nada y si no la hay pues que meta el campo localidad en el combo.

No se que os parece esta idea, pero en el caso de que pudiera servir tengo el problema de que no se como crear imnumerables variables. Os pongo el codigo que se me ocurre, pero ya lo he probado y no funciona.

$i=1;
while ($row = mysql_fetch_array($res,MYSQL_ASSOC))
{
$loc.$i=$row{'Localidad'};//creo una variable que se llame loc1, loc2.etc
for($j=0;$j<$i;$j++){
if($row{'Localidad'}==$loc.$i){
//nada
}
else{
echo "obj.options[obj.options.length] = new Option('".$row{'Localidad'}."','".$i."');\n";
}
}
$i=$i+1;
}
  #2 (permalink)  
Antiguo 04/06/2009, 13:51
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Creación de imnumerables variables

Haciendo uso de una respuesta en otro tema, te recomiendo que utilices array_unique.

Luego de que obtengas los resultados de la búsqueda de localidades en la bd, lo pasas por el array_unique, y este se encargará de borrar los valores duplicados.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 04/06/2009, 16:35
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Respuesta: Creación de imnumerables variables

¿Y no es más sencillo restringirlo en la consulta, en vez de andar manipulando después el resultado de la consulta? Yo lo hago así:

Código PHP:
select distinct LOCALIDAD from TABLA where CAMPO2='valor' order by 'LOCALIDAD' asc 
La clave es lo de "distinct".
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #4 (permalink)  
Antiguo 04/06/2009, 17:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Creación de imnumerables variables

Cita:
Iniciado por Defero.tk Ver Mensaje
¿Y no es más sencillo restringirlo en la consulta, en vez de andar manipulando después el resultado de la consulta? Yo lo hago así:

Código PHP:
select distinct LOCALIDAD from TABLA where CAMPO2='valor' order by 'LOCALIDAD' asc 
La clave es lo de "distinct".
Que diferencia tendria este query de el que menciono Defero.tk

Código PHP:
SELECT LOCALIDAD FROM TABLA WHERE CAMPO2='VALOR' GROUP BY LOCALIDAD ORDER BY LOCALIDAD ASC 
Que diferencia haria el hacer con distinct o group by?
  #5 (permalink)  
Antiguo 05/06/2009, 03:53
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Creación de imnumerables variables

Gracias por vuestras respuestas,

no se que diferencia hay pues los dos metodos funcionan perfectamente.

Un saludo.
  #6 (permalink)  
Antiguo 05/06/2009, 16:19
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Respuesta: Creación de imnumerables variables

Yo tampoco conozco la diferencia, agradecería que alguien lo explicara.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #7 (permalink)  
Antiguo 06/06/2009, 13:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Creación de imnumerables variables

Pues con DISTINCT seleccionas los registros unicos, y con el otro método filtras en PHP usando array_unique.

La diferencia es donde se hace el proceso, yo recomendaría usarlo directo desde la Base de Datos así optimizas en la transferencia de datos.

Saludos.
  #8 (permalink)  
Antiguo 06/06/2009, 13:54
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Respuesta: Creación de imnumerables variables

No, no preguntamos por la diferencia entre usar ARRAY_UNIQUE en PHP y usar DISTINCT en SQL, sino por la diferencia entre usar DISTINCT y usar GROUP BY, ambos en SQL.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #9 (permalink)  
Antiguo 06/06/2009, 14:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Creación de imnumerables variables

Ah, pues no es que sea lo mismo, lo que pasa es que en dado caso en ese query tan simple funciona para lo mismo, el keyword DISTINCT, selecciona filas distintas de un resultset. GROUP BY agrupa los resultados por una columna, en este caso como estamos seleccionando solo una columna, se obtienen los mismos resultados.

Saludos.
  #10 (permalink)  
Antiguo 06/06/2009, 15:26
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Respuesta: Creación de imnumerables variables

Creo que lo entiendo. Si al usar DISTINCT hubiéramos seleccionado los campos LOCALIDAD y CALLE, habría buscado las distintas combinaciones de localidad y calle, por lo que los resultados serían muchos más, ¿no?
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #11 (permalink)  
Antiguo 06/06/2009, 15:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Creación de imnumerables variables

Así es solo te regresa los datos que son diferentes, y el GROUP BY lo que hace es agrupar los resultados por grupos, pero pueden existir duplicados.

Saludos.
  #12 (permalink)  
Antiguo 06/06/2009, 16:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Creación de imnumerables variables

O sea que si yo tuviera algo así en la base de datos

LOCALIDAD, CALLE
A, 1
A, 2
A, 1
B, 3
B, 2
B, 2

con distint escribiria entonces esto?
A, 1
A, 2
B, 3
B, 2

pero con group by como haría entonces?
  #13 (permalink)  
Antiguo 06/06/2009, 19:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Creación de imnumerables variables

Asi es, con GROUP BY si lo haces por la primera columna solo te daria dos registros ya que agrupa por la A y B, la idea de GROUP BY es usarlo junto con columnas que suman datos o agrupan datos como SUM(), AVG(), MAX() etc.

Saludos.
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 10:57.