Foros del Web » Programando para Internet » PHP »

Mensaje Emergente en campo

Estas en el tema de Mensaje Emergente en campo en el foro de PHP en Foros del Web. Hola a todos! Serian tan amables de ayudarme con esto: Tengo un campo texto donde se guarda algo asi: Cita: este es otra opcion 1. ...
  #1 (permalink)  
Antiguo 19/10/2004, 15:11
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Mensaje Emergente en campo

Hola a todos!

Serian tan amables de ayudarme con esto:
Tengo un campo texto donde se guarda algo asi:
Cita:
este es otra opcion 1. ashdkajsdh 2. hskdhfkjshdfkjs 3. asdkjashkjas 4. aksjhdakjsdkad
el cual debe de verse en la pantalla asi al pasar por un campo determinado
Cita:
este es otra opcion
1. ashdkajsdh
2. hskdhfkjshdfkjs
3. asdkjashkjas
4. aksjhdakjsdkad
Usando la funcion OVERLIB de javascript funciona para cuando el campo texto es de una sola linea, pero cuando es multilinea no me despliega nada.
Esto lo quiero hacer como el indice de este foro PHP, cuando pasa uno por un campo se despliega mas informacion en una miniventana.

Que otra funcion se puede usar o que esta mal en el codigo?

Código PHP:
$cellvalue $row[4];  // Donde row[4] es el campo texto y es informacion adicional del campo 12
$cellcamp $row[12];  //
print "<a href=\"javascript:void(0);\" onmouseover=\"return overlib('"$cellvalue ."',CAPTION,'Produccion',WIDTH,250);\" onmouseout=\"return nd();\"><td class=" $css_class " align=Default>" $cellcamp "</td></a>"
Gracias a todos

Saludos desde Monterrey, Mexico

Última edición por jsegundo; 19/10/2004 a las 15:13
  #2 (permalink)  
Antiguo 19/10/2004, 15:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. el problema deberías resolverlo en Javascript primero ..

El salto de línea para ese tema no sé si será: \n .. pero puedes probarlo (insisto que en el foro de Javascript deberías preguntar .. cuando tengas eso resuelto, aplicas PHP para darle "salida").

Código PHP:
$cellvalue ="este es otra opcion \n1. ashdkajsdh \n2. hskdhfkjshdfkjs \n3. asdkjashkjas \n4. aksjhdakjsdkad"
Un saludo,
  #3 (permalink)  
Antiguo 20/10/2004, 09:07
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
El problema es que necesito pasar el texto multilinea en una linea separadas por el campo <br>

Código PHP:

//De esta forma si funciona
$textonuev "dato1<br>dato2<br>dato3<br>";
print 
"<a href=\"javascript:void(0);\" onmouseover=\"return overlib('"$textonuev ."',CAPTION,'Produccion',WIDTH,250);\" onmouseout=\"return nd();\"><td class=" $css_class " align=Default>" nl2br($cellvalue) . "</td></a>"
pero lo que yo necesito es pasar el campo texto a ese formato para que funcione.

Código PHP:

    
// Paso el campo texto multilinea a un array
    
$sinbr explode("\n",br2nl($row[4])); 
    
$conbr "";
    
$frst=0;
    
// recorrer el array y a una variable ir pegando <br> para que al final quede algo asi
   // dato1<br>dato2<br>dato3
    
foreach($sinbr as $v) {
        if (
$frst==0){
            
$conbr '"'.$v;
            
$frst 1;
        } else {
            
$conbr $conbr.'<br>"'.$v;
        }
    }
$textonuev $conbr
// Se asigna datos con <br> a variable donde $conbr debe ser igual a dato1<br>dato2<br>dato3
print "<a href=\"javascript:void(0);\" onmouseover=\"return overlib('"$textonuev ."',CAPTION,'Produccion',WIDTH,250);\" onmouseout=\"return nd();\"><td class=" $css_class " align=Default>" nl2br($cellvalue) . "</td></a>"
no se si me explico bien
  #4 (permalink)  
Antiguo 20/10/2004, 13:59
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Esta es la estructura de la Base de Datos

