Foros del Web » Programando para Internet » PHP »

eliminar comillas simples

Estas en el tema de eliminar comillas simples en el foro de PHP en Foros del Web. Hola amigos: Estoy creando una página con sqlite y php y mi problema es el siguiente. $buscar = "'"; $reemplazar = "''"; $notifin= str_replace($buscar,$reemplazar,$noticia_sin_es); con ...
  #1 (permalink)  
Antiguo 14/03/2013, 09:02
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
eliminar comillas simples

Hola amigos:
Estoy creando una página con sqlite y php y mi problema es el siguiente.

$buscar = "'";
$reemplazar = "''";
$notifin= str_replace($buscar,$reemplazar,$noticia_sin_es);

con esto elimino las comillas , después hago un insert
INSERT INTO noticias VALUES
('$utc','$anio','$mes','$dia','$hora','$minuto','$ segundo','$usuario','$contrasena','$titulo_sin','$ notifin','$fichero','$comentario_sin');
hasta aquí bien me lo inserta en la base de datos y me lo muestra ok
En una segunda página lo muestro
echo"<tr><td>".$fila['titulo']."</td><td>".$fila['noticia'].
sin problemas, pero cuando lo envio a formulario actualizar
<a href='noticiaformularioactualizar.php?titulo=".$fi la['titulo']."&noticia=".$fila['noticia']."'>Actualizar</a></td></tr>";
me detecta que fila [noticia ]no es igual a noticia por ejemplo
o'brian no es igual a obrian entonces no puedo pasarlo al segundo form para actualizarlo o eliminarlo.
Por favor estoy colgado en este paso desde hace 1 mes y no se por donde salir
  #2 (permalink)  
Antiguo 14/03/2013, 10:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: eliminar comillas simples

Es mala idea pasar cadenas de texto como parámetros, cuando lo ideal es siempre usar el ID del registro en cuestión.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/03/2013, 11:05
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

Había pensado leerlo pasarlo todo por la utc , pués tengo la variable creada y no habrán casi editores y no van a publicar 2 en el mismo segundo unix , ¿que opinas?
  #4 (permalink)  
Antiguo 15/03/2013, 11:13
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

Cita:
Iniciado por pateketrueke Ver Mensaje
Es mala idea pasar cadenas de texto como parámetros, cuando lo ideal es siempre usar el ID del registro en cuestión.
¿Como debería hacerlo?,tengo un formulário que está noticia , titulo y imagen .
Entonces tengo que pasarlo como
<form action='noticiacrearnoticia.php' enctype='multipart/form-data' method='POST'>
<td align><input type='text' name='titulo'></td>
<td colspan='2' width='100%'><textarea name='noticia' id='textarea' cols='90' rows='10'></textarea></td>
<td><input name='fichero' type='file' /></td>
<td><input name='comentario' type='text' /></td></tr>
<tr><td>
para poder enviar al mismo tiempo una imagen.
Por favor te agradecería mucho si no hay algo bien me lo dijeras.
O cualquier mejora.
  #5 (permalink)  
Antiguo 15/03/2013, 11:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: eliminar comillas simples

actualizar.php?id=99 donde 99 es el ID de la noticia en cuestión.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 15/03/2013, 11:38
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

Cita:
Iniciado por pateketrueke Ver Mensaje
actualizar.php?id=99 donde 99 es el ID de la noticia en cuestión.
//Esto es la parte que lleva a 2 archivos uno que los elimina y el otro que lleva a acualizar y los modifica

echo"<tr><td>".$fila['titulo']."</td><td>".$fila['noticia'].
"</td><td>
<a href='noticiaeliminar.php?titulo=".$fila['titulo']."&noticia=".$fila['noticia']."'>Eliminar</a></</td><td>
<a href='noticiaformularioactualizar.php?titulo=".$fi la['titulo']."&noticia=".$fila['noticia']."'>Actualizar</a></td></tr>";
y no puse id los valores de tabla son:
CREATE TABLE noticias(
utc int,
anio int,
mes int,
dia int,
hora int,
minuto int,
segundo int,
usuario char (40)NOT NULL,
contrasena char (40)NOT NULL,
titulo char (200),
noticia char (5000),
ruta_fichero CHAR(255),
comentario CHAR(255)

);
SQL;
//ruta fichero es la inagen
espero hacerme entender gracias
  #7 (permalink)  
