Foros del Web » Programando para Internet » PHP »

Como puedo hacer que lea 2 id?

Estas en el tema de Como puedo hacer que lea 2 id? en el foro de PHP en Foros del Web. Hola buenas, pues estoy intentando poder insertar 2 numeros(IDs), en un campo, esos ID representan generos, y he probado insertar 1, 2, osea 2 IDs ...
  #1 (permalink)  
Antiguo 04/06/2010, 17:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 471
Antigüedad: 18 años, 1 mes
Puntos: 1
Como puedo hacer que lea 2 id?

Hola buenas,
pues estoy intentando poder insertar 2 numeros(IDs), en un campo, esos ID representan generos, y he probado insertar 1, 2, osea 2 IDs separadas por comas, hasta ahi todo bien, pero cuando hago un SELECT $ID=$_GET['id'] solo lee el primer ID osea el 1, 2 aver sime podeis ayudar con esto.

Saludos.
  #2 (permalink)  
Antiguo 04/06/2010, 18:18
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Como puedo hacer que lea 2 id?

muestra parte del código, lo que expones no se entiende, además lo poco de SQL que pones esta mal incluso.
  #3 (permalink)  
Antiguo 04/06/2010, 18:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 76
Antigüedad: 16 años
Puntos: 3
Respuesta: Como puedo hacer que lea 2 id?

si mostra el codigo pero creo que lo queres es hacer un select con un IN select * from tabla where busco in (1,2)
  #4 (permalink)  
Antiguo 04/06/2010, 20:57
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Como puedo hacer que lea 2 id?

Creo haber entendido tu pregunta, insertar dos id en una celda:

Código PHP:

/* codigo SQL  par la prueba
CREATE TABLE unaid (
id INT( 23 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
stringID CHAR( 23 ) NOT NULL 
);
insert into unaid values ('','1,2');
*/

mysql_connect("localhost","root","1234");
mysql_query("use DB_DONDE_ESTA_LA_TABLA");

$r=mysql_query("select * from unaid");
while(
$row=mysql_fetch_array($r)){
echo 
"<li>".$row['stringID'];
}

//RESULTADO: 1,2 
En mi caso asigne al campo stringID "CHAR()" no "INT()"
  #5 (permalink)  
Antiguo 05/06/2010, 07:06
 
Fecha de Ingreso: octubre-2006
Mensajes: 471
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Como puedo hacer que lea 2 id?

Hola, aver pues aver si me puedo explicar, tengo este codigo:
Código PHP:
             $sql3="SELECT * FROM peliculas WHERE idGEN=$id ORDER BY Titulo ASC"
Entonces en un while, imprimo solo los que coincidan esos IDs, pero el problema es que como he probado insertar 2 numeros de esta forma: 1, 2

Solo me coge el primer numero osea el 1, el 2 que va despues de la coma no lo coge.

Creo que ahora si que me e explicado.

Saludos y gracias.
  #6 (permalink)  
Antiguo 05/06/2010, 07:50
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Como puedo hacer que lea 2 id?

Esto deberia devolverte las id como dices:

Código PHP:


$query_peli
=mysql_query("SELECT * FROM peliculas WHERE idGEN='".$id."' ORDER BY Titulo ASC;");

