Foros del Web » Programando para Internet » PHP »

Problema con select

Estas en el tema de Problema con select en el foro de PHP en Foros del Web. Hola amigos, que tal, estoy con un problema que no puedo resolver, lo explico a ver si alguien me puede dar una mano. La cuestion ...
  #1 (permalink)  
Antiguo 01/05/2010, 12:14
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Problema con select

Hola amigos, que tal, estoy con un problema que no puedo resolver, lo explico a ver si alguien me puede dar una mano.

La cuestion es asi tengo un link en la pagina que lleva al usuario a ver cuantos contactos tiene, le tira un mensaje "tienes en tus lista de contactos 3 usuarios".
Pero en la lista que muestra los nombres aparecen todos los usuarios de todas las id que han ido agregando contactos
Por ejemplo yo agregué a pepe, juan, y rosita; y otro usuario agregó a jose, pepito y manuel; y me muestra todos los usuarios y no los 3 que agregué yo.
Pero si sabe diferenciar que tengo 3 usuarios.
Este es el codigo:

Código PHP:
Ver original
  1. $rs0_query=mysql_query("Select count(*) from dm_contacts  where  dm_uid =" .$id );
  2. $rs0=mysql_fetch_array($rs0_query);
  3. $contact_count=$rs0[0];
  4.  
  5. $rs0_query=mysql_query("SELECT * FROM dm_contacts, members WHERE dm_contacts.dm_contact_id=members.id" );

El numero de usuarios se obtiene asi:
Código PHP:
Ver original
  1. <?php echo $contact_count;?>

Y el de los nombres:

Código PHP:
Ver original
  1. <?php
  2.             $cnt=0;
  3.             while ($rs0=mysql_fetch_array($rs0_query))
  4.                             {
  5.                               $cnt++;
  6.  
  7.                              
  8.                              
  9.                             ?>
el nombre lo obtengo asi:
Código PHP:
Ver original
  1. <?php echo $rs0['usuario'];?>

el $id--> es el del usuario de la sesion
el dm_contact_id--> el campo de la tabla que tiene la id de los contactos
el dm_uid--> el campo de la tabla que tiene la id del usuario de la sesion.

Como puedo hacer para que se filtren esos datos?, porque evidentemente hay algo que estoy haciendo mal

Bueno gracias por tomarse el tiempo de leer.
  #2 (permalink)  
Antiguo 01/05/2010, 12:19
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 7 meses
Puntos: 150
Respuesta: Problema con select

Prueba con esto:

Código PHP:
$rs0_query=mysql_query("SELECT * FROM dm_contacts, members WHERE dm_contacts.dm_contact_id=members.id and dm_uid=" .$id  ); 
  #3 (permalink)  
Antiguo 01/05/2010, 12:22
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Buenisimo muchas gracias, me funcionó ;)
  #4 (permalink)  
Antiguo 01/05/2010, 12:40
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Te hago otra preguntita, porque en esa lista están los checkbox para eliminar usuarios, pero da la casualidad de que no me los elimina.
Este es mi codigo:

Código PHP:
Ver original
  1. $msg1="";
  2. $to_delete="";
  3. $items_removed=0;
  4. if ( count($_POST)<>0 )
  5. {
  6.  
  7.  
  8. for($i=1;$i<=$_REQUEST["cnt"];$i++)
  9. {
  10.  
  11. if ( isset($_REQUEST["checkbox" . $i]) )  //Is the checkbox ticked
  12. {
  13. if ($to_delete!="") { $to_delete.="," ; }  //To insert comma??
  14. $to_delete.= $_REQUEST["checkbox" . $i];  //Add another item to delete
  15. $items_removed++;
  16. }
  17.  
  18. } //End For
  19. if ($to_delete=="")
  20. {
  21. $msg1=" No se puede eliminar ningun usuario de la lista de contactos ";
  22. }
  23. else
  24. {
  25. $del_str="  Delete from dm_contacts where dm_contact_id IN (" . $to_delete .")";
  26. mysql_query($del_str);
  27. $msg1= ($items_removed > 1)?$items_removed . " Usuarios que han sido removidos de tu lista de contactos":$items_removed . " El usuario ha sido removido de tu lista";
  28. }
  29. header("Location:"." msg_confirm_mem.php?errmsg=".urlencode($msg1));
  30. die();
  31. /////////////////////////////CONTACTS HAVE BEEN REMOVED /////////////////////
  32. }
  #5 (permalink)  