Antiguo 15/03/2013, 12:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: eliminar comillas simples

Pésimo diseño de base de datos entonces, las claves primaria no son un lujo, son una necesidad.

Ahora estás pariendo chayotes porque no puedes acceder un valor por un valor complejo, como lo es una cadena de texto con caracteres especiales.

Para eso es que sirve el ID, entre otras cosas, mal ahí de tu parte.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 16/03/2013, 08:30
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

lo se pero como clave he puesto el utc y ya me valia o no
  #9 (permalink)  
Antiguo 16/03/2013, 08:35
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 2 meses
Puntos: 175
Respuesta: eliminar comillas simples

a lo que se refiere con ID no es que deba llamarse ID, sino que sea una clave unica... eso se logra con que el campo destinado para eso sea la PRIMARY KEY y tenga un parámetro AUTO_INCREMENT como mínimo, tener tablas relacionadas con sus respectivo FOREING_KEY... será trabajoso, pero después harás lo que quieras con consultas solamente sin necesidad de encontrar atajos y demás... como ya lo tienes medio enfermo y defectuoso a tu estructura de datos, ayudarte es posible, pero sería igual a alimentar el cáncer que poco a poco hará metástasis en más articulos y demás...

No tomes a mal estas críticas, no lo hacemos por ofender a nadie, si para que se pueda aprender del error...=D
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #10 (permalink)  
Antiguo 16/03/2013, 08:42
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

lo se pero como clave he puesto el utc y ya me valia

aquí añado un registro y sin problemas o'brian ej me lo marca como o'brian ej

//me lo elimina ok porque no vas aponer 2 noticias el mismo usuario y segundo unix
<a href='noticiaeliminar.php?utc=".$fila['utc']."&usuario=".$fila['usuario'] ."'>Eliminar</a></</td><td>

//el problema es que o'br¡an me lo pasa como o y no me pasa por get el o'brian pues cuando llega a la comilla se corta
<a href='noticiaformularioactualizar.php?titulo=".$fi la['titulo']."&noticia=".$fila['noticia']."'>Actualizar</a></td></tr>";

//añadir un registro
echo"

<tr>
<form action='noticiacrearnoticia.php' enctype='multipart/form-data' method='POST'>
<td align><input type='text' name='titulo'></td>
<td colspan='2' width='100%'><textarea name='noticia' id='textarea' cols='90' rows='10'></textarea></td>
<td><input name='fichero' type='file' /></td>
<td><input name='comentario' type='text' /></td></tr>
<tr><td>

<td><input type='submit'></td><td></td>
</tr>
";

echo"</table>";

//cerramos la conexion-------------------------------------
sqlite_close($conexion);
  #11 (permalink)  
Antiguo 16/03/2013, 08:47
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 2 meses
Puntos: 175
Respuesta: eliminar comillas simples

Estoy leyendo todo el hilo, y bueno, entre tanto sermón no lo comprendo bien... a ver..

quieres cargar O'BRIAN pero como te lo guarda en la BD? o MAÑANA y como te carga la Ñ?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #12 (permalink)  
Antiguo 16/03/2013, 08:51
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

bien es la comilla la que no me va y siento el sermon pero no se explicarme mejor , aunque prometo intentarlo.
la ñ si
lo cargo a través de formulario
  #13 (permalink)  
Antiguo 16/03/2013, 08:55
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

me lo muestra bien pero despés si lo intento modificar pasandolo por get a un segundo formulario no me pasa las comillas simples
  #14 (permalink)  
Antiguo 16/03/2013, 09:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: eliminar comillas simples

¿Es necesario pasar el nombre?

¿Para qué?

Al pasar la clave primaria puedes hacer una consulta y recuperar ese valor directamente, lo que no entiendo es la necesidad de tener que pasar el nombre.

Al pasar la clave puedes eliminar directamente sin tener que usar al nombre.

Entonces, ¿para que perder tiempo pasando y recuperando el nombre?

No le veo caso, no le veo sentido, es una perdida total de tiempo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 16/03/2013, 09:04
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 2 meses
Puntos: 175
Respuesta: eliminar comillas simples

POR GET??? WHY? lo que modificas pasalo por POST... el GET solo sirve para el parametro de que cosa debes modificar... PATEKE tiene mucha razon...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #16 (permalink)  
Antiguo 16/03/2013, 09:34
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