while(
$row_peli=mysql_fetch_array($query_peli)){

if(
$row_peli['idGEN'] != ""){
$concat .= $row_peli['idGEN'].", ";
}else{
$concat .= $row_peli['idGEN'];
}


De lo contrario no se donde estaria la falla.
Podrias verificar esto, que exista un campo llamado "Titulo"
ORDER BY Titulo ASC
  #7 (permalink)  
Antiguo 05/06/2010, 08:19
 
Fecha de Ingreso: octubre-2006
Mensajes: 471
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Como puedo hacer que lea 2 id?

Cita:
Iniciado por wiwi74 Ver Mensaje
Esto deberia devolverte las id como dices:

Código PHP:


$query_peli
=mysql_query("SELECT * FROM peliculas WHERE idGEN='".$id."' ORDER BY Titulo ASC;");

while(
$row_peli=mysql_fetch_array($query_peli)){

if(
$row_peli['idGEN'] != ""){
$concat .= $row_peli['idGEN'].", ";
}else{
$concat .= $row_peli['idGEN'];
}


De lo contrario no se donde estaria la falla.
Podrias verificar esto, que exista un campo llamado "Titulo"
ORDER BY Titulo ASC
Me has entendido mal, haber las "," ya estan insertadas en la base de datos, pero a la hora de sacarlas solo coge el primer numero osea, yo pongo 1, 2
que esos numeros representan IDs de generos, entonces el genero que tiene el ID 2 no lo coge al estar detras de la coma.

gracias.
  #8 (permalink)  
Antiguo 05/06/2010, 09:39
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Como puedo hacer que lea 2 id?

Pero si el campo idGen es autoincrementable, no le puedes pasar un '1,2'.... Tendrías que hacer un explode en base a la coma, luego como ya te dijo un usuario, utilizar el comando IN para hacer la búsqueda. También deberías aprender a trabajar con llaves foráneas, para que te sea más fácil lo que buscas.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #9 (permalink)  
Antiguo 05/06/2010, 10:28
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Como puedo hacer que lea 2 id?

Entonces es lo que te dije en el primer mensaje

Cree un campo que contenga 1,2 y los recupere sin problemas.

Ahora si deseas hacer eso con la id que es auto_increment, no podras.
  #10 (permalink)  
Antiguo 06/06/2010, 14:31
 
Fecha de Ingreso: octubre-2006
Mensajes: 471
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Como puedo hacer que lea 2 id?

Poder si que se puede por que lo he visto en varias webs, pero voy a intentar explicarme un poco mejor.
Como podeis ver en esta url http://www.mira-divx.com/Generos.php?gg=2 no muestra ningun resultado, por que en uno de los resultados he puesto de id 1, 2
por lo tanto no reconoce la segunda id que le indico separandola con una ",".
Como podeis ver aqui http://www.mira-divx.com/Generos.php?gg=1 como entramos a el genero con la id 1 si que sale el resultado.
Aver si sabeis como puedo hacerlo.

Saludos y gracias.
  #11 (permalink)  
Antiguo 06/06/2010, 15:10
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Como puedo hacer que lea 2 id?

¿Acaso has leído las respuestas que se te han dado? Se te ha explicado ya lo que debes hacer. Por lo que veo esperas el trabajo hecho, y eso es algo que no haremos .

El campo IDGEN es auto_incrementable y único, por ende no puedes pasarle un '1,2', por lo que debes separar ese 1,2 y utilizar el comando IN de mysql. Busca sobre la función explode php y sobre el comando IN de mysql.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #12 (permalink)  
Antiguo 06/06/2010, 16:14
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Como puedo hacer que lea 2 id?

Mira te explicaste mal desde el principio:

Lo que quieres es insertar (no en una tabla) sino en un campo de texto, input text y que esos datos ingresados sean de termino de busqueda.

Deberias haber dicho: Deseo que al introducir un texto dentro de un input text este cumpla la funcion de termino de busqueda.

La busqueda se haria por id. Pero, me gustaria poder introducir MAS DE UNA ID

O sea (dentro del input text), ejemplo: 1,2

De modo que busque aquellos resultados que contengan como id "1" y/o "2"


Es eso lo que deseas saber...?
  #13 (permalink)  
Antiguo 06/06/2010, 16:16
 
Fecha de Ingreso: octubre-2006
Mensajes: 471
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Como puedo hacer que lea 2 id?

Cita:
Iniciado por spider_boy Ver Mensaje
¿Acaso has leído las respuestas que se te han dado? Se te ha explicado ya lo que debes hacer. Por lo que veo esperas el trabajo hecho, y eso es algo que no haremos .

El campo IDGEN es auto_incrementable y único, por ende no puedes pasarle un '1,2', por lo que debes separar ese 1,2 y utilizar el comando IN de mysql. Busca sobre la función explode php y sobre el comando IN de mysql.
Claro por supuesto que leo las respuestas, pero he intentado buscar en google sobre el comando IN de mysql y no sale nada de nada, luego he buscado sobre el explode pero no es lo que yo busco.

saludos.
  #14 (permalink)  
Antiguo 06/06/2010, 16:20
 
Fecha de Ingreso: octubre-2006
Mensajes: 471
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Como puedo hacer que lea 2 id?

Cita:
Iniciado por wiwi74 Ver Mensaje
Mira te explicaste mal desde el principio:

Lo que quieres es insertar (no en una tabla) sino en un campo de texto, input text y que esos datos ingresados sean de termino de busqueda.

Deberias haber dicho: Deseo que al introducir un texto dentro de un input text este cumpla la funcion de termino de busqueda.

La busqueda se haria por id. Pero, me gustaria poder introducir MAS DE UNA ID

O sea (dentro del input text), ejemplo: 1,2

De modo que busque aquellos resultados que contengan como id "1" y/o "2"


Es eso lo que deseas saber...?
Exacto, lo siento pero es que no soy muy bueno cuando me explico.
  #15 (permalink)  
Antiguo 06/06/2010, 16:27
 
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario
Mensajes: 44
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Como puedo hacer que lea 2 id?

No se si entendi bien pero creo que con esto lo solucionas

$sql3="SELECT * FROM peliculas WHERE idGEN like '%$id%' ORDER BY Titulo ASC"

Slds
  #16 (permalink)  
Antiguo 06/06/2010, 16:34
 
Fecha de Ingreso: octubre-2006
Mensajes: 471
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: Como puedo hacer que lea 2 id?

Cita:
Iniciado por unoencinco Ver Mensaje
No se si entendi bien pero creo que con esto lo solucionas

$sql3="SELECT * FROM peliculas WHERE idGEN like '%$id%' ORDER BY Titulo ASC"

Slds
Perfecto era el comando LIKE el que necesitaba, gracias a todos.

Saludos.
  #17 (permalink)  
Antiguo 06/06/2010, 16:59
 
Fecha de Ingreso: enero-2009
Mensajes: 10
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Como puedo hacer que lea 2 id?

El comando like de MySQL se utiliza para buscar dentro de campos de texto.
Para buscar numero separados por comas tienes la clausula IN (que ya has nombrado antes)



SELECT u.* FROM usuarios u WHERE u.id IN (1,2,3,4,21)

Selecciona de la tabla usuarios los usuarios con id 1,2,3,4 o 21.
  #18 (permalink)  
Antiguo 06/06/2010, 17:46
 
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario
Mensajes: 44
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Como puedo hacer que lea 2 id?

Cita:
Iniciado por shandercage Ver Mensaje
El comando like de MySQL se utiliza para buscar dentro de campos de texto.
Para buscar numero separados por comas tienes la clausula IN (que ya has nombrado antes)



SELECT u.* FROM usuarios u WHERE u.id IN (1,2,3,4,21)

Selecciona de la tabla usuarios los usuarios con id 1,2,3,4 o 21.

Creo que en este caso la clausula IN() no le sirve , segun entiendo el gurda en un campo algo como "1,55,22", si el busca por ej SELECT u.* FROM usuarios u WHERE u.id IN (1,2,3,4,21 le va a a traer como bien dices los registros 1 o 2 o etc pero no los "Y" osea el registro que contiene "1,2" no se lo trae .No conozco bien su modelo de datos pero esos Ids que el guarda en ese campo parecen FKS ... en ese caso se podria usar un IN().Ojo! el IN() no sirve para buscar numeros separados por comas (o si ,pero no es el proposito), sino para buscar lo que separas con comas dentro de la clausula .Slds

Última edición por unoencinco; 06/06/2010 a las 18:25
  #19 (permalink)  
Antiguo 06/06/2010, 18:40
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Como puedo hacer que lea 2 id?

Según entiendo, él no desea los registros que contenga '1' y '2', sino los registros que sean '1' y '2', los cuales corresponderían a las ID.

Por otro lado, imposible que no aparezca nada en internet : http://dev.mysql.com/doc/refman/5.0/...operators.html ( bajo expr IN (value,...) ).
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #20 (permalink)  
Antiguo 06/06/2010, 18:44
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 8 meses
Puntos: 10
Respuesta: Como puedo hacer que lea 2 id?

Parece que ya se fue...

Bueno por si vuelves por aqui, te digo que antes de buscar en la base de datos debes partir esa cadena de numeros 1,2...

Ejemplo:

Código PHP:

//supongamos que el envio se hace via post

$nums=explode(",",$_POST['termino_busqueda']);

foreach(
$nums as $num){
$query_result=mysql_query("select * from table where id='".$num."';");
while(
$tow_result=mysql_fetch_array($query_result)){
echo 
"<li>".$tow_result['nombre_de_un_campo'];
}

El codigo fue escrito aqui mismo, y no fue probado. Es solo un ejemplo.

Etiquetas: Ninguno
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:19.