Antiguo 01/05/2010, 15:20
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 7 meses
Puntos: 150
Respuesta: Problema con select

Bueno segun veo ahi tus checkbox se tienen que llamar en tu formulario tal que:

checkbox1
checkbox2
checkbox3
...

Lo primero seria fijarte si tu formulario se construye bien, fijate en los name="checkbox1" name="checkbox2"..... a ver si estan bien...

Tambien puedes poner en el php al inicio un:

echo $_REQUEST["checkbox1"];exit();

para comprobar que marcando el primer checkbox envia el valor correcto, osea 1. Prueba y me dices
  #6 (permalink)  
Antiguo 01/05/2010, 18:06
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Hola Vun mira tengo un solo checkbox, que se multiplica al buscar mas de un usuario.
El html es este

Código PHP:
Ver original
  1. <tr>
  2.                               <td width="10" align="right" ><font class='normal'>
  3.                                 <input type="checkbox" name="checkbox<?php echo $cnt;?>" value="<?php
  4.                                echo $rs0["dm_uid"];?>">
  5.                                 </font></td>
  6.                               <td ><font class='normal'><a href="replyuser.php?type=contact&tid=<?php echo $rs0["dm_contact_id"];?>" ><?php echo $rs0["usuario"];?></a>
  7.                                 </font></td>
  8.  
  9.                             </tr>

No se eliminan los contactos.
  #7 (permalink)  
Antiguo 01/05/2010, 18:09
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 7 meses
Puntos: 150
Respuesta: Problema con select

Es que prefiero enseñarte a entender el problema, que simplemente darte la solucion. Fijate en esto que pusiste:

name="checkbox<?php echo $cnt;?>"

Carga la pagina, y fijate en el codigo HTML que se genera (ver codigo fuente) si dichos name's generan valores correctos (checkbox1, checkbox2, etc.....)
  #8 (permalink)  
Antiguo 01/05/2010, 18:17
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Si, se generan nombres correctos checkbox1, checkbox2, etc

Te muestro lo que sale:

Código HTML:
Ver original
  1. <td width="10" align="right" ><font class='normal'>
  2.                                 <input type="checkbox" name="checkbox1" value="1">
  3.                                 </font></td>
  4.                               <td ><font class='normal'><a href="replyuser.php?type=contact&tid=6" >juan</a>
  5.                                 </font></td>
  6.  
  7.                             </tr>
  8.  
  9.                                                         <tr>
  10.                               <td width="10" align="right" ><font class='normal'>
  11.                                 <input type="checkbox" name="checkbox2" value="1">
  12.                                 </font></td>
  13.                               <td ><font class='normal'><a href="replyuser.php?type=contact&tid=4" >pepe</a>
  14.                                 </font></td>
  15.  
  16.                             </tr>
  17.                                                         <tr >
  18.                               <td colspan="2" align="left"> <input type="hidden" name="cnt" value="2">
  19.                                 <input type="submit" name="Submit3" value="Remove">
  20.                               </td>

Si te entiendo, gracias; igual avisame si jodo un poco, es que no le encuentro la solucion
  #9 (permalink)  
Antiguo 01/05/2010, 18:24
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 7 meses
Puntos: 150
Respuesta: Problema con select

no te preocupes, siguiente pregunta:

¿te aparece el mensaje "No se puede eliminar ningun usuario de la lista de contactos" o directamente no hace nada? Si es lo segundo pon esto:

echo $del_str;exit();


despues de:

$del_str=" Delete from dm_contacts where dm_contact_id IN (" . $to_delete .")";

y pega aqui el valor
  #10 (permalink)  
Antiguo 01/05/2010, 18:28
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

No, el mensaje que decis no aparece me tira la lista de usuarios a eliminar, pero no las elimina; dice Se han eliminado tantos usuarios.

Haciendo lo que me dijiste, el navegador me tira lo siguiente :"Delete from dm_contacts where dm_contact_id IN (2)"
  #11 (permalink)  