envio una noticia , por ejemplo hoy hemos ido de excursión , entonces le digo enviamelo por get a formulario entonces me sale en un segundo formulario con la noticia que con update la modifico y la llevo otra vez a la noticia principal, sería como cuando en esta página"foro del web" pones el editar
pero sin que me funcione cuando hay comillas''
sin comillas todo ok
  #17 (permalink)  
Antiguo 16/03/2013, 09:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: eliminar comillas simples

A ver, ¿en cuantos sitios has visto que pasen los valores a editar por GET?

Si nadie lo hace es porque es mala idea, ineficiente y una perdida de tiempo.

Todos, los que sabemos trabajar en Web, sabemos que no es necesario tanto quilombo.

Únicamente usamos el ID (o clave primaria, no importa el nombre) y usamos dicho valor para obtener los valores aeditar desde la BD, cosa sencilla.

¿Qué parte es la que no entiendes o no quieres entender?

Pero bueno, en todo caso si necesitas pasar dichos valores sin que pasa nada mal debes usar urlencode() y quedaría listo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 16/03/2013, 21:47
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

Haber siento no tener ni por asomo vuestros conocimientos , ni me explico bien pués me cuesta aveces entender php , se que no estoy creando la mejor web del mundo , pero estoy aprendiendo por cuenta propia , la única ayuda que tengo sois vosotros, admito críticas,pués me ayudan pero me parece que no me explico bien del todo.
Tengo todo ok
pero cuando intento esto si la noticia que la tengo creada con
$str = sqlite_escape_string($noticia_sin_es);
para escapar de las comillas, en cuando llega a una comilla no me lo envia
<a href='voluntarisformularioactualizar.php?titulo=". $fila['titulo']."&noticia=".$fila['noticia']."'>Actualizar</a></td></tr>";

Plis paciencia , que no es facil sin profes solo con libros y pocos tutos
  #19 (permalink)  
Antiguo 16/03/2013, 22:08
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: eliminar comillas simples

@albert2, vamos por partes, para ver si podemos entendernos.

el campo utc que tenes en un tabla, y que vos decis que usas como id, con que valor lo llenas? es único? con único me refiero a que no se repite.

Contestame eso y seguimos avanzando.
  #20 (permalink)  
Antiguo 16/03/2013, 22:25
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

Vale ese valor es el tiempo unix en un mismo segundo no puedes publicar 2 cosas a la vez , entonces se puede decir que si que es único
y publico una noticia y me sale bién el único problema es que si quiero enviarlo al formactualizar ,donde va la noticia y le haces un update me la envia hasta que llega a una comilla y eso son muchas veces, por ej si le pones o'brian te envia o y se para, pero me lo ha creado bien lo tengo mostrado en la página, pero no lo se enviar a la del formulario modificación al completo.
Gracias por estar aquí

Última edición por albert2; 16/03/2013 a las 22:35
  #21 (permalink)  
Antiguo 16/03/2013, 22:41
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: eliminar comillas simples

Cita:
Iniciado por albert2 Ver Mensaje
Vale ese valor es el tiempo unix en un mismo segundo no puedes publicar 2 cosas a la vez , entonces se puede decir que si que es único
Muy bien, no creas que es único, aunque poco probable, puede ocurrir que dos usuarios ingresen registros exactamente en el mismo tiempo. La posibilidad es pequeña pero existe, y solo por eso lo excluye de ser único.

Pero digamos, que no tomamos esto en cuenta y creemos que es único.
En una de tus contestaciones haces referencia a este código:

[QUOTE=albert2;4391358]
//me lo elimina ok porque no vas aponer 2 noticias el mismo usuario y segundo unix
<a href='noticiaeliminar.php?utc=".$fila['utc']."&usuario=".$fila['usuario'] ."'>Eliminar</a></</td><td>

//el problema es que o'br¡an me lo pasa como o y no me pasa por get el o'brian pues cuando llega a la comilla se corta
<a href='noticiaformularioactualizar.php?titulo=".$fi la['titulo']."&noticia=".$fila['noticia']."'>Actualizar</a></td></tr>";
[/QOUTE]

La inclusión del usuario en esa url es innecesaria, al contrario podría traer inconvenientes. Hay otras formas de enviar ese dato, si quieres guardar el registro de quien lo eliminó.

Tan solo utiliza el utc, noticiaeliminar.php?utc=
Con eso te aseguras de eliminar la noticia correcta.

Para actualizar, y entiendo por actualizar => modificar algún dato, la lógica es la misma. Solo necesitas el utc, noticiaformularioactualizar.php?utc=

Te explico la lógica:

1) Recuperar a traves de un valor único (utc), el registro que queremos actualizar
2) Generar el formulario y cargar con los datos de la consulta en el punto 1
3) Enviar el formulario incluyendo en algún campo oculto el valor de utc, y aquí lo importante es no mandarlo por la query, o sea por la url. Lo debes enviar por POST.

Porque es necesario pasarlo por POST:

- GET tiene limitación en la cantidad caracteres, ese límite depende de cada navegador.
- GET transforma los espacios en blanco y caracteres especiales en otro formato, que a veces entran en conflicto con la base de datos
- GET expone tus datos a ser modificados, por fuera de tu formulario.

Para enviar datos por post, lo único que debes hacer es cambiar el "method" por post. Hay muchos tutoriales en internet sobre como manejar formularios.

Para finalizar y antes de que sigas intentando solucionar tu problema, te recomiendo leer mucho sobre diseño y estructura de bases de datos. Si la base de datos esta mal estructurada o diseñada, lo que desees hacer es una patada en las zonas bajas en términos de programación. Toma el ejemplo de un edificio, si los cimientos no están bien hechos, hacer los pisos es mas dificil y eventualmente colapsaran.

En un desarrollo de software basado en datos extraidos e insertados a traves de una base de datos, esta última debe ser firme y bien piensada. Son tus cimientos.

Saludos.
  #22 (permalink)  
Antiguo 16/03/2013, 22:52
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

UN MILLON DE GRACIAS ME SIRVE DE MUCHO , Seguiré practicando y aprendiendo espero mejorar este edificio antes de que se me caigua encima.
Gracias y hasta siempre por tu paciencia y texto.
  #23 (permalink)  
Antiguo 16/03/2013, 23:49
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

Estoy en ello pero una casi última pregunta se puede enviar una variable url por post?
  #24 (permalink)  
Antiguo 16/03/2013, 23:59
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: eliminar comillas simples

Cita:
Iniciado por albert2 Ver Mensaje
Estoy en ello pero una casi última pregunta se puede enviar una variable url por post?
Sin ningun problema, por POST puedes enviar cualquier dato.
  #25 (permalink)  
Antiguo 17/03/2013, 03:31
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

Se puede las lineas que marco con //////////// sustituir con post ?


while ($fila=sqlite_fetch_array($resultado)){

echo"<tr><td>".$fila['titulo']."</td><td>".$fila['noticia'].
"</td><td>
/////////// <a href='voluntariseliminar.php?utc=".$fila['utc']."'>Eliminar</a></</td><td>///////////////
////////// <a href='voluntarisformularioactualizar.php?titulo=". $fila['titulo']."&noticia=".$fila['noticia']."'>Actualizar</a></td></tr>";////////////

}

//añadir un registro
echo"

<tr>
<form action='voluntariscrearnoticia.php' enctype='multipart/form-data' method='POST'>
<td align><input type='text' name='titulo'></td>
<td colspan='2' width='100%'><textarea name='noticia' id='textarea' cols='90' rows='10'></textarea></td>
<td><input name='fichero' type='file' /></td>
<td><input name='comentario' type='text' /></td></tr>
<tr><td>

<td><input type='submit'></td><td></td>
</tr>
";

echo"</table>";
Gracias por vuestras respuestas

Última edición por albert2; 17/03/2013 a las 03:40
  #26 (permalink)  
Antiguo 17/03/2013, 05:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: eliminar comillas simples

Los enlaces para eliminar y actualizar forman parte de la noticia?... no debería ser así y tampoco debes enviarlas por formulario!

He leído casi todo el tema y no acabo de entender lo que quieres hacer... pero, bueno, la respuesta si puedes reemplazar texto es sí, usa str_replace()
__________________
- León, Guanajuato
- GV-Foto
  #27 (permalink)  
Antiguo 17/03/2013, 11:39
 
Fecha de Ingreso: diciembre-2009
Mensajes: 47
Antigüedad: 15 años
Puntos: 3
Respuesta: eliminar comillas simples

ya he probado el str_replace() y el
$str = sqlite_escape_string($noticia);
Y las 2 me quitan el ' pero no para poderlo enviarlo al segundo form

Etiquetas: str_replace
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:50.