Foros del Web » Programando para Internet » PHP »

Leer/Insertar comillas campo mysql

Estas en el tema de Leer/Insertar comillas campo mysql en el foro de PHP en Foros del Web. Buenas Tengo un formulario en php el cual inserta enlaces en una tabla mysql. Dicha tabla tiene un campo titulo_enlace el cual puede contener texto ...
  #1 (permalink)  
Antiguo 12/01/2010, 19:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Leer/Insertar comillas campo mysql

Buenas

Tengo un formulario en php el cual inserta enlaces en una tabla mysql.

Dicha tabla tiene un campo titulo_enlace el cual puede contener texto del tipo

Código:
esto seria el "titulo" del 'enlace'
con " o '.El problema es que a la hora de leer esos datos del campo mysql,solo lee hasta las " '.El resto no lo lee.
  #2 (permalink)  
Antiguo 12/01/2010, 19:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer/Insertar comillas campo mysql

usa htmlspecialchars() sobre tu variable para imprimir el valor correctamente...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/01/2010, 20:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Usando nl2br($titulo_enlace) tambien me funciono

Gracias por tu ayuda :)

EDITO:

Al leer el campo de la tabla para mostrarlo en un formulario

Código PHP:
<input type='text' name='titulo_not' value='".nl2br($row[titulo_not])."'
Se corta donde la ',osea solo muestra hasta la '

Última edición por GatorV; 12/01/2010 a las 23:15
  #4 (permalink)  
Antiguo 12/01/2010, 21:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer/Insertar comillas campo mysql

sabes la diferencia entre ambas funciones o solo andas experimentando??

por favor, lee el manual y comprende que ambas funciones son distintas... yo te sugiero htmlspecialchars() porque sirve para lo que necesitas... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 13/01/2010, 03:59
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Código PHP:
<p>T&#237;tulo del Enlace<br/>
<input type='text' name='titulo_enlace' size='50' value='".htmlspecialchars($row[titulo_enlace])."'/></p
Sigue cortandose hasta las comillas.

En la base de datos se guarda bien,pero no lo lee correctamente.

El campo en la BD es del tipo VARCHAR.
  #6 (permalink)  
Antiguo 13/01/2010, 14: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: Leer/Insertar comillas campo mysql

a ver... para empezar los atributos deben ir siempre con comillas dobles... no sencillas...
Código HTML:
<foo bar="<?php echo htmlspecialchars($candy); ?>"/> 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/01/2010, 14:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
a ver... para empezar los atributos deben ir siempre con comillas dobles... no sencillas...
Código HTML:
<foo bar="<?php echo htmlspecialchars($candy); ?>"/> 
Los tengo con simples porque estan dentro de un print.