CREATE TABLE `prueba` (
`id` int(10) NOT NULL auto_increment,
`contrato` varchar(10) NOT NULL default '',
`ventas` varchar(255) NOT NULL default '',
`compras` blob NOT NULL,
`produccion` text NOT NULL,
`ingen` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;


Si pasan el cursor por los campos de observaciones veran que aparece una C, P o V que al pasar por estas imagenes aparece un mensaje emergente en el cual debe mostrar las observaciones capturadas.

Si checan y entran a editar cualquier renglon veran que los campos produccion, compras e ingenieria son multilinea, pero solo me esta funcionando para cuando solo tiene una linea.

Si alguien me puede ayudar se los agradeceria.

Saludos

Última edición por jsegundo; 20/10/2004 a las 17:46
  #5 (permalink)  
Antiguo 20/10/2004, 14:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. en tu $row[4] (podrías usar como indice los nombres de los campos .. facilita la lectura del código .. $row['produccion'] ...) que es lo que tiene originalmente?

Contiene:
dato<br>dato<br>

u otra cosa? (lo comento por qué usas una función que no se vé lo que hace: br2nl() que supongo que convertirá esos <br> en \n). En tal caso .. ¿por qué almacenas <br>? .. podrías usar otro caracter de separador tipo | que se usa mucho para aplicar un explode() a ese caracter usado de separador obteniendo tu array. O en su defecto usa el explode con "<br>" .. sin necesidad de andar convirtiendo a \n los <br> para luego llegar a lo mismo ...

Lo que no sé tampoco es lo que realmente requiere tu rutina DHTML para hacer el salto de línea en sí .. si es un <br> (html en general) o bien es un salto de línea típo \n ..

Un saludo,
  #6 (permalink)  
Antiguo 20/10/2004, 15:13
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Gracias por responder,

requiere de <br> la rutina de overlib para desplegar multilinea.

lo de pasar de <br> a \n, es que ya no sabia que hacer.

Se supone que la funcion nl2br lo que hace es poner al final de cada linea un codigo <br> pero al pasarlo a la variable que se pone en el overlib nomas no funciona.

y lo que quiero es que la variable venga de esta forma:
$var = "dato1<br>dato2<br>dato3<br>etc."

por eso trate de explosionar y volverlo a juntar con <br> pero al pasarlo a la variable como que hace esto :

dato1
dato2
dato3
etc.

en vez de

dato1<br>dato2<br>dato3

no se si me explico
  #7 (permalink)  
Antiguo 20/10/2004, 15:20
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
De echo si lo asigno directamente a la variable si funciona asi : $var = "dato1<br>dato2<br>dato3";

si lo uso directo desde el campo texto, lo explosiono y queda asi

$sig = nl2br($dato);
entonces la variable sig queda como arreglo asi
$sig[0] = "dato1"
$sig[1] = "dato2"
$sig[2] = "dato3"

pero lo que necesitaria, creo yo, que deberia quedar seria

$var = $sig[0]."<br>".$sig[1]."<br>".$sig[2];

que seria parecido a $var = "dato1<br>dato2<br>dato3";

lo que quiero es que se quede <br> en la variable y no que desaparezca
  #8 (permalink)  
Antiguo 20/10/2004, 15:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y tu que dato guardas en tu BD en ese campo? .. con que formato?

Parece que nl2br() deja los \n que pudieras tener .. así que habría que usar str_replace() sólo o bien usar lo mismo para borrarlo (str_replace("\n","") o al reves ..).

Lo otro que puede suceder es que "andas" buscando un \n y lo que tienes como salto de línea sea un \r\n (depende del S.O. que uses así se generan los saltos de línea).

Un saludo,
  #9 (permalink)  
Antiguo 20/10/2004, 15:40
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Cluster,

no se si revisastes la pagina para que te dieras cuenta como estan los campos, y mas arriba puse la estructura de los campos, las observaciones (compras,produccion) son blob y text.

no se si haya un problema
  #10 (permalink)  
Antiguo 20/10/2004, 15:42
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
para referencia, mi servidor es Windows2003 y estoy usando XAMPP (Apache,PHP,MySQL)

servira de algo la referencia?
  #11 (permalink)  
Antiguo 20/10/2004, 16:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo que interesa no es el tipo de dato de tus campos sino los datos que guardas en ellos ..

Te hacía la pregunta que no sé que contienen ellos .. sobre todo a nivel de los salto de líneas . .no sé si guardas un "<br>" (HTML) o lo que dá un "textarea" normal un \n o \r\n o \r como salto de línea.

Por cierto .. la función:
$sig = nl2br($dato);
No genera un array .. sólo añade los <br> en lugar de los \n (pero los mantiene . .no desaparencen al parecer). El array lo obtienes usando explode() pero para eso debes indicar que caracter usas como separador de tus dato1 .. dato2 .. datoN . no sé si será un espacio .. un salto de línea \n o que ..

Un saludo,
  #12 (permalink)  
Antiguo 20/10/2004, 17:02
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
gracias por tus comentarios!

Los datos que se guardan son del tipo TEXTAREA normal.

El campo blob y text los estoy probando para ver cual tipo me conviene mas, pero para el ejemplo son lo mismo.

En el campo se captura la informacion tal y como se escribe aqui, sin formato ni nada.
  #13 (permalink)  
Antiguo 20/10/2004, 17:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues entonces sólo usando nl2br() debería sobrar para aplicarla a tu rutina DHTML .. ahora, si esta a su vez tiene problemas con los \n que al parecer no quita esa función .. tendrías que usar str_replace() al caracter \n para dejarlo en <br>

Revisa los comentarios de los usuarios de:
www.php.net/nl2br

(puede ser también que no estés generando un \n sino un \r\n .. ahora no recuerdo que es lo que genera windows).

Un saludo,
  #14 (permalink)  
Antiguo 20/10/2004, 17:45
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 14 años, 1 mes
Puntos: 0
Muchas gracias Cluster pero ya me canse, ya use varios scripts para abrir mensajes emergentes y ninguno me funciona con textos multilinea, que lastima ya que era una forma elegante de mostrar informacion ya que podias manipular titulos, texto hasta inclusive incluir imagenes, pero bueno

Voy a usar entonces el formato que usa este foro:

$var = br2nl($row["produccion"]);
print "<a href=\"#\"><td align=center title='".$var."'><img src='vtas.gif'></td></a>";

Este formato es como el texto alterno de las imagenes

function br2nl( $data ) {
return preg_replace( '!<br.*>!iU', "\n", $data );
}

De echo uso la funcion br2nl que la tome de la pagina de www.php.net/nl2br
y de esta forma me despliega el campo tecto como esta capturado en el textarea.

En fin, bueno muchas gracias por tu ayuda y 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 09:08.