Hola mixzplit, te dejo el código completo que se necesita con una pequeña corrección, que es la parte para ocultar el texto desplegado cuando se muestra otro y volver a la versión corta; pruebalo a ver que te parece. Primero el código javascript que debe ir en la cabecera de la página.
Código Javascript
:
Ver original<script type="text/javascript">
var datos= new Array();
var visible= -1;
function mostrar(obj, indice)
{
if(visible != -1)
{
var actual= document.getElementById('celda'+visible);
var o= 'celda'+ visible;
actual.innerHTML= datos[visible].substring(0, 5)+'<a href="#" onClick="mostrar(\''+o+'\', '+visible+')"> [...]</a>';
}
var celda= document.getElementById(obj);
celda.innerHTML= datos[indice];
visible= indice;
}
</script>
Y tambien el código php con el bloque 'else' necesario.
Código PHP:
Ver original<?php
if(!isset($_SESSION['us_id'])){ header("Location: ../index.php"); } else {
$usuario=$_SESSION['us_id'];
$admin=$_SESSION['us_tipo'];
$emp=$_GET["q"];
include_once("conexion.php");
include('./Scripts/funcion.php');
$conexion = new ControlBD();
$conexion->conectar();
$conexion->seleccionarBD();
$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
INNER JOIN cgempresa on req_idempresa=em_id
INNER JOIN cgusuarios on req_usuario=us_id
INNER JOIN cgmodulo on req_idmodulo=mo_id
INNER JOIN cgtransacciones on req_idtrans=tra_tipo
INNER JOIN cgsucursal ON req_idsucursal=su_id
WHERE req_valicacion=0 and req_estado='Activo' AND em_id = '$emp'
ORDER BY req_id,req_date";
$result=$conexion->ejecutarQuery($query);
?>
<form>
<a href="javascript:imprSelec('seleccion')" >Imprimir Requerimientos</a>
<div class="centrado">
<DIV ID="seleccion">
<table class="tablas">
<tr>
<th>Empresa</th>
<th>Sucursal</th>
<th>Ticket</th>
<!--<th>Departamento</th>
<th>Cargo del Solicitante</th> -->
<th>Nombre</th>
<th>Email</th>
<th>Telefono</th>
<th>Modulo</th>
<th>Transaccion</th>
<th>Fecha</th>
<th>Descripcion</th>
<th>Imagen</th>
<th>Documentacion</th>
<th colspan="4">Acciones</th>
</tr>
<?
$indice= 0;
<tr>
<td><?=$array['em_nombre']; ?></td>
<td><?=$array['su_nombre']; ?></td>
<td><strong><?=$array['req_id']; ?></strong></td>
<!--<td><?=$array['us_unidad']; ?></td>
<td><?=$array['us_cargo']; ?></td>-->
<td><?=$array['us_nombre']." ".$array['us_apellido']; ?></td>
<td><?=$array['us_email']; ?></td>
<td><?=$array['us_telefono']; ?></td>
<td><?=$array['mo_nombre']; ?></td>
<td><?=$array['tra_maestro']; ?></td>
<td><?=cambiar_fecha($array['req_date']); ?></td>
<td style=" text-align:justify; font-family:Tahoma, Geneva, sans-serif; font-size:12px;" id="<?="celda".$indice; ?>">
<? if(strlen($array['req_descripcion']) <= 120){ echo $array['req_descripcion'];
}else{
echo $descri=substr($array['req_descripcion'], 0, 120)."<a href=\"#\" onClick=\"mostrar('celda".$indice."', ".$indice.")\">[...]</a>"; echo "<script type=\"text/javascript\">\n";
echo "datos[".$indice."]= '".$array['req_descripcion']."'\n";
echo "</script>\n";
} ?>
</td>
<td><a href="<?=$array['req_imagen']; ?>" rel="lightbox" title="imagen"><img src="<?=$array['req_imagen']; ?>" alt="imagen" width="72" height="64" /></a></td>
<? $archivo=$array['req_archivo']; if(substr($archivo,-3) == 'doc'){ ?> <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/word.png" alt="Word" width="50" height="50" /></a></td>
<? } if(substr($archivo,-4) == 'docx'){ ?> <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/word.png" alt="Word" width="50" height="50" /></a></td>
<? } elseif(substr($archivo,-3) == 'xls'){ ?> <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/excel.png" alt="Excel" width="50" height="50" /></a></td>
<? } elseif(substr($archivo,-4) == 'xlsx'){ ?> <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/excel.png" alt="Excel" width="50" height="50" /></a></td>
<? } elseif(substr($archivo,-3) == 'pdf'){ ?> <td class="center"><a href="<?=$array['req_archivo']; ?>" title="Documentacion"><img src="images/pdf.png" alt="Excel" width="50" height="50" /></a></td>
<? } else {?>
<td class="center">No Tiene</td>
<? } ?>
<td><a href="Javascript:Borrar('<?=$id;?>','Borrar_disp.php' ,'800','300')" title="Anular"><img src="./imagenes/eliminar.png" alt="Eliminar" border=0 ></a></td>
<td><a href="javascript:Actualizar('<?=$id;?>','modificareq.php' ,'850','370')" title="Modificar"><img src="./imagenes/actualizar.png" alt="Modificar" border=0></a></td>
<? if($array['req_valicacion']==0){ ?>
<td><a href="javascript:Validar('<?=$id;?>','activar.php' ,'800','300')" title="Validar"><img src="./imagenes/aceptar.png" alt="Agregar" border=0 ></a></td><? } ?>
<td><a href="javascript:Correo('<?=$id;?>','correo.php' ,'800','300')" title="Correo"><img src="./imagenes/mail.png" alt="Agregar" border=0 ></a></td>
</tr>
<?
$indice++;
} ?>
</table>
</DIV>
</div>
</form>
</body>
<? }?>
Como puedes ver la variable '$indice', que se define antes del bucle 'while' y que aumenta su valor en uno a cada iteración del bucle, es la que sirve para asignar el 'id' a cada celda que contine la descripción y tambien para guardar esta descripción en la posición correspondiente del array y poder recuperarla despues.
Edito:
En el código javascript hay una equivocación en esta linea.
Código Javascript
:
Ver originalactual.innerHTML= datos[visible].substring(0, 5)+'<a href="#" onClick="mostrar(\''+o+'\', '+visible+')"> [...]</a>';
Como esta solo mostrara seis caracteres, lo correcto es esto.
Código Javascript
:
Ver originalactual.innerHTML= datos[visible].substring(0, 120)+'<a href="#" onClick="mostrar(\''+o+'\', '+visible+')"> [...]</a>';
De esta manera se mostraran los 121 caracteres iniciales.