Código PHP:
$id_enlace=$_GET[id];
//hacemos las consultas
$consulta="SELECT id_enlace, titulo_enlace, url_enlace, img_enlace, texto_enlace FROM enlaces WHERE id_enlace='$id_enlace'";
$result=mysql_query($consulta,$db);
//Una vez seleccionados los registros los mostramos para su edición
while($row=mysql_fetch_array($result)) {            
print 
"<form action='editar-enlace.php' method='post' enctype='multipart/form-data'>
<input type='hidden' name='id_enlace' value='"
.$row[id_enlace]."'><br>
<p>Icono Enlace<br/><br/>
<img border=2 height=88 width=80 src='"
.$row[img_enlace]."' alt='".$row[img_enlace]."'/><br/><br/>
<input type='file' name='archivo' value='<img src='"
.$row[img_enlace]."' alt='".$row[img_enlace]."/>'/></p>
<p>Título del Enlace<br/>
<input type='text' name='titulo_enlace' size='50' value='"
.$row[titulo_enlace]."'/></p>
<p>URL del Enlace<br/>
<input type='text' name='url_enlace' size='50' value='"
.$row[url_enlace]."'/></p>
<p>Texto del Enlace<br/>
<textarea name='texto_enlace' rows='10' cols='50'>"
.$row[texto_enlace]."</textarea></p>
<p><input type='submit' name='editar' value='Editar'/></p>
</form>"
;

Y el problema es que $row[titulo_enlace] se imprime pero solo hasta donde encuentre una ' o "
  #8 (permalink)  
Antiguo 13/01/2010, 15:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer/Insertar comillas campo mysql

y porque no has usado htmlspecialchars()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 13/01/2010, 15:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
y porque no has usado htmlspecialchars()
Vale,pero donde lo uso exactamente?

1- A la hora de introducir los datos en la base desde un formulario?

2- A la hora de leer los datos de la base de datos?

3- A la hora de imprimir,los datos leidos de la base de datos, en los campos del formulario? (Value="el valor del campo en la base de datos")

Saludos y gracias por la ayuda
  #10 (permalink)  
Antiguo 13/01/2010, 15:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer/Insertar comillas campo mysql

creo que no te entiendes ni tu solo...

1.- si dices que al insertar todo esta bien en la BD, obviamente ahí no...
2.- si tampoco tienes problemas al seleccionar los datos, pues tampoco aquí...
3.- si el problema dices tenerlo solo al momento de mostrar los valores en el value...

por favor piensa, ¿cual sería la respuesta mas lógica??

además todo el tiempo he hablado de los atributos... si, value es un atributo... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 13/01/2010, 15:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
creo que no te entiendes ni tu solo...

1.- si dices que al insertar todo esta bien en la BD, obviamente ahí no...
2.- si tampoco tienes problemas al seleccionar los datos, pues tampoco aquí...
3.- si el problema dices tenerlo solo al momento de mostrar los valores en el value...

por favor piensa, ¿cual sería la respuesta mas lógica??

además todo el tiempo he hablado de los atributos... si, value es un atributo... (:
Es que al intentar insertar en la BD una noticia con un titulo con " " o ' ' y/o un texto con " " o ' ' tambien me da error.
  #12 (permalink)  
Antiguo 13/01/2010, 16:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por okawa Ver Mensaje
Es que al intentar insertar en la BD una noticia con un titulo con " " o ' ' y/o un texto con " " o ' ' tambien me da error.
bien, entonces intenta usar htmlspecialchars() sobre tus variables antes de insertarlas en la BD
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 13/01/2010, 16:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
bien, entonces intenta usar htmlspecialchars() sobre tus variables antes de insertarlas en la BD
Me lanza el siguiente codigo:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Anellament Marjal del Moro', 'Blog de este grupo de anillamiento en el que se va' at line 1

Recogida de datos

Código PHP:
$titulo_enlace=$_REQUEST['titulo_enlace'];
$texto_enlace=$_REQUEST['texto_enlace'];
$titulo_enlace=htmlspecialchars($titulo_enlace);
$texto_enlace=htmlspecialchars($texto_enlace);
$archivo=$_FILES["archivo"]['name'];
$prefijo=substr(md5(uniqid(rand())),0,6);
$destino="../imagenes/".$prefijo."_".$archivo
INSERTAMOS EN LA BD

Código PHP:
$insertar=mysql_query("INSERT INTO enlaces (titulo_enlace, texto_enlace, img_enlace) VALUES ('$titulo_enlace', '$texto_enlace', '$destino')",$db) or die(mysql_error()); 
  #14 (permalink)  
Antiguo 13/01/2010, 17:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer/Insertar comillas campo mysql

puedes imprimir tu consulta antes de ejecutarla??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 13/01/2010, 17:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
puedes imprimir tu consulta antes de ejecutarla??
Código PHP:
$consulta="INSERT INTO enlaces (titulo_enlace, texto_enlace, img_enlace, url_enlace) VALUES ('$titulo_enlace', '$texto_enlace', '$destino', $url_enlace)";
print 
"$consulta"
Esto me imprime:

INSERT INTO enlaces (titulo_enlace, texto_enlace, img_enlace, url_enlace) VALUES (''a' "as"', 'sda'sad'asdsda', '../imagenes/873784_grupomarjalmoro.jpg', http://)
  #16 (permalink)  
Antiguo 13/01/2010, 17:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Leer/Insertar comillas campo mysql

usa addslashes()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 13/01/2010, 18:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
usa addslashes()
Ya he conseguido poder introducir los datos en la BD con addslashes()

Ahora viene a la hora de imprimirlos en el campo del formulario:

Código PHP:
<p>Título del Enlace<br/>
<
input type='text' name='titulo_enlace' size='50' value='".$row[titulo_enlace]."'/></p
El campo de la BD tiene el siguiente valor:

Grup d'Anellament Marjal del Moro.

He probado con addslashes() y con htmlspecialchars() usando como variable de las funciones $row[titulo_enlace]

Pero nada de nada :(
  #18 (permalink)  
Antiguo 13/01/2010, 19:06
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Leer/Insertar comillas campo mysql

No se trata de probar y probar todo lo que se nos dice buscando la ¡combinación mágica! que nos de el resultado esperado.

El "problema" (digamos mejor, la confusión) es que htmlspecialchars() por defecto solo convierte las comillas dobles mientras que las simples las deja intactas. Para solucionar tu problema opta por:

1. Encerrar los valores de los atributos de tus tags HTML con comillas dobles (más recomendable)

ó

2. Usar htmlspecialchars() pasándole como segundo parámetro la constante ENT_QUOTES para que así convierta también las comillas simples.

Ahora, para el error al insertar en la base de datos. o más recomendable es usar mysql_real_escape_string() que cumple la misma función que addslashes (agregar barras) pero está especializada y orientada a prevenir los SQL Injection. Desde mi punto de vista, los datos en una base de datos deben ser una copia fiel de lo que se quizo guardar originalmente, es decir, no debería convertirse a entidades html (htmlspecialchars()) ni usar otras funciones afines, como nl2br(), que alteran el "texto nativo". Estas funciones deberían ser solo aplicadas al momento de mostrar los datos.

Y por ultimo, es un estándar HTML que todo texto que cumpla la función de valor de un atibuto en un tag debe estar codificada en sus respectivas entidades html. Es decir, siempre debes aplicar a tu texto htmlspecialchars() o htmlentities() si lo piensas usar, por ejemplo, en el value de un input.

  #19 (permalink)  
Antiguo 13/01/2010, 19:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Okram me has ayudado mucho y a entender lo que estoy haciendo

Te comento:

1- Insertar texto con " " o ' ' en la BD --> OK

Código PHP:
$titulo_enlace=$_REQUEST['titulo_enlace'];
$texto_enlace=$_REQUEST['texto_enlace'];

$consulta="INSERT INTO enlaces (titulo_enlace, texto_enlace) VALUES ('$titulo_enlace', '$texto_enlace')";
$insertar=mysql_query($consulta,$db) or die(mysql_error()); 
2- Mostrar el texto con " " o ' ' en la web --> OK

Código PHP:
$consulta="SELECT * FROM enlaces ORDER BY id_enlace ASC";
$result=mysql_query($consulta,$db);

print 
"
<table>
<tbody>"
;
while(
$row=mysql_fetch_array($result)) {

print 
"
<tr>
<td>
<a href='"
.$row[url_enlace]."'><img style='width: 80px; height: 88px;' src='".$row[img_enlace]."' alt='".$row[img_enlace]."'/></a>
</td>
<td>
<a href='"
.$row[url_enlace]."'><b>".htmlspecialchars($row[titulo_enlace], ENT_QUOTES)."</a> - </b>".htmlspecialchars($row[texto_enlace], ENT_QUOTES)."
</td>
</tr>
"
;
}
print 
"
</table>
</tbody>
"

3 - Editar texto con " " o ' ' imprimiendolo desde la BD en un campo de un formulario --> OK

Código PHP:
while($row=mysql_fetch_array($result)) {            
print 
"<form action='editar-enlace.php' method='post' enctype='multipart/form-data'>
<p>Título del Enlace<br/>
<input type='text' name='titulo_enlace' size='50' value='"
.htmlspecialchars($row[titulo_enlace], ENT_QUOTES)."'/></p>
<p>Texto del Enlace<br/>
<textarea name='texto_enlace' rows='10' cols='50'>"
.htmlspecialchars($row[texto_enlace], ENT_QUOTES)."</textarea></p>
<p><input type='submit' name='editar' value='Editar'/></p>
</form>"
;


El problema es que los SALTO DE LINEA no me los muestra en el PUNTO 2 pero si los MUESTRA dentro del TEXTAREA en el PUNTO 3.

En el campo de la BD tambien hay los saltos de linea limpios (sin <br > ni caracteres de escape ni nada).

Como puedo hacer para que me muestre en la web tambien los saltos de linea?

Estoy siempre trabajando con codigo limpio.Es decir las comillas NO las guarda NI las imprime de la forma: \' o \" si no que lo hace " o '.

Gracias de nuevo :)
  #20 (permalink)  
Antiguo 14/01/2010, 08:11
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Leer/Insertar comillas campo mysql

php+mostrar saltos de linea
  #21 (permalink)  
Antiguo 14/01/2010, 08:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Cita:
Iniciado por okram Ver Mensaje
Se que es con la funcion nl2br().

Pero podria implementar el codigo de la siguiente forma?

Código PHP:
funcioncomillas(funcionsaltolinea($variable)); 
  #22 (permalink)  
Antiguo 14/01/2010, 09:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Leer/Insertar comillas campo mysql

Claro, tu puedes unir cuantas funciones necesites.

Saludos.
  #23 (permalink)  
Antiguo 14/01/2010, 14:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 69
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer/Insertar comillas campo mysql

Ya esta claro :)

Gracias

Etiquetas: comillas, mysql, campos
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 16:03.