Ver Mensaje Individual
  #11 (permalink)  
Antiguo 22/09/2011, 18:35
lubtufano
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 13 años, 5 meses
Puntos: 72
Respuesta: Mostrar y Ocultar Contenido

Pues en efecto esto no funciona debido a que se esta utilizando Ayax, entoces lo mejor es utilizar Ajax tambien para realizar lo que se desea; para esto sera necesario crear otra archivo PHP con el cúal se obtendra de la base de datos la descripción requerida, tambien se modificara un poco el archivo 'req_seleccionado.php' y el código javascript.

El archivo 'req_seleccionado.php' quedaria asi:
Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     if(!isset($_SESSION['us_id'])){
  4.     header("Location: ../index.php");
  5.     } else {
  6.     $usuario=$_SESSION['us_id'];
  7.     $admin=$_SESSION['us_tipo'];
  8.      
  9.     $emp=$_GET["q"];
  10.      
  11.     include_once("conexion.php");
  12.     include('./Scripts/funcion.php');
  13.         $conexion = new ControlBD();
  14.         $conexion->conectar();
  15.         $conexion->seleccionarBD();
  16.        
  17.     $query="SELECT req_id, em_nombre,su_nombre, us_unidad, us_cargo, us_nombre, us_apellido, us_email, us_telefono, mo_nombre, tra_maestro, req_date, req_descripcion, req_valicacion, us_tipo, req_imagen, req_archivo FROM cgrequerimientos
  18.              INNER JOIN cgempresa on req_idempresa=em_id
  19.              INNER JOIN cgusuarios on req_usuario=us_id
  20.              INNER JOIN cgmodulo on req_idmodulo=mo_id
  21.              INNER JOIN cgtransacciones on req_idtrans=tra_tipo
  22.              INNER JOIN cgsucursal ON req_idsucursal=su_id
  23.               WHERE req_valicacion=0 and req_estado='Activo' AND em_id = '$emp'
  24.               ORDER BY req_id,req_date";
  25.     $result=$conexion->ejecutarQuery($query);
  26.     ?>
  27.     <form>
  28.     <a href="javascript:imprSelec('seleccion')" >Imprimir Requerimientos</a>
  29.     <div class="centrado">
  30.     <DIV ID="seleccion">
  31.     <table class="tablas">
  32.         <tr>
  33.             <th>Empresa</th>
  34.             <th>Sucursal</th>
  35.             <th>Ticket</th>
  36.             <!--<th>Departamento</th>
  37.             <th>Cargo del Solicitante</th> -->
  38.             <th>Nombre</th>
  39.             <th>Email</th>
  40.             <th>Telefono</th>
  41.             <th>Modulo</th>
  42.             <th>Transaccion</th>
  43.             <th>Fecha</th>
  44.             <th>Descripcion</th>
  45.             <th>Imagen</th>
  46.             <th>Documentacion</th>
  47.             <th colspan="4">Acciones</th>
  48.         </tr>
  49.     <?
  50.     $indice= 0;
  51.     while($array=mysql_fetch_array($result)){ $id=$array['req_id'];?>
  52.         <tr>
  53.             <td><?=$array['em_nombre']; ?></td>
  54.             <td><?=$array['su_nombre']; ?></td>
  55.             <td><strong><?=$array['req_id']; ?></strong></td>
  56.             <!--<td><?=$array['us_unidad']; ?></td>
  57.             <td><?=$array['us_cargo']; ?></td>-->
  58.             <td><?=$array['us_nombre']." ".$array['us_apellido']; ?></td>
  59.             <td><?=$array['us_email']; ?></td>
  60.             <td><?=$array['us_telefono']; ?></td>
  61.             <td><?=$array['mo_nombre']; ?></td>
  62.             <td><?=$array['tra_maestro']; ?></td>
  63.             <td><?=cambiar_fecha($array['req_date']); ?></td>
  64.             <td style=" text-align:justify; font-family:Tahoma, Geneva, sans-serif; font-size:12px;" id="<?="celda".$indice; ?>">
  65.             <? if(strlen($array['req_descripcion']) <= 120){
  66.                  echo $array['req_descripcion'];
  67.                  }else{
  68.         echo $descri=substr($array['req_descripcion'], 0, 120)."<a href=\"#\" onClick=\"mostrar('celda".$indice."', ".$indice.", ".$id.")\">[...]</a>";
  69.         } ?>
  70.              </td>
  71.            
  72.             <td><a href="<?=$array['req_imagen']; ?>" rel="lightbox" title="imagen"><img src="<?=$array['req_imagen']; ?>" alt="imagen" width="72" height="64" /></a></td>
  73.            
  74.             <? $archivo=$array['req_archivo']; if(substr($archivo,-3) == 'doc'){ ?>  
  75.             <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/word.png" alt="Word" width="50" height="50"  /></a></td>
  76.             <? } if(substr($archivo,-4) == 'docx'){ ?>  
  77.             <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/word.png" alt="Word" width="50" height="50"  /></a></td>
  78.             <? } elseif(substr($archivo,-3) == 'xls'){ ?>  
  79.             <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/excel.png" alt="Excel" width="50" height="50"  /></a></td>
  80.             <? } elseif(substr($archivo,-4) == 'xlsx'){ ?>  
  81.             <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/excel.png" alt="Excel" width="50" height="50"  /></a></td>
  82.             <? } elseif(substr($archivo,-3) == 'pdf'){ ?>  
  83.             <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/pdf.png" alt="Excel" width="50" height="50"  /></a></td>
  84.             <? } else {?>
  85.             <td class="center">No Tiene</td>
  86.             <? } ?>
  87.            
  88.             <td><a href="Javascript:Borrar('<?=$id;?>','Borrar_disp.php' ,'800','300')" title="Anular"><img src="./imagenes/eliminar.png" alt="Eliminar" border=0 ></a></td>
  89.             <td><a href="javascript:Actualizar('<?=$id;?>','modificareq.php' ,'850','370')" title="Modificar"><img src="./imagenes/actualizar.png" alt="Modificar" border=0></a></td>
  90.     <? if($array['req_valicacion']==0){ ?>
  91.             <td><a href="javascript:Validar('<?=$id;?>','activar.php' ,'800','300')" title="Validar"><img src="./imagenes/aceptar.png" alt="Agregar" border=0 ></a></td><? } ?>
  92.        
  93.         <td><a href="javascript:Correo('<?=$id;?>','correo.php' ,'800','300')" title="Correo"><img src="./imagenes/mail.png" alt="Agregar" border=0 ></a></td>
  94.        
  95.         </tr>
  96.     <?
  97.     $indice++;
  98.      } ?>
  99.     </table>
  100.     </DIV>
  101.     </div>
  102.     </form>
  103.     <? }?>