Antiguo 01/05/2010, 18:38
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 7 meses
Puntos: 150
Respuesta: Problema con select

Bueno, esa consulta parece correcta, solo queda chequear que hayas escrito bien los nombres de tablas, campos (cumpliendo mayusculas y minusculas) y por ultimo mirar directamente tus registros de la base de datos, quizas no tengas ningun dm_contact_id con valor 2.....
  #12 (permalink)  
Antiguo 01/05/2010, 18:46
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Hola creo que sé por donde viene la mano, hay dos campos dm_contact_id y dm_uid el primero es el numero de id de los contactos y el segundo el id del usuario de la sesion.
Entonces todos los contactos que un usuario agrega quedan asi:
pepe--dm_uid=2 y los contactos apareceran
2--1
2--3
2--4
como hago para que en el delete se seleccione tanto la id del usuario y de aquel que se esta por eliminar?
  #13 (permalink)  
Antiguo 01/05/2010, 19:29
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Estoy probando hacer algo asi:
Código PHP:
Ver original
  1. $del_str="  Delete from dm_contacts where  dm_uid IN (" . $to_delete .") and dm_contact_id IN (" . $_GET["id"].")";

Entonces me tira "Delete from dm_contacts where dm_uid IN (2) and dm_contact_id IN ()"
O sea vacio, como hago para obtener el id del contacto ?

$tid=$_GET["id"]; --> supuestamente tendria que seleccionar el id del contacto, pero no lo hace.Pero claro al presionar el checkbox y apretar el remove el form hace un llamado a mostrarcontacto.php que es este php, y en de la url no puedo obtener el id del contacto.
  #14 (permalink)  
Antiguo 01/05/2010, 21:22
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Hola amigos, dejo esta explicacion del problema que tengo en este momento y que estuve analizando lo que pasa.
En la tabla dm_contacts tengo 3 campos:

id--> que tiene autoincrement, directamente no tiene nada que ver con id de usuario y contacto
dm_uid-->la id del usuario de la sesion
dm_contact_id-->la id del contacto

Ahora pude ver que eliminando un contacto se elimina,pero pasa lo siguiente

se elimina de la siguiente manera:
--id--dm_uid--dm_contact_id--
--1-- -- 2 -- 3 --
--4-- -- 2 -- 4 --

El que se elimina es el que coincide o sea el 4 y el 4
Ahora no entiendo por qué lo hace asi, directamente deberia eliminar no importa que coincidan.

Código PHP:
Ver original
  1. $del_str="  Delete from dm_contacts where  id IN (" . $to_delete .") ";
  2. mysql_query($del_str);
  3. $msg1= ($items_removed > 1)?$items_removed . " Usuarios han sido removidos de tu lista de contactos":$items_removed . " Usuario ha sido removido de tu lista";
  4. }
  5. header("Location:"." msg_confirm_mem.php?errmsg=".urlencode($msg1));
  6. die();
  7. /////////////////////////////CONTACTS HAVE BEEN REMOVED /////////////////////
  8. }
  9.  
  10. $rs0_query=mysql_query("Select count(*) from dm_contacts  where   dm_uid=".$_SESSION["id"] );
  11. $rs0=mysql_fetch_array($rs0_query);
  12. $contact_count=$rs0[0];
  13.  
  14. $rs0_query=mysql_query("SELECT * FROM dm_contacts, members WHERE dm_contacts.dm_contact_id=members.id and dm_uid=" .$_SESSION["id"] );

Código PHP:
Ver original
  1. <tr>
  2.                               <td width="10" align="right" ><font class='normal'>
  3.                                 <input type="checkbox" name="checkbox<?php echo $cnt;?>" value="<?php
  4.                                echo $rs0["id"];?>">
  5.                                 </font></td>
  6.                               <td ><font class='normal'><a href="replyuser.php?type=contact&tid=<?php echo $rs0["dm_contact_id"];?>" ><?php echo $rs0["usuario"];?></a>
  7.                                 </font></td>
  8.  
  9.                             </tr>

Y cuando se ejecuta:

Código HTML:
Ver original
  1. </tr>
  2.                                                         <tr>
  3.                               <td width="10" align="right" ><font class='normal'>
  4.                                 <input type="checkbox" name="checkbox1" value="4">
  5.                                 </font></td>
  6.                               <td ><font class='normal'><a href="replyuser.php?type=contact&tid=4" >pepe</a>
  7.                                 </font></td>
  8.  
  9.                             </tr>
  #15 (permalink)  
