entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Cambiar Texto En html desde la propia pagina

Hola
Mi inquietud es la siguiente, tengo un label en html que tiene un texto, "salida 01" pero requiero que los usuarios desde la pagina le coloquen el texto que ellos quieran, y que ese valor sea persistente, por ejemplo si el usuario le coloco "lampara", al salir de la pagina y volver a entrar el label siga siendo "lampara" mi codigo es el siguiente

<label for="P01"><b>SALIDA 01</b></label>

Agradeceria cualquier ayuda al respecto.

4 Respuestas

1voto

Leonardo-Tadei Puntos227010

Hola IngAndalado,

lo que planteás es sencillamente imposible. HTML es un lenguaje de presentación, cuya única responsabilidad es definir lo que se verá en un navegador.

Para hacer cualqueir tipo de proceso, como en tu caso que un valor se cambie por otro y sea almacenado para volverse a mostrar, tenés que usar un lenguaje de programación como JavaScript (que funciona dentro del navegador) o como PHP (que funciona dentro del servidor que aloja la página) entre otros posibles.

Dependerá de cuánto quieres que dure el cambio en el texto, si cada usuario verá su propio texto o si un cambio afecta a todos los que visiten la página y qué uso se le dará después para determinar si es necesario usar recursos del navegador o del servidor.

Saludos cordiales

0voto

ingadad_adading comentado

Leonardo gracias por tu respuesta, realmente lo que necesito es que el cambio sea permanente. lo que busco es como una especie de control o de boton de edicion que me permita cambiar el texto que estan dentro del label, si eso se hace con js o con php no le veo problema, pero como el cambio es permanete supongo que debo usar lenguaje de lado del servidor, si tienes alguna idea de codigo te lo agradeceria inmesamente.

0voto

Leonardo-Tadei comentado

Tal y como decís, habría que guardar esto del lado del servidor para que el cambio quede permanente y sea accesible por todos los que visiten esa página.

Una etiqueta LABEL no es editable (y es un uso poco ortodoxo porque su función es mostrar el texto asociado a un INPUT) por lo que habría que poner otro INPUT para que se peuda escribir el texto y un botón de guardar para enviar el dato y que se almacene.

Te serviría teneiendo que agregar al menos estos dos elementos visuales? Si es así, podría (con tiempo porque estoy con mucho trabajo) armarte algo de código que funcione...

1voto

Leonardo-Tadei comentado

Hola IngAndalado,

acá te dejo código que hace lo que te hace falta. Lo armé de manera tal que sea simple ampliarlo para varios LABEL, que supongo que es lo que te hará falta. Con un poco de CSS se podría hacer que el formulario que cambia el valor de la etiqueta quede oculto y se muestre solo si el usuario lo pide, así no se agregan elementos innecesarios a la interfaz una vez que ya están puestas las etiquetas que hagan falta.

<?php
/*
* @Prometeus Technology, a subsidiary of Pegasus Tech Supply
* @copyright Copyright (C) 2013 Leonardo Tadei. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see gpl-3.0.txt
* Etiqueta de Formulario is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/
$etiqueta01 = '';                       // valor a mostrar
$default = 'SALIDA 01';             // valor por omisión
$filename = './etiquetas.dat';  // nombre del archivo

// Si se cambia el valor, lo guarda
if(isset($_POST['Bok'])) {
    $handle = fopen($filename, "w+");
    fwrite($handle, $_POST['etiqueta01']);
    fclose($handle);
}
// Lee el archivo, si existe.
if(file_exists($filename)) {
    $tmp = file($filename);
    // Si hay un valor guardado, lo usa
    if(isset($tmp[0])) {
        $etiqueta01 = $tmp[0];
    }
}
// determina si se muestra el default o el valor
if($etiqueta01==''){
    $etiqueta01 = $default;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Etiqueta de Formulario</title>
<meta name="generator" content="Bluefish 2.2.3" />
<meta name="author" content="leo" />
<meta name="date" content="2013-11-03T21:55:32-0300" />
<meta name="copyright" content=""/>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
</head>
<body>
<form name="ff" id="ff" action="?" method="post">
<label for="P01"><b><?php print($etiqueta01); ?></b></label>
<input type="text" name="P01" value="un valor" />
</form>
<hr />
<form name="cambia" id="cambia" action="?" method="post">
Ingrese etiqueta: <input type="text" name="etiqueta01" id="etiqueta01" value="<?php print($etiqueta01); ?>" />
<input type="submit" name="Bok" value="Cambiar" />
</form>
</body>
</html>

Lo hice bajo licencia GPL así podés usarlo y adaptarlo a tus nececidades.

Saludos cordiales!

0voto

ingadad_adading comentado

Leonardo Como siempre tu respuesta es magnifica, ya la probe y funciona a la perfeccion, ahora solo falta aplicarlo para varios label, como seria el codigo en ese caso?

1voto

Leonardo-Tadei comentado

Ponés tantas $etiqueta01, $etiqueta02 y defaults como necesites.
Luego podés tomar dos caminos: o tener un $filename para cada etiqueta, con lo que el código queda igual solo que multiplicado por la cantidad de LABEL, o guardás todo en el mismo archivo con un enter al final de cada línea guardada con fwrite() y luego las leés como elementos de un vector:

// Lee el archivo, si existe.
if(file_exists($filename)) {
    $tmp = file($filename);
    // Si hay un valor guardado, lo usa
    if(isset($tmp[0])) {
        $etiqueta01 = $tmp[0];
    }
    if(isset($tmp[1])) {
        $etiqueta02 = $tmp[1];
    }
   // ...
    if(isset($tmp[n])) {
        $etiqueta0n = $tmp[n];
    }
}

Se podría reorganizar el código para que lectura del archivo estén en una función y la asignación de las etiquetas en otra, pero puede quedar para una segunda etapa esta refactorización.

Saludos cordiales!

1voto

josem11200 Puntos700

Hola. Lo de editar el texto es fácil, con Javascript se puede hacer (no recuerdo como era el código, era capturar los eventos de teclado cuando está seleccionado el <label> y luego añadirla al texto total). Para que sea persistente depende.

Si quieres que sea para todos, almacenar el contenido en un archivo y leerlo con PHP, para luego mostrarlo.

Si quieres que sea sólo para esa persona, usando cookies.

Todo esto contando que no estés usando HTML5, de ser así es muchísimo más fácil. Siento no tener el código, pero no recuerdo en qué página lo encontré.

Saludos.

1voto

kiokotzu Puntos1960

hola,
la solución que se me ocurre es que ese label lo reemplaces por un input y le quitas con css el border y le colocas el color de fondo de la pagina así se vera como un texto normal y al darle click le colocas los estilos, y a ese valor que tiene ese input lo guardas en base de datos para que al cargar la pagina otra ves no se pierda

te dejo un pequeño ejemplo

http://jsfiddle.net/kiokotzu/L84qy/

Saludos!

1voto

elporfirio Puntos2450

otra alternativa es utilizar str_replace() de PHP.

Se utiliza para esas plantillas multilenguaje

$html = '<label for="P01"><b>SALIDA_01</b></label>';

$nHtml = str_replace("SALIDA_01", $mitexto, $html);

echo $nHtml;

Para ello, tu sustitucion de archivos debe estar en una base de datos.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta