Foros del Web » Programando para Internet » PHP »

str_replace post

Estas en el tema de str_replace post en el foro de PHP en Foros del Web. Hola amigos. Tengo una duda con str_replace. El siguiente codigo es correcto aplicandolo en un php normal, pero cuando lo aplico en un formulario por ...
  #1 (permalink)  
Antiguo 10/02/2014, 07:17
 
Fecha de Ingreso: febrero-2014
Mensajes: 99
Antigüedad: 10 años, 9 meses
Puntos: 0
str_replace post

Hola amigos.
Tengo una duda con str_replace.
El siguiente codigo es correcto aplicandolo en un php normal, pero cuando lo aplico en un formulario por POST para grabarlo en una bd no funciona.
¿No se puede usar mediante post?

$palabra = "SÁÁÁÁéÉDF SÉÉDF DFSÓÓ á é ááááàÂêêêêêõõõõ";
$url = str_replace(array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä','é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë','í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î','ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô','õ','ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A','e', 'e', 'e', 'e', 'E', 'E', 'E', 'E','i', 'i', 'i', 'i', 'I', 'I', 'I', 'I','o', 'o', 'o', 'o', 'O', 'O', 'O', 'O','o','u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),"$palabra");
echo $url;

Un saludo
gracias
  #2 (permalink)  
Antiguo 10/02/2014, 08:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: str_replace post

Cita:
en un formulario por POST
Puedes mostrar como lo aplicas a un formulario por post?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 10/02/2014, 10:51
 
Fecha de Ingreso: febrero-2014
Mensajes: 99
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: str_replace post

Si, claro.
Expico lo que hago.

Despues de hacer el into y guardardo en la bd , lo modifico con un update. Tambien lo he probado directamente desde el Insert into, pero nada.

$nombre = ucwords(strtolower($_POST[nombre]));
$guardar ="INSERT INTO pruebasmall (nombre,apellido VALUES ('$nombre','$apellido')";
mysql_query($guardar);

$url = str_replace(
array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
$nombre
);
$pg = mysql_query("UPDATE pruebasmall SET url = '$url' WHERE id = '$nuevaid'");



un salido
  #4 (permalink)  
Antiguo 11/02/2014, 05:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: str_replace post

Código PHP:
Ver original
  1. $nombre = ucwords(strtolower($_POST[nombre]));
  2.  
  3. echo $nombre."<br />";
  4.  
  5. $guardar ="INSERT INTO pruebasmall (nombre,apellido VALUES ('$nombre','$apellido')";
  6.  
  7. mysql_query($guardar);
  8.  
  9. $url = str_replace(
  10. array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
  11. array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
  12. $nombre
  13. );
  14.  
  15. echo $url."<br />";
  16.  
  17.  
  18. $pg = mysql_query("UPDATE pruebasmall SET url = '$url' WHERE id = '$nuevaid'");

No hay ninguna razon para que no puedas aplicar la función a una variable que se ha llenado con el contenido llegado por POST.

Como el codigo que mandas no es completo... no se si puede haber algo que altere el resultado... las lineas que afectan a $nombre estan bien. A ver que dan los echo que te he añadido.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 11/02/2014, 08:22
 
Fecha de Ingreso: febrero-2014
Mensajes: 99
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: str_replace post

Me paso algo curioso....
Ahora resulta que me graba bien la $url pero no el $nombre en la bd.
Podria ser tema de codificacion?
Puse a cada campo de la tabla -> utf8_unicode_ci

Te muestro a continuacion el codigo completo y los resultados.

codigo
-----------------------
formulario.php

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<form action="formguardar.php" method="POST">
<input type="hidden" name="id"/>
<input type="text" name="nombre"/>
<input type="submit" value="guardar"/>
</form>



formguardar.php

<?php
mysql_connect('localhost', 'root','root');
mysql_select_db("pruebas");
$nombre = ucwords(strtolower($_POST[nombre]));
echo $nombre."<br />";

$guardar = "INSERT INTO pruebasmall (nombre) VALUES ('$nombre')";

mysql_query($guardar);

$nuevaid = mysql_insert_id();

$url = strtolower(str_replace(
array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
$nombre
));

echo $url."<br />";
$pg = mysql_query("UPDATE pruebasmall SET url = '$url' WHERE id ='$nuevaid'");


echo "guardado correctamente";
?>
--------------------------------------------------------

Los echo que añadiste los muestra bien.

Mandando por post la palabra " Ááä "
echo de $nombre -> ÁáäÂ
echo de $url -> aaaa

Pero en la base de datos me graba:

Campo nombre -> ÃáäÃ
Campor url -> aaaa

Un saludo

Última edición por RocoBox3000; 11/02/2014 a las 08:29
  #6 (permalink)  
Antiguo 11/02/2014, 10:07
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 16 años
Puntos: 26
Respuesta: str_replace post

Tambien es que quiza la version de tu PHP este actualizada, y el str_replace a estas alturas ya es obsoleta, en su lugar ahora se usa preg_replace

Código PHP:
Ver original
  1. preg_replace("/texto a borrar/i","texto a reemplazar",$cadena);

Última edición por fido-strike; 11/02/2014 a las 10:07 Razón: error en ejemplo xD
  #7 (permalink)  
Antiguo 11/02/2014, 11:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: str_replace post

Bien en el manual se puede leer

Cita:
Si no se necesitan reglas complicadas de reemplazo (como expresiones regulares), se puede utilizar siempre esta función en lugar de preg_replace().
Por lo que diria que obsoleta no esta.

Intenta esto, de paso te ahorras un par de consultas a la base de datos

Código PHP:
Ver original
  1. <?php
  2. mysql_connect('localhost', 'root','root');
  3. mysql_select_db("pruebas");
  4. $nombre = ucwords(strtolower($_POST[nombre]));
  5.        array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
  6.        array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
  7.        $nombre));
  8.  
  9. $guardar = "INSERT INTO pruebasmall (nombre,url) VALUES ('".utf8_encode($nombre)."','".$url."')";
  10.  
  11. if(mysql_query($guardar)){
  12.     echo "guardado correctamente";
  13. }else{
  14.     echo "error al guardar";
  15. }
  16. ?>

Si no funciona asi cambia utf8_encode($nombre) por utf8_decode($nombre), uno de los dos funcionará...

(Podrias usar una construcción con el id de url y te ahorrarias ese campo calculado:

Código MySQL:
Ver original
  1. SELECT concat("usu",id) url, nombre FROM pruebasmall WHERE id ='$unid'"

ahi tienes nombre y url del $unid. Donde url es un alias no un campo de la tabla

Código MySQL:
Ver original
  1. SELECT id, nombre FROM pruebasmall WHERE concat("usu",id)  =concat('usu',$unid)"

(si $unid=10, la url será "usu10", ahora solo tienes que asegurarte que exista)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 11/02/2014 a las 12:05
  #8 (permalink)  
Antiguo 11/02/2014, 12:54
 
Fecha de Ingreso: febrero-2014
Mensajes: 99
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: str_replace post

Ya lo pobre y aplique tus consejos.
Funciona correctamente usando utf8_decode($nombre).

Muchas gracias :)

Etiquetas: formulario, post
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:01.