Foros del Web » Programando para Internet » PHP »

Salto de linea en php para mysql

Estas en el tema de Salto de linea en php para mysql en el foro de PHP en Foros del Web. Buenas gente me ha surgido un problema, ya que cuento con una pagina de frases de facebook, y al momento de hacer un salto de ...
  #1 (permalink)  
Antiguo 21/12/2011, 21:11
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Pregunta Salto de linea en php para mysql

Buenas gente me ha surgido un problema, ya que cuento con una pagina de frases de facebook, y al momento de hacer un salto de linea en el form, este me lo guarda de forma seguida a la BD.

Por ejemplo esta frase:
"que calor hace.....
porque es verano xD"

Pero me lo guarda de esta forma "que calor hace..... porque es verano xD".
*************
Ahora les pasare lo que se necesitó:
-_-_-_-_-_
index.php
process.php
config.php
db_con.php
like.php
like.sql

Bien empecemos:

index.php
Código PHP:
<script language=JavaScript>
<!--
function check_length(form1)
{
maxLen = 500; // numero de caracteres maximo permitidos
if (form1.textarea.value.length >= maxLen) {
// Mensaje de alerta si el límite máximo es alcanzado.
form1.textarea.value = form1.textarea.value.substring(0, maxLen);
}
else{ // La longitud máxima no alcanzó para actualizar el valor de mi contador de texto
form1.text_num.value = maxLen - form1.textarea.value.length;}
}
//-->
</script>

<?
                              
if($_POST['like']){
                                  if(empty(
$_POST['textarea'])){
                                      die();
                                  }
                              }
                            
?>

<form id="form1" name="form1" method="post" action="process.php">
<textarea onKeyPress="check_length(this.form); onKeyDown=check_length(this.form);" name="textarea" id="textarea" cols="45" rows="5"></textarea>
<div class="char"> Limite:  <input class="lim" size=1 value=500 name=text_num>
</div>
<input type="submit" name="like" id="button" value=" " />
</form>
<div class="hd_bg">
                     <h1><a href="#">Ultimas frases creadas</a></h1>
                </div>
                    <div class="box_bg">
                        <div class="box_con">
                        <?
                        
include('db_con.php');
                        
mysql_connect("$host""$username""$password")or die("no se puede conectar a la BD");
                        
mysql_select_db("$db_name")or die("No se puede seleccionar DB");
                        
$top3 "SELECT * FROM  `like` ORDER BY  `like`.`id` DESC LIMIT 0 , 9";
                        
$new3 mysql_query($top3) or die(mysql_error()); 
                        while(
$rows3 mysql_fetch_array($new3)){
                        
?>
                            <div style="clear:left;">
                            <a href="<? echo $site;?>like.php?like=<? echo $rows3['id']; ?>"><? echo stripslashes($rows3['like']);?></a>
                            </div>
                        <?
                        
}
                        
?>
Mostramos un formulario de alta de la frase, seguido de una consulta al resultado guardado a la BD para luego mostrarlo en esa misma pagina después.

process.php
Código PHP:
<?php
ob_start
();
include(
'config.php');
include(
'db_con.php');
if(
$_POST['like']){
function 
hackerDefense(){
    
// begin hacker defense
    
foreach ($_POST as $secvalue) {
        if ((
eregi("<[^>]*script.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*object.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*iframe.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*applet.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*window.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*document.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*cookie.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*meta.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*style.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*alert.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*form.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*php.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*<?.*\"?[^>]*>"$secvalue)) ||
        (
eregi("<[^>]*img.*\"?[^>]*>"$secvalue))) {
            
header('location:'.$site.'index.php');
            die ();
        }
    }
    
// end hacker defense     
}
}
if(
$_POST['like']){
      if(empty(
$_POST['textarea'])){
          
header('location:'.$site);
          die();
      }
      
hackerDefense();
      
$likes $_POST['textarea'];
      
$like mysql_escape_string($likes);
mysql_connect("$host""$username""$password")or die("no se puede conectar a la BD");
mysql_select_db("$db_name")or die("No se puede seleccionar DB");

$today date("Ymdhis");
$rand $today.mt_rand().mt_rand().mt_rand();
$count '0';
$sql "INSERT INTO `like` (`rand`, `like`, `count`, `created`) VALUES ('$rand', '$like', 0, '$today')";
    if (!
mysql_query($sql)){
    die(
'Error: ' mysql_error());
}
  
$resul mysql_query("SELECT * FROM `like` WHERE rand = '$rand'") or die (mysql_error()); 
  
$r mysql_fetch_array($resul);
   
header('location: '.$site.'like.php?like='.$r['id']);
  }else{
      
header('location:'.$site);  
      }
ob_flush();
?>
Verificamos lo que hemos escrito en el textarea para acomodarlo en nuestra base de datos.

like.php
Código PHP:
<? include('db_con.php'); ?>
<?
  
if($_GET['like']){
      
$nl $_GET['like'];
      
mysql_connect("$host""$username""$password")or die("cannot connect");
      
mysql_select_db("$db_name")or die("cannot select DB");
      
$re mysql_query("SELECT * FROM `like` WHERE id = '$nl'") or die (mysql_error()); 
      
$s mysql_fetch_array($re);
      
$id $s['id'];
      
$rock $s['like'];
      
$current_time date("Ymdhis"); 
      
$update_view $s['count'] + 1;
      
mysql_query("UPDATE `like` SET count = '$update_view', last_view='$current_time' WHERE id = '$id'")  or die(mysql_error());
      if(
$rock == ""){
          
header('location: index.php');
      }
  }
?>

<meta property="og:title" content="<? echo stripslashes($rock); ?>"/>
        <div class="content">
            <div class="ad">
                <div class="ad_boxr">
                    
                </div>
                    <div class="ad_boxr"></div>
                        <div class="ad_boxr"></div>
            </div>
                    <div class="like_box">
                        <div class="t">y</div>
                            <div class="c">
                                 <p>
                              
                                <? echo stripslashes($s['like']); ?>
                                
                                </p>
                                    
                                </div>
                            </div>
                        <div class="b"></div>
                    </div>
<a href="index.php" class="but"><img src="images/create_button.png" alt="CREAR?" border="0" width="636" height="72" /></a>
                     
                    
                        <div class="bt_box">
                        
                        </div>
                        <div class="hd_bg">
                     <h1><a href="#">Ultimas frases creadas</a></h1>
                </div>
                    <div class="box_bg">
                        <div class="box_con">
                        <?
                        
include('db_con.php');
                        
mysql_connect("$host""$username""$password")or die("cannot connect");
                        
mysql_select_db("$db_name")or die("cannot select DB");
                        
$top3 "SELECT * FROM  `like` ORDER BY  `like`.`id` DESC LIMIT 0 , 9";
                        
$new3 mysql_query($top3) or die(mysql_error()); 
                        while(
$rows3 mysql_fetch_array($new3)){
                        
?>
                            <div style="clear:left;">
                            
                            <a href="<?echo $site;?>like.php?like=<? echo $rows3['id']; ?>"><? echo stripslashes($rows3['like']);?></a>  
                            </div>
                        <?
                        
}
                        
?> 
                        </div>
                        
</body>
</html>
En este archivo luego volcaremos todo lo que se fueron agregando en la base de datos, al igual que pasara en "index.php".

ARCHIVOS DE COMUNICACIÓN A LA BASE DE DATOS:

config.php
Código PHP:
<?
$site 
'http://TuSitioWeb' // Escribir la ruta absoluta del directorio.
?>
db-con.php
Código PHP:
<?
$host
="localhost"// Host name
$username="Tu-Usuario-MYSQL"// Mysql username
$password="Tu-Contrasenia-MYSQL"// Mysql password
$db_name="Nombre-De-BD"// Database name
$tbl_name="like"// Table name
?>
like.sql
Código:
CREATE TABLE IF NOT EXISTS `like` (
  `id` int(11) NOT NULL auto_increment,
  `rand` varchar(244) NOT NULL,
  `like` longtext NOT NULL,
  `count` int(11) NOT NULL,
  `created` varchar(255) NOT NULL,
  `last_view` varchar(255) NOT NULL,
  `youtube` mediumtext NOT NULL,
  `type` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
y con esto ya esta listo (no tiene hoja de estilo xq lo hice asi nomas de mi web (copi y past)
Ahora lo que no me hace es el salto de linea; por mas que lo haga manualmente al salto (presionando ENTER) me lo guarda y me lo devuelve todo seguido Como podría yo acomodar eso??? muchísimas gracias foreros.

NOTA: el trabajo terminado esta en esta URL (mia): http://fraselandia.elrincondetuspps.com.ar/
Archivo ZIP de esta presentacion (sin hojas de estilos): http://fraselandia.elrincondetuspps..../frases_FB.zip

MUCHAS GRACIAS NUEVAMENTE!! y felices fiestas y prospero año nuevo para tod@s
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #2 (permalink)  
Antiguo 21/12/2011, 21:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Salto de linea en php para mysql

Se supone que los saltos de linea capturados en un textarea no son equivalentes con los que se requieren en HTML, para ello existe una función llamada nl2br() que convierte dichos espacios en sus correspondientes.

Pero claro, eso debes usarlo solo al momento de mostrar el texto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/12/2011, 21:58
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Exclamación Respuesta: Salto de linea en php para mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Para ello existe una función llamada nl2br() que convierte dichos espacios en sus correspondientes.

Pero claro, eso debes usarlo solo al momento de mostrar el texto.
mira en el "like.php" tengo una funcion llamada asi:
$re = mysql_query("SELECT * FROM `like` WHERE id = '$nl'") or die (mysql_error());

sacada de esta linea:

Código PHP:
<?
  
if($_GET['like']){
      
$nl $_GET['like']; //cambiaria la variable por la que esta mas abajo?
      
mysql_connect("$host""$username""$password")or die("cannot connect");
      
mysql_select_db("$db_name")or die("cannot select DB");
      
$re mysql_query("SELECT * FROM `like` WHERE id = '$nl'") or die (mysql_error()); //de aca sale la funcion
      
$s mysql_fetch_array($re);
      
$id $s['id'];
      
$rock $s['like'];
      
$current_time date("Ymdhis"); 
      
$update_view $s['count'] + 1;
      
mysql_query("UPDATE `like` SET count = '$update_view', last_view='$current_time' WHERE id = '$id'")  or die(mysql_error());
      if(
$rock == ""){
          
header('location: index.php');
      }
  }
?>
o sea para ser mas preciso seria las funciones estas??
Código PHP:
<?
  
if($_GET['like']){
      
$nl $_GET['like']; //cambiaria la variable nl por nl2br??
      
...
      ...
      
$re mysql_query("SELECT * FROM `like` WHERE id = '$nl'") or die (mysql_error()); //cambiaria entonces de '$nl' por '$nl2br'??
  
}
?>
xq esas son las unicas funciones que mas o menos encontre parecidas
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #4 (permalink)  
Antiguo 22/12/2011, 00:37
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Exclamación Respuesta: Salto de linea en php para mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Para ello existe una función llamada nl2br() que convierte dichos espacios en sus correspondientes.

Pero claro, eso debes usarlo solo al momento de mostrar el texto.
JEJEJE ya lo he encontrado a mi solucion; he modificado las variables "stripslashes" (de los archivos INDEX.PHP y LIKE.PHP)
por la funcion "nl2br"; y ya me funciona lo mas bien; ahora me gustaria hacer una preguntita; como lo hace este foro (poner caritas en el textarea. pero no me salen o sea he sacado el codigo de aca: http://www.disegnocentell.com.ar/notas2.php?id=131 (ejercicio)
http://www.disegnocentell.com.ar/bebecode/example.php (ejemplo)
Estos links me lo paso IsaBelM pero no se como implementarlo con mi formulario xq si bien lleva un config mi formulario (process.php) este lo hace en la misma pagina del formulario.

He intentado meter esa parte de config en mi (process.php) pero no funciona y se me sale todo.

(mañana con mas tiempo te pongo bien los codigos fuentes del de recien (ya es tarde aca en argentina))
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.
  #5 (permalink)  
Antiguo 22/12/2011, 12:33
Avatar de alette666  
Fecha de Ingreso: febrero-2010
Ubicación: En la luna
Mensajes: 277
Antigüedad: 14 años, 3 meses
Puntos: 5
Pregunta Respuesta: Salto de linea en php para mysql

Bueno ya he solucionado el tema de los saltos de linea con la función "nl2br();".
Anoche te comente del bbcode para ponerlo en mi formulario (tal cual lo tiene forosdelweb); pero que pasaba??
Bien, el asunto es que el bbcode (del código que me ha dejado IsaBelM no utiliza base de datos, por el cual solo muestra temporalmente lo que se ingrese en el textarea; lo que yo pretendo es fusionar el bbcode y mi formulario como puedo hacer?
__________________
Y Sócrates dijo...Solo sé que no sé nada.
Entiende la filosofía como una búsqueda colectiva basada en el diálogo.

Etiquetas: frases_facebook, php+bd+mysql, salto_de_linea
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 00:24.