Antiguo 02/05/2010, 02:52
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 7 meses
Puntos: 150
Respuesta: Problema con select

Se puede hacer de varias formas, una seria propagando $id, ya que segun dices guarda el id del usuario logueado ¿no?

Yo te recomiendo que en una web con login uses variables de sesion para guardar principalmente el ID, NICK y valores asi que luego vas a usar mucho.

De todas formas, me estoy liando un poco porque no estas poniendo nombres de archivo y solo partes de codigos, pero bueno, pega aqui la parte del inicio del formulario <form....................> ......... </form> , todo eso
  #16 (permalink)  
Antiguo 02/05/2010, 08:50
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema con select

Hola Vun, bueno gracias por responderme, te comento que el id al que me refiero no es al del usuario de la sesion, sino que es un campo que en la bd se va autoincrementando entonces para que no se eliminen todos los contactos del usuario de la sesion (dm_uid) necesito sacar ese numero de la tabla y ponerlo en el value del form:

Código PHP:
Ver original
  1. <form name="form2" method="post" action="mostrarcontactos.php" onSubmit="return validate_rem(this);">
  2.                           <table width="100%" border="0" align="center" cellpadding="2" cellspacing="1">
  3.                             <tr class="subtitle">
  4.                               <td width="10" align="right"> <input name="check_all" type="checkbox" id="check_all" onClick="select_all();" value="yes"></td>
  5.                               <td height="25"><b><font class='normal'>Usuario</font></b></td>
  6.                            
  7.                             <?php
  8.                             $cnt=0;
  9.                             while ($rs0=mysql_fetch_array($rs0_query))
  10.                             {
  11.                               $cnt++;
  12.  
  13.                              
  14.                              
  15.                             ?>
  16.                             <tr>
  17.  
  18.                               <td width="10" align="right" ><font class='normal'>
  19.                                 <input type="checkbox" name="checkbox<?php echo $cnt;?>" value="<?php echo $row["id"];?>">
  20.                                 </font></td>
  21.                               <td ><font class='normal'><a href="replyuser.php?type=contact&tid=<?php echo $rs0["dm_contact_id"];?>" ><?php echo $rs0["usuario"];?></a>
  22.                                 </font></td>
  23.  
  24.                             </tr>
  25.                             <?php
  26. }
  27. ?>
  28.                             <tr >
  29.                               <td colspan="2" align="left"> <input type="hidden" name="cnt" value="<?php echo $cnt; ?>">
  30.                                 <input type="submit" name="Submit3" value="Remove">
  31.                               </td>
  32.                               <!--td>&nbsp;</td>
  33.                               <td>&nbsp;</td>
  34.                               <td>&nbsp;</td-->
  35.                             </tr>
  36.                           </table>
  37.                         </form></td>
  38.                     </tr>


La base de datos:

Código SQL:
Ver original
  1. CREATE TABLE `dm_contacts` (
  2.   `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  3.   `dm_uid` BIGINT(20) DEFAULT NULL,
  4.   `dm_contact_id` BIGINT(20) DEFAULT NULL,
  5.   PRIMARY KEY  (`id`)
  6. ) TYPE=MyISAM;

Se que el problema está aca, ese id que esta ahi, lo puse no porque tenga que ver con la id de sesion, sino porque al dejar dm_uid y dm_contact_id me hace el primer registro de contacto y despues si estoy con la misma id de sesion no se va autoincrementando; o sea yo soy dm_uid=1 y agrego al dm_contact_id=3 todo bien, pero si sigo siendo dm_uid=1 y quiero agregar al dm_contact_id=4 no pasa nada se queda la tabla siempre ahi.

Entonces como hago para que suceda?

Última edición por den_22; 02/05/2010 a las 09:24
  #17 (permalink)  
Antiguo 03/05/2010, 02:45
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 7 meses
Puntos: 150
Respuesta: Problema con select

Me alegro que al final te saliera! perdona estos ultimos días no estuve mirando por acá, saludos

Etiquetas: select
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 02:09.