como hacer que bd reconozca el color y el tipo de texto

Estoy haciendo un generador de bloques de anuncios privados, basados en un form enviado a la bd y devuelto tras una consulta mysql, pero no consigo que la bd reconozca el tipo de fuente, el color y el salto de carro.
¿Alguien sabría decirme como se hace?
Gracias
Lo mejor de caerse al tropezar, es volverse a levantar.
Hay varias formas de hacerlo, seguro personas mas ingeniosas que yo prodrian explicar otras, pero voy a explicar la mas simple

Solo, necesitas incluirle codigos html en la bases de datos: pero es muy peligroso, asi que lo que haremos sera lo siguiente:

En el procesador del envio del dato, desde que llegue la variable del desarrollo debes poner html entities. (para que no hayan codigos que se generen en tu web)

luego debes revisar los str_replace, que eso lo que hace es remplazar la palabras, asi como en este for que al poner la [ b ], lo que significa es que te lo va a poner en negrita.

Te dejo con el asunto por mitad perdoname por eso, pero teng que irme. (lo que vas a hacer hoy es buscar en google "html entities" y "str_replace")

Cualquier otra duda te la resppondo manana a la misma hora y por el mismo canal..
A ver si lo entendi, en mi form:
<form action="enviapubli.php" target="portada" method="post" />
<center><textarea rows="13" cols="13" name="texto" style="text-align:center">
</textarea></center>
Debo incluir algo asi:
<pre>
&lt;?
$array1 =array(&quot;#&quot;,&quot;/&quot;,&quot;$&quot;,&quot;%&quot;,&quot;&amp;&quo t;);
$array2 = array(&quot;No&quot;);
$tempdireccion = str_replace($array1, $array2, $tempdireccion);
?&gt;
</pre>
tan solo que donde pone: &quot; ¿debo de poner los caracteres que quiero reemplazar? Es eso, porque no entiendo muy bien este codigo.
Lo mejor de caerse al tropezar, es volverse a levantar.
gjulian escribió:Estoy haciendo un generador de bloques de anuncios privados, basados en un form enviado a la bd y devuelto tras una consulta mysql, pero no consigo que la bd reconozca el tipo de fuente, el color y el salto de carro.
¿Alguien sabría decirme como se hace?
Gracias
Podrias explicarte un poco mejor y no decir cosas como salto de carro (que supongo que significara salto de linea)?
Explica un poco el sistema que quieres hacer, seguramente pueda ayudarte.
Hola olukarak, claro que sí.
Veras despues de que google me baneara mis paginas ¿no se porque?, he decido poner en su lugar anuncios que los propios visitantes de mis paginas puedan crear, si les interesa.
Para ello necesito algo que lo cree, como por ejemplo este cuadro de dialogo en el que estoy escribiendo este mensaje. En el que el interesado pueda elegir la fuente, el color de la fuente, el color de fondo, o incluso subir una imagen y por supuesto los espacios y salto de linea. Todo ello adaptado a las dimensiones que yo establezco.
Ya se que esto conlleva una tarea bastante ardua pero estoy dispuesto a aprehender lo que halla que aprender. Pero necesito mucha ayuda, puesto que soy bastante nuevo por estos lares.
Asi que si puedes...
Gracias
Lo mejor de caerse al tropezar, es volverse a levantar.
Realmente es mas simple de lo que parece:
Supongo que tienes conocimientos basicos...

Yo lo hago de la siguiente manera:
//pagina que procesa los mensajes:
$mensaje = $_POST
//elimina las etiquetas html (`para evitar posible hackeo')
$mensaje=htmlentities($mensaje, ENT_QUOTES);

//ahora esto ironicamente significa que cambia las etiquetas que tu le das permiso a usaer al usuario por etiquetas html
$mensaje = str_replace("[b]","[b]", $mensaje);
$mensaje = str_replace("[/b]","[/b]", $mensaje);
$mensaje = str_replace("[i]","[i]", $mensaje);
$mensaje = str_replace("[/i]","[/i]", $mensaje);

por ejemplo: aqui mismo en el foro se utilizan estas mismas etiquetas , cuando pones [ b ], se convierte en negrita...
rodojpm escribió:Realmente es mas simple de lo que parece:
Supongo que tienes conocimientos basicos...

Yo lo hago de la siguiente manera:
//pagina que procesa los mensajes:
$mensaje = $_POST
//elimina las etiquetas html (`para evitar posible hackeo')
$mensaje=htmlentities($mensaje, ENT_QUOTES);

//ahora esto ironicamente significa que cambia las etiquetas que tu le das permiso a usaer al usuario por etiquetas html
$mensaje = str_replace("[b]","[b]", $mensaje);
$mensaje = str_replace("[/b]","[/b]", $mensaje);
$mensaje = str_replace("[i]","[i]", $mensaje);
$mensaje = str_replace("[/i]","[/i]", $mensaje);

por ejemplo: aqui mismo en el foro se utilizan estas mismas etiquetas , cuando pones [ b ], se convierte en negrita...

Ampliando un poco mi respuesta puedes poner esto:
$mensaje = str_replace("","<font color="red">", $mensaje);
$mensaje = str_replace("","</font>", $mensaje);
Asi es, es muchisimo mas simple de lo que crees :D
Para el color de fondo crea un campo nuevo en la tabla de los anuncios en la DB para el color del fondo. Despues solo deberas solicitarlo como el texto del anuncio y ponerlo como valor en el color mediante php.
La manera que dice rodojpm para los colores y eso es la mejor.
Para sustituir los saltos de linea normales por
es igual que lo demas que te explica:
$mensaje = str_replace("\r\n","
", $mensaje);

Mas aun con esto puedes poner la opcion de emoticonos en el mensaje:
$mensaje = str_replace(":!:","[img]emoticonos/excl.gif[/img]", $mensaje);

Espero que sirva mi respuesta, ya que nuestro amigo se me adelanto jeje.
MUCHAS GACIAS chicos, mañana mismo me pongo mano a la obra.
Ya os contaré como me va.
Gracias de nuevo.
Lo mejor de caerse al tropezar, es volverse a levantar.
Algo me falla. Si pincho sobre , cuando el puntero se introduce en el textarea se quita el .
Y evidentemente, mysql no me la devuelve en negrita
Aqui os dejo los codigos a ver si me lo podeis revisar.
Gracias
Este es el form
<form action="publi.php" target="portada" method="post" />
<h2>Elija la fuente del texto</h2>
<div id="tipos">
<input type="button" name="texto" class="b" value="[b]" />
<input type="button" name="texto" class="b" value="[/b]" />
<input type="button" name="texto" class="i" value="[i]" />
<input type="button" name="texto" class="i" value="[/i]" />
</div>
<h2>Introduzca el texto que desee para su anuncio</h2>
<center><textarea rows="13" cols="13" name="texto" style="text-align:center">
</textarea></center>
<center><input type="submit" name="validar" value="Enviar" style="margin:20px 10px" /></center>
Y esta la de envio
<?
include ("conecta.php");
$texto = $_POST["texto"];
$texto = htmlentities($texto, ENT_QUOTES);
$texto = str_replace("[b]","[b]", $texto);
$texto = str_replace("[/b]","[/b]", $texto);
$texto = str_replace("[i]","[i]", $texto);
$texto = str_replace("[/i]","[/i]", $texto);
$intro = mysql_query("INSERT INTO anuncios (bloque) 
values ('$texto')")or die("Error en tabla");
$intro = mysql_query ("SELECT * FROM anuncios ORDER BY id DESC LIMIT 1;") ;
if ($row = mysql_fetch_array($intro)){
echo "<div id='bloque'> \n";
echo "<table> \n";
echo "<tr> \n";
echo "<td class='a'>su bloque</td> \n";
do {
echo "<tr> \n";
echo "<td>".$row["bloque"]."</td> \n";
} 
while ($row = mysql_fetch_array($intro));
echo "<table> \n";
echo "</table> \n";
echo "<div id='bloque'> \n";
}

else {
echo "¡ La base de datos está vacia !";
}
?>
Lo mejor de caerse al tropezar, es volverse a levantar.
La del envio no hace falta.
Aqui te cree un codigo nuevo del formulario ;)

<html>
<head>
<title>Sistema by olukarak</title>
<script language="javascript">
function openb(){
    bbcode=("[b]")
    publicidadform.texto.value+=bbcode
}
function closeb(){
    bbcode=("[/b]")
    publicidadform.texto.value+=bbcode
}
function openi(){
    bbcode=("[i]")
    publicidadform.texto.value+=bbcode
}
function closei(){
    bbcode=("[/i]")
    publicidadform.texto.value+=bbcode
}
</script>
</head>
<body>
<center>
<form action="publi.php" target="portada" method="post" name="publicidadform"> 
<textarea name="texto" cols="50" rows="5" wrap="VIRTUAL"></textarea>


[url="#"][b][/url]
[url="#"][/b][/url]
|
[url="#"][i][/url]
[url="#"][/i][/url]
</form>
</center>
</body>
</html>

PD: En el tuyo hay un error:
<form action="publi.php" target="portada" method="post" />
Esa barrita solo se pone en etiquetas que no tienen de cierre. Por ejemplo:

, <img />
Ok?
Sabía que había que utilizar javascript para relacionar los input con el textarea.
Pero como te estaras dando cuenta mis conocimientos son de los más basicos, basicos.
El de envio me es necesario para visualizar en el frame una reproduccion del bloque generado.
Mañana intentaré colocar los selectores de color de fondo, y estoy seguro que tampoco me saldrá.
Gracias olukarak.
Lo mejor de caerse al tropezar, es volverse a levantar.
gjulian escribió:Pero como te estaras dando cuenta mis conocimientos son de los más basicos, basicos.
No te creas, yo tampoco esq sepa mucho de java XD
Hola chicos, por fin me puedo conectar.
rodojpm, el color de fuente, no funciona asi: $mensaje = str_replace("","<font color="red">", $mensaje);
$mensaje = str_replace("","</font>", $mensaje);
y tampoco poniendole delante la etiqueta <style>
He probado muchas formas y no me funciona.
¿Que falla?
Lo mejor de caerse al tropezar, es volverse a levantar.
Parece evidente que he cometido otra de mis estupideces:
$mensaje = str_replace("","<font color="red">", $mensaje);
$mensaje = str_replace("","</font>", $mensaje);


lo que sucede es q puse unas comillas dentro de otra:
intenta asi:
$mensaje = str_replace("","<font color=\"red\">", $mensaje);
$mensaje = str_replace("","</font>", $mensaje);
Ya lo solucioné es: $texto = str_replace("","<font color=red
>", $texto);
sin comillas.
No sabes la de vueltas que le he dado.
Aun me queda que puedan elejir el color de fondo, ya lo haré, a ver que tal.
Lo mejor de caerse al tropezar, es volverse a levantar.
olukarak escribió:Para el color de fondo crea un campo nuevo en la tabla de los anuncios en la DB para el color del fondo. Despues solo deberas solicitarlo como el texto del anuncio y ponerlo como valor en el color mediante php.
A ver si lo entendi, creo en bd>tabla>campo=color.
Pero ¿como ingresa el color de fondo en el textarea el cliente?
Podrías explicarme esto mas detalladamente porfavor, olukarak, que no lo pillo bien.
Dispulca mi ignorancia.
Lo mejor de caerse al tropezar, es volverse a levantar.
Pues facil... Agregas al formulario de crear anuncio un menu desplegable que diga por ejemplo: Blanco, Negro, Rojo... El valor de la seleccion vendria a ser #FFFFFF, #000000, #DF0101...
Despues cuando valla a mostrar el anuncio pones al div bgcolor='<?php print $colorbg ?>'
Antes de eso solicitas con la demas info del anuncio que te lo saque en la var $colorbg.

Es la primera que se me ocurrio y me gusto porque podras agrupar los anuncios por color de fondo y eso :D
Aver, mira que soy torpe, hecho el select con name color y las distintas option con valores y name.
1ºEn la de envio declaro la variable: $color=$_POST["color"];
2ºDespues pido que la muestre asi:
$intro = mysql_query ("SELECT * FROM anuncios ORDER BY id DESC LIMIT 1;") ;
if ($row = mysql_fetch_array($intro)){
echo "<table style='border:red 1px solid'> \n";
echo "<tr> \n";
echo "<td class='a'>su bloque</td></tr> \n";
echo "</table> \n";
echo "
 \n";
do {
echo "<div id='bloque'>".$color. "\n";//esta es la llamada//
echo "<table> \n";
echo "<tr> \n";
echo "<td>".$row["bloque"]."</td></tr> \n";
echo "</table> \n";
} 
while ($row = mysql_fetch_array($intro));
echo "<table> \n";
echo "</table> \n";
echo "</div> \n";
}
3ºAl pedir que lo muestre, me muestra el value (green o red o black etc) pero NO el color.
Puedes hecharle un vistazito al code a ver en que fallo
Gracias
Lo mejor de caerse al tropezar, es volverse a levantar.
Como dije en el menu tienes q poner q el visitante vea por ejemplo la palabra Negro pero el valor debe ser igual a #000000. Esto es HTML
Lo se olukarak, Pero da igual como lo ponga, no sale el color de fondo, solo sale el valor. Ya sea #000 ó negro, #FFF ó blanco.
Algo falla en el code ó mas bien yo creo que el campo de la bd ha de recibir el valor #000, y interpretarlo como un color y no un varchar. ¿Que crees tu?
Lo mejor de caerse al tropezar, es volverse a levantar.
La db no puede hacer eso que dices... Se dedica a almacenar valores no a leer los codigos.
Ponme aqui el codigo del menu de seleccion de bgcolor.
Este es:
Color de fondo<select name="color">
<option>blanco</option>
<option value="#FF0000" class="ro"> rojo</option>
<option value="#088A08" class="ve">verde</option>
<option value="#000" class="ne">negro</option>
<option value="#FFFF00" class="ama">amarillo</option></select>
Yo creo que está bien.
Pero como tu dices la base de datos no interpreta, se limita a devolver valores.
Entonces el problema está en el code de solicitar la infor a bd y que html la interprete, osea aqui:
$intro = mysql_query ("SELECT * FROM anuncios ORDER BY id DESC LIMIT 1;") ;
if ($row = mysql_fetch_array($intro)){
echo "<table style='border:red 1px solid'> \n";
echo "<tr> \n";
echo "<td class='a'>su bloque</td></tr> \n";
echo "</table> \n";
echo "
 \n";
do {
echo "<div id='bloque'>".$color. "\n";//esta es la llamada//
echo "<table> \n";
echo "<tr> \n";
echo "<td>".$row["bloque"]."</td></tr> \n";
echo "</table> \n";
}
while ($row = mysql_fetch_array($intro));
echo "<table> \n";
echo "</table> \n";
echo "</div> \n";
}
¿Como lo ves?
Lo mejor de caerse al tropezar, es volverse a levantar.