Lo que se hizo fue agregar un parametro más al llamado a la función 'mostar()', el cual es el id del registro y eliminar los bloques <script></script> que no sirven en este caso.
Ahora el código javascript que se localiza en la página principal.
Código Javascript:
Ver original
  1. <script>
  2.  $(function(){
  3.         $("input, textarea, select, button").uniform();
  4.       });
  5. function showUser(str)
  6. {
  7. if (str=="")
  8.   {
  9.   document.getElementById("txtHint").innerHTML="";
  10.   return;
  11.   }
  12. if (window.XMLHttpRequest)
  13.   {// code for IE7+, Firefox, Chrome, Opera, Safari
  14.   xmlhttp=new XMLHttpRequest();
  15.   }
  16. else
  17.   {// code for IE6, IE5
  18.   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  19.   }
  20. xmlhttp.onreadystatechange=function()
  21.   {
  22.   if (xmlhttp.readyState==4 && xmlhttp.status==200)
  23.     {
  24.     resumen= "";
  25.     visible= -1;
  26.     i= "";
  27.     document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  28.     }
  29.   }
  30. xmlhttp.open("GET","req_selecionado.php?q="+str,true);
  31. xmlhttp.send();
  32. }
  33.  
  34. var resumen= "";
  35. var visible= -1;
  36. var i= "";
  37.  
  38. function mostrar(obj, indice, d)
  39. {
  40. if (window.XMLHttpRequest)
  41.   {// code for IE7+, Firefox, Chrome, Opera, Safari
  42.   xmlhttp=new XMLHttpRequest();
  43.   }
  44. else
  45.   {// code for IE6, IE5
  46.   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  47.   }
  48. xmlhttp.onreadystatechange=function()
  49.   {
  50.   if (xmlhttp.readyState==4 && xmlhttp.status==200)
  51.     {
  52.     if(visible != -1)
  53.         document.getElementById('celda'+visible).innerHTML= resumen+" <a href=\"#\" onclick=\"mostrar('celda"+visible+"', "+visible+", "+i+")\">[...]</a>";
  54.     resumen= document.getElementById(obj).childNodes[0].nodeValue;
  55.     visible= indice;
  56.     document.getElementById(obj).innerHTML=xmlhttp.responseText;
  57.     }
  58.   }
  59. xmlhttp.open("GET", "req_selecionado_2.php?ind="+indice+"&id="+d, true);
  60. xmlhttp.send();
  61. }

Con la función mostrar se realizara una consulta asincronica cada vez que se de 'clic' sobre los tres puntos, esta consulta devolvera la descripción completa que se colocara en la celda adecuada al mismo tiempo que se oculta, en caso de que haya, la otra descripción larga.
Finalmente tenemos el segundo archivo PHP en este caso llamado 'req_selecionado_2.php', el cual recibirá como dato el 'id' del registro solicitado y lo único que se necesita es conectarce a la base de datos y obtener los datos deseados creo que seria algo asi.
Código PHP:
Ver original
  1. <?php
  2. if(!isset($_SESSION['us_id'])){
  3. header("Location: ../index.php");
  4. } else {
  5. $usuario=$_SESSION['us_id'];
  6. $admin=$_SESSION['us_tipo'];
  7.  
  8. $emp=$_GET["q"];
  9.  
  10. include_once("conexion.php");
  11. include('./Scripts/funcion.php');
  12.     $conexion = new ControlBD();
  13.     $conexion->conectar();
  14.     $conexion->seleccionarBD();
  15.    
  16. $query="SELECT  req_descripcion FROM cgrequerimientos where req_id=".$_GET['id'];
  17. $result=$conexion->ejecutarQuery($query);
  18. if($array= mysql_fetch_array($result))
  19.    echo $array['req_descripcion'];
  20. else
  21.    echo "no existe el elemento";
  22. ?>

Bueno eso ya depende de la estructura de la base de datos. Espero que esto te sirva.