Foros del Web » Programando para Internet » PHP »

Script: Formulario-estilo

Estas en el tema de Script: Formulario-estilo en el foro de PHP en Foros del Web. Hola a tod@s, tengo un problema en un script que no acaba de salirme correctamente, el script consiste mediante un formulario presentar un texto en ...
  #1 (permalink)  
Antiguo 02/01/2014, 02:12
 
Fecha de Ingreso: octubre-2013
Ubicación: Castellón de la Plana
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Script: Formulario-estilo

Hola a tod@s, tengo un problema en un script que no acaba de salirme correctamente, el script consiste mediante un formulario presentar un texto en pantalla con la opción de editarlo y modificar el formato de letra utilizando los estilos.

El resultado del script debe ser más o menos este:




Para ello creo el siguiente código:

Código PHP:
<html>
<head>
<title>Ejercicio_3</title>
</head>
<body>
<?php
if (isset($_REQUEST['aceptar']))
{
$marcado=$_REQUEST['marcado'];
$texto=$_REQUEST['texto'];
} else
{
$texto='Lorem Ipsum Dolor Sit Amet';
$marcado=$texto;
} echo 
"<p style='$marcado'>$texto</p>";
?>
<hr>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
Introduce el texto a mostrar:
<input type="text" name="texto" value="<?php echo $texto ?>">
<br>
Estilo del texto:
<input type="checkbox" name="marcado" value="bold" <?php if ($marcado=='bold') echo 'checked' ?> > Negrita
<br>
<br>
<input type="submit" name="aceptar" value="Aceptar">
</form>
</body>
</html>

Al ejecutar el script obtengo lo siguiente:





Como puede verse al seleccionar el checkbox el texto no pasa a negrita..Los otros campos cursiva y subrayado no los he incluido..de momento

Alguien me puede echar una mano..

Saludos y Feliz Año a tod@s
  #2 (permalink)  
Antiguo 02/01/2014, 03:40
 
Fecha de Ingreso: enero-2014
Ubicación: Navarra
Mensajes: 94
Antigüedad: 10 años, 3 meses
Puntos: 18
Respuesta: Script: Formulario-estilo

No veo que estes indicando estilo alguno, podrias modificarlo algo así:

<html>
<head>
<title>Ejercicio_3</title>
</head>
<body>
<?php
if (isset($_REQUEST['aceptar']))
{
$marcado=$_REQUEST['marcado'];
$texto=$_REQUEST['texto'];
} else
{
$texto='Lorem Ipsum Dolor Sit Amet';
if (!isset($marcado)){ $marcado = "normal;" }
>?
<p style="font-weight:<?php echo $marcado ?>">$texto</p>

<hr>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
Introduce el texto a mostrar:
<input type="text" name="texto" value="<?php echo $texto ?>">
<br>
Estilo del texto:
<input type="checkbox" name="marcado" value="bold" <?php if ($marcado=='bold') echo 'checked' ?> > Negrita
<br>
<br>
<input type="submit" name="aceptar" value="Aceptar">
</form>
</body>
</html>

Saludos
  #3 (permalink)  
Antiguo 02/01/2014, 05:26
 
Fecha de Ingreso: octubre-2013
Ubicación: Castellón de la Plana
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Script: Formulario-estilo

Muchas gracias por la ayuda Sintel_1, solo me falla que al añadir las otras opciones se desactivan las demás es decir si marco "negrita" y después "cursiva" se queda marcado solo "cursiva" y desaparece el estilo "negrita".

Este es el ćodigo con el que consigo que el texto se quede seleccionado en negrita:


Código PHP:
<html>
<head>
<title>Ejercicio_3</title>
</head>
<body>
<?php
if (isset($_REQUEST['aceptar']))
{
$marcado=$_REQUEST['marcado'];
$texto=$_REQUEST['texto'];
} else
{
$texto='Lorem Ipsum Dolor Sit Amet';
$marcado=$texto;

 echo 
"<p style='font-weight:$marcado'>$texto</p>";


?>
<hr>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
Introduce el texto a mostrar:
<input type="text" name="texto" value="<?php echo $texto ?>">
<br>
Estilo del texto:
<input type="checkbox" name="marcado" value="bold" <?php if ($marcado=='bold') echo 'checked' ?> > Negrita
<input type="checkbox" name="marcado" value="italic" <?php if ($marcado=='italic') echo 'checked' ?> > Negrita
<br>
<input type="submit" name="aceptar" value="Aceptar">
</form>
</body>
</html>

El problema viene -creo-, en el valor name del input del formulario("marcado") que al ser igual para las tres opciones siempre elige la última opción seleccionada, de alguna manera "machaca" a las demás opciones..creo que se podría corregir poniendo en el name del input del formulario name="marcado[]"..Ya lo he intentado pero no me sale correctamente..Obtengo un error en la línea:

Código PHP:
echo "<p style='font-weight:$marcado'>$texto</p>"
No sé si con implode u explode se podría solucionar... La verdad es que no sé como ponerlo

Saludos y gracias por la ayuda...
  #4 (permalink)  
Antiguo 02/01/2014, 08:50
 
Fecha de Ingreso: octubre-2013
Ubicación: Castellón de la Plana
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Script: Formulario-estilo

Hola de nuevo como comentaba con este código consigo que al seleccionar cada una de las opciones se muestren en sus respectivos estilos, pero se intento seleccionar las tres a la vez o más de una opción (negrita, cursiva, subrayado) no me funciona..

Código PHP:
<html>
<head>
<title>Ejercicio_3</title>
</head>
<body>
<?php
if (isset($_REQUEST['aceptar']))
{
$marcado=$_REQUEST['marcado'];
$texto=$_REQUEST['texto'];
} else
{
$texto='Lorem Ipsum Dolor Sit Amet';
$marcado=$texto;

 echo 
"<p style='font-weight:$marcado; font-style:$marcado; text-decoration:$marcado'>$texto</p>";

?>
<hr>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'?>">
Introduce el texto a mostrar:
<input type="text" name="texto" value="<?php echo $texto ?>">
<br>
Estilo del texto:
<input type="checkbox" name="marcado" value="bold" <?php if ($marcado=='bold') echo 'checked' ?> > Negrita
<input type="checkbox" name="marcado" value="italic" <?php if ($marcado=='italic') echo 'checked' ?> > Cursiva
<input type="checkbox" name="marcado" value="underline" <?php if ($marcado=='underline') echo 'checked' ?> > Subrayado
<br>
<input type="submit" name="aceptar" value="Aceptar">
</form>
</body>
</html>

Negrita






Cursiva







Subrayado





Como se puede apreciar sale correctamente pero si intento seleccionar más de una opción no funciona bien..el script simplemente coge la última opción señalada y desmarca la otra opción marcada.


El resultado correcto del script debería ser este:





Tengo que decir que llevo muy poco tiempo en php, recién estoy empezando..

Saludos ...
  #5 (permalink)  
Antiguo 02/01/2014, 12:18
 
Fecha de Ingreso: enero-2014
Ubicación: Navarra
Mensajes: 94
Antigüedad: 10 años, 3 meses
Puntos: 18
Respuesta: Script: Formulario-estilo

Hola.

Efectivamente, el problema está en el "name" del checkbox

Puedes solucionando creando un array con name="marcado[]"
o poner un name diferente.

usando un array podría quedar así :

Código:
<html>
<head>
<title>Ejercicio_3</title>
</head>
<body>
<?php
if (isset($_REQUEST['aceptar']))
{
$marcado=$_REQUEST['marcado'];
$texto=$_REQUEST['texto'];
} else
{
$texto='Lorem Ipsum Dolor Sit Amet';
$marcado=$texto;
} 
$n = count($marcado);
$i = 0;
$estilo = "font-weight: normal; font-style: normal; text-decoration: none;";

while ($i < $n)
   {
       if ($marcado[$i] == "bold") { $estilo.=" font-weight: bold;"; $weight = "bold"; }
       if ($marcado[$i] == "italic") { $estilo.=" font-style: italic;"; $style = "italic"; }
       if ($marcado[$i] == "underline") { $estilo.=" text-decoration: underline;"; $decoration = "underline"; }
      $i++;
   }
 
 echo "<p style=\"$estilo\" >$texto</p>";

?>
<hr>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
Introduce el texto a mostrar:
<input type="text" name="texto" value="<?php echo $texto ?>">
<br>
Estilo del texto:
<input type="checkbox" name="marcado[]" value="bold" <?php if ($weight == "bold") echo 'checked' ?> > Negrita
<input type="checkbox" name="marcado[]" value="italic" <?php if ($style == "italic") echo 'checked' ?> > Cursiva
<input type="checkbox" name="marcado[]" value="underline" <?php if ($decoration == "underline") echo 'checked' ?> > Subrayado
<br>
<input type="submit" name="aceptar" value="Aceptar">
</form>
</body>
</html>
no lo he probado, pero deberia de funcionar.

saludos.

Etiquetas: formulario, html
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 23:19.