Foros del Web » Programando para Internet » PHP »

escapar consulta de la BD

Estas en el tema de escapar consulta de la BD en el foro de PHP en Foros del Web. hola, nuevamente un saludo, pues miren en esta ocasión tengo un problemilla con unas consultas que hago a mi BD, ingreso código por ejemplo: este ...
  #1 (permalink)  
Antiguo 25/08/2008, 01:00
Avatar de Vane23  
Fecha de Ingreso: julio-2008
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 2
Pregunta escapar consulta de la BD

hola, nuevamente un saludo, pues miren en esta ocasión tengo un problemilla con unas consultas que hago a mi BD, ingreso código por ejemplo: este es "un ejemplo", he checado y en mi bd lo guarda bien pro cuando traigo mi información, sólo me muestra: este es

entonces no se si alguien podría orientarme un poco por dónde buscar o qué podría hacer con php para solucionar eso

PD. utilizo mysql y esto sólo me pasa con tipos varchar, con los text funciona bien

gracias
  #2 (permalink)  
Antiguo 25/08/2008, 02:05
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 15 años, 5 meses
Puntos: 71
Respuesta: escapar consulta de la BD

Cita:
Iniciado por Vane23 Ver Mensaje
hola, nuevamente un saludo, pues miren en esta ocasión tengo un problemilla con unas consultas que hago a mi BD, ingreso código por ejemplo: este es "un ejemplo", he checado y en mi bd lo guarda bien pro cuando traigo mi información, sólo me muestra: este es

entonces no se si alguien podría orientarme un poco por dónde buscar o qué podría hacer con php para solucionar eso

PD. utilizo mysql y esto sólo me pasa con tipos varchar, con los text funciona bien

gracias
pon el codigo que utilizas, pero parece un problema de comillas dobles, mirate la funcion stripslashes();
  #3 (permalink)  
Antiguo 26/08/2008, 00:03
Avatar de Vane23  
Fecha de Ingreso: julio-2008
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: escapar consulta de la BD

Hola DooBie, este es mi código, viene de una página donde selecciono un registro para modificar y aquí muestro la info de ese registro

lo del textarea es tipo text en my BD y lo del campo de texto es varchar, y es precisamente en este último donde no me funciona, donde me corta el resultado de la consulta hasta la primera comilla que encuentra

<?php
$id=$_POST['coment'];
$link=Conectarse();
$datos = mysql_query("SELECT * FROM comentarios WHERE id='$id'",$link);
$row = mysql_fetch_array($datos);
echo '<textarea id="coment" name="coment" cols="40" rows="10">'. utf8_decode($row['comentario']).'</textarea> &nbsp;';
echo '<input type="text" id="usr" name="usr" size="40" value="'. utf8_decode($row['usr']).'" />';
mysql_free_result($datos);
mysql_close();
?>

gracias, voy a checar la función que me dices salu2
  #4 (permalink)  
Antiguo 26/08/2008, 03:27
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 15 años, 5 meses
Puntos: 71
Respuesta: escapar consulta de la BD

Cita:
Iniciado por Vane23 Ver Mensaje
Hola DooBie, este es mi código, viene de una página donde selecciono un registro para modificar y aquí muestro la info de ese registro

lo del textarea es tipo text en my BD y lo del campo de texto es varchar, y es precisamente en este último donde no me funciona, donde me corta el resultado de la consulta hasta la primera comilla que encuentra

<?php
$id=$_POST['coment'];
$link=Conectarse();
$datos = mysql_query("SELECT * FROM comentarios WHERE id='$id'",$link);
$row = mysql_fetch_array($datos);
echo '<textarea id="coment" name="coment" cols="40" rows="10">'. utf8_decode($row['comentario']).'</textarea> &nbsp;';
echo '<input type="text" id="usr" name="usr" size="40" value="'. utf8_decode($row['usr']).'" />';
mysql_free_result($datos);
mysql_close();
?>

gracias, voy a checar la función que me dices salu2
prueba esto:
Código PHP:
<?php
    $id
=$_POST['coment'];
    
$link=Conectarse();
      
$datos mysql_query("SELECT * FROM comentarios WHERE id='$id'",$link);                              
      
$row mysql_fetch_array($datos);
        echo 
"<textarea id=\"coment\" name=\"coment\" cols=\"40\" rows=\"10\">".utf8_decode($row['comentario'])."</textarea>&nbsp;";
        echo 
"<input type=\"text\" id=\"usr\" name=\"usr\" size=\"40\" value=\"".utf8_decode($row['usr'])."\" />";
    
mysql_free_result($datos);
    
mysql_close(); 
?>
  #5 (permalink)  
Antiguo 26/08/2008, 03:40
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 11 años, 6 meses
Puntos: 7
Respuesta: escapar consulta de la BD

¿has comprobado mostrar la variable por sí sola?

echo utf8_decode($row['usr']);
  #6 (permalink)  
Antiguo 30/08/2008, 00:56
Avatar de Vane23  
Fecha de Ingreso: julio-2008
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: escapar consulta de la BD

Hola chicos, disculpen que no haya aparecido por aquí pero se me juntaron algunas cosas de la escuela, espero todavía puedan ver mi mensaje y gracias por su ayuda :)

pues les cuento que chequé lo que me dices DooBie, pero no me funciona, hace lo mismo que el mío, o sea corta hasta la primera comilla, y sí ya había hecho lo que ilie me dice y lo muestra sin problema, por lo que sí es problema de comillas como me dices DooBie pero no se cómo solucionarlo, estuve checando también e hice esto:

echo '<input type=\"text\" id=\"usr\" name=\"usr\" size=\"40\" value=\"'.utf8_decode($row['usr']).'\" />';

y ahora me sale bien el contenido pro con una diagonal antes, por ej:

\este es mi "mensaje"

alguna idea?

gracias, salu2
  #7 (permalink)  
Antiguo 30/08/2008, 01:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 7 meses
Puntos: 416
Respuesta: escapar consulta de la BD

Yo digo que antes de meter el valor en la base de datos le hagas un htmlentities()
http://www.php.net/manual/es/function.htmlentities.php
Y un html_entity_decode() antes de mostrar el valor luego de sacarlo de la DB.
http://www.php.net/manual/es/functio...ity-decode.php
  #8 (permalink)  
Antiguo 30/08/2008, 10:34
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 11 años, 6 meses
Puntos: 105
Respuesta: escapar consulta de la BD

Sabes, solo puedo aportar que el error tambien puede estar al momento de guardar ese valor en la base de datos.... como lo has guardado... la sintaxis de rrepente hace esos conflictos.... sinos porporcionaras tu codigo insert, seria mas eficiente para poder ayudarte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #9 (permalink)  
Antiguo 30/08/2008, 11:39
Avatar de Vane23  
Fecha de Ingreso: julio-2008
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: escapar consulta de la BD

hola, pues miren en la BD está bien guardado, incluso ya mostré el valor con un echo y sí me trae lo que es, el problema es cuando quiero ponerlo en algún campo de texto, ya DooBie me decia que parecía ser un problema de comillas dobles. Este es mi código para insertar un registro :)

$coment= strip_tags(utf8_encode($_POST['coment']));
$usr= strip_tags(utf8_encode($_POST['usr']));
$liga=Conectarse();
$datos = mysql_query("SELECT comentario FROM comentarios WHERE comentario='$coment'",$liga);
$numFilas=mysql_num_rows($datos);
if($numFilas == 0)
{
mysql_query("INSERT INTO comentarios(comentario,fecha,usr) values ('$coment',NOW(),'$usr')",$liga);
mysql_free_result($datos);
mysql_close();
}

gracias chicos, cualquier sugerencia o comentario se los agradeceré mucho

salu2
  #10 (permalink)  
Antiguo 30/08/2008, 12:21
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 11 años, 6 meses
Puntos: 105
Respuesta: escapar consulta de la BD

por que no lo haces mas practico y haces que el campo textarea que ingrese sea validado y que ingrese solo letras.... algo asi
Código HTML:
<textarea name="textarea" onKeyPress="return sololetras(event)" ></textarea>

<script>
//te paso las dos funciones por si te sirven en un futuro
var nav4 = window.Event ? true : false;
function solonumeros(evt){
	// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57 
	var key = nav4 ? evt.which : evt.keyCode; 
	return (key <= 13 || key == 46 || (key >= 48 && key <= 57));
}	

function sololetras(oEvent) {
	var iKeyCode;
    if(document.all){
		iKeyCode = oEvent.keyCode;
    }else{
      iKeyCode = oEvent.which;
    }
    if(((iKeyCode > 47) && (iKeyCode < 58))){
		return false;
    }
}
</script> 
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #11 (permalink)  
Antiguo 30/08/2008, 14:10
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 15 años, 5 meses
Puntos: 71
Respuesta: escapar consulta de la BD

Cita:
Iniciado por Vane23 Ver Mensaje
hola, pues miren en la BD está bien guardado, incluso ya mostré el valor con un echo y sí me trae lo que es, el problema es cuando quiero ponerlo en algún campo de texto, ya DooBie me decia que parecía ser un problema de comillas dobles. Este es mi código para insertar un registro :)

$coment= strip_tags(utf8_encode($_POST['coment']));
$usr= strip_tags(utf8_encode($_POST['usr']));
$liga=Conectarse();
$datos = mysql_query("SELECT comentario FROM comentarios WHERE comentario='$coment'",$liga);
$numFilas=mysql_num_rows($datos);
if($numFilas == 0)
{
mysql_query("INSERT INTO comentarios(comentario,fecha,usr) values ('$coment',NOW(),'$usr')",$liga);
mysql_free_result($datos);
mysql_close();
}

gracias chicos, cualquier sugerencia o comentario se los agradeceré mucho

salu2
cambia esta linea:
Código PHP:
mysql_query("INSERT INTO comentarios(comentario,fecha,usr) values ('$coment',NOW(),'$usr')",$liga); 
por esta:
Código PHP:
mysql_query("INSERT INTO comentarios(comentario,fecha,usr) values ('".stripslashes($coment)."',NOW(),'$usr')",$liga); 
  #12 (permalink)  
Antiguo 30/08/2008, 16:50
Avatar de Vane23  
Fecha de Ingreso: julio-2008
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: escapar consulta de la BD

hola, he probado todo lo que me dicen, pero nadamás nada, no me da resultado, he probado eso que me dices DooBie pro obtengo el mismo resultado, también probé utilizando addslashes() cuando inserto y stripslashes() cuando lo obtengo pero nada, como les decía, hasta ahora el problema no es lo que se guarda en la BD porque lo ha hecho bien, tmabien chequé con un echo para mostrar mi resultado y si utilizo addslashes() y stripslashes() como me decías Doobie, sí lo hace bien!!, entoncs el problema sigue siendo el mismo, el problema es cuando lo quiero poner en un campo de texto

esto es lo último que intenté

en el insert:
mysql_query("INSERT INTO comentarios(comentario,fecha,usr) values ('".addslashes($coment)."',NOW(),'".addslashes($us r)."')",$liga);

cuando lo obtengo:
echo "<input type=\"text\" id=\"usr\" name=\"usr\" size=\"40\" value=\"".stripslashes(utf8_decode($row['usr']))."\" /><br /><br />";
  #13 (permalink)  
Antiguo 30/08/2008, 16:53
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 15 años, 5 meses
Puntos: 71
Respuesta: escapar consulta de la BD

Cita:
Iniciado por Vane23 Ver Mensaje
hola, he probado todo lo que me dicen, pero nadamás nada, no me da resultado, he probado eso que me dices DooBie pro obtengo el mismo resultado, también probé utilizando addslashes() cuando inserto y stripslashes() cuando lo obtengo pero nada, como les decía, hasta ahora el problema no es lo que se guarda en la BD porque lo ha hecho bien, tmabien chequé con un echo para mostrar mi resultado y si utilizo addslashes() y stripslashes() como me decías Doobie, sí lo hace bien!!, entoncs el problema sigue siendo el mismo, el problema es cuando lo quiero poner en un campo de texto

esto es lo último que intenté

en el insert:
mysql_query("INSERT INTO comentarios(comentario,fecha,usr) values ('".addslashes($coment)."',NOW(),'".addslashes($us r)."')",$liga);

cuando lo obtengo:
echo "<input type=\"text\" id=\"usr\" name=\"usr\" size=\"40\" value=\"".stripslashes(utf8_decode($row['usr']))."\" /><br /><br />";
debes hacerlo al reves, cuando insertas, usa stripslashes, y cuando lo muestres addslashes, prueba de esta forma.
  #14 (permalink)  
Antiguo 30/08/2008, 17:09
Avatar de Vane23  
Fecha de Ingreso: julio-2008
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: escapar consulta de la BD

hola DooBie, ya lo intenté pero ahora me sale el resultado con las diagonales, así:

con un echo:
este es mi me\"nsa\"je

en el campo de texto:
este es mi me\
  #15 (permalink)  
Antiguo 31/08/2008, 06:41
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 15 años, 5 meses
Puntos: 71
Respuesta: escapar consulta de la BD

Cita:
Iniciado por Vane23 Ver Mensaje
hola DooBie, ya lo intenté pero ahora me sale el resultado con las diagonales, así:

con un echo:
este es mi me\"nsa\"je

en el campo de texto:
este es mi me\
es decir, que si haces un un echo con addslashes, te sale lo de arriba, y en el textarea, te sale solo la \

pues bien, no hagas un addslashes, solo haces el stripslashes cuando insertes, cuando muestres los datos, no hagas el addslashes

cuantanos a ver que tal va
  #16 (permalink)  
Antiguo 31/08/2008, 13:18
Avatar de Vane23  
Fecha de Ingreso: julio-2008
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: escapar consulta de la BD

Sí, ya he checado pero no me funciona, está como cuando empecé

con un echo:
este es mi me"nsa"je

en el campo de texto:
este es mi me

oh si, y debo decir que en el textarea no hay problema siempre me ha funcionado bien
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 22:39.