Foros del Web » Programando para Internet » PHP »

Problema con comilla simple, espacios y magic_quotes al mostrar datos en un formulari

Estas en el tema de Problema con comilla simple, espacios y magic_quotes al mostrar datos en un formulari en el foro de PHP en Foros del Web. Hola, Tengo el "síndrome de las comillas", antes en Oracle nunca me pasó esto (que yo recuerde) pero ahora con mysql 5.0.22 me sucede que ...
  #1 (permalink)  
Antiguo 06/10/2006, 08:02
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 19 años
Puntos: 0
Problema con comilla simple, espacios y magic_quotes al mostrar datos en un formulari

Hola,

Tengo el "síndrome de las comillas", antes en Oracle nunca me pasó esto (que yo recuerde) pero ahora con mysql 5.0.22 me sucede que cuando ingreso datos tipo "o'brien mac" (sin comillas dobles) a mi base de datos desde un formulario ingresan sin problemas y quedan bien grabados (magic_quotes_gpc= On les agrega un \ antes de la comilla simple pero en la base de datos quedan sin \), sin embargo cuando muestro los datos en el formulario se ven bien sólo cuando los muestro en una lista, pero si los despliego en un input text (caja de texto común y corriente) sólo se muestra "o'" (sin comillas dobles), es decir todo lo que está a la derecha de la comilla simple no se muestra.

Intenté cambiando value='$row[1]' por value=$row[1] en esta línea:

Código PHP:
echo "        <input class=DatoOpcion2 type=text name='nombre' value='$row[1]' size='75' maxlength='65'  readonly style='background=#HE0E0E0; color:#006699'> "
pero en ese caso muestra "o'brien", es decir no se muestra lo que está a la derecha del espacio entre "o'brien" y "mac".

probé usando stripslashes($row[1]) pero no parece hacer nada (de hecho en la base de datos los nombres no se guardan con \, no sé si debería ser así).

esta es parte de mi php.ini:

Código:
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
ok, gracias por cualquier ayuda que puedan brindarme.

Atte.,

w.
  #2 (permalink)  
Antiguo 06/10/2006, 08:54
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
veamos si con esto se arregla:

Código PHP:
echo "<input class='DatoOpcion2' type='text' name='nombre' value='".$row[1]."' size='75' maxlength='65'  readonly style='background=#HE0E0E0; color:#006699'>"
aunke yo te aconsejaria ke no metas codigo html en un echo pk por la propia naturaleza de la web, el código HTML no necesita ser parseado de ninguna manera, como sabemos PHP lo único ke hace al final es entregar HTML al cliente. ¿Para ké parsear pues echos ke solo contienen HTML? Con el concepto básico de server-side también sabemos ke PHP es un lenguaje embebido en el código HTML y ke los tags <? ?> sirven para abrir y cerrar el "modo" PHP.

Entonces ese script deberia kedar asi:

Código PHP:
<? 
  
// codigo php por aki
?>
<input class="DatoOpcion2" type="text" name="nombre" value="<?=$row[1]?>" size="75" maxlength="65" readonly style="background=#HE0E0E0; color:#006699" />
<?
  
// por aki mas codigo php
?>
Este código es mucho más claro, limpio y rápido, ahorramos al preprocesador un montón de líneas a interpretar, ke de cualkier modo iban a ser código HTML.

Saludos :)
  #3 (permalink)  
Antiguo 06/10/2006, 10:28
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 19 años
Puntos: 0
ZydRick, muchas gracias, tu segunda sugerencia funciona perfecto, de hecho era algo que yo no sabía y me parece una excelente medida, además explica porqué nunca podía usar comillas dobles en mis echos mientras en internet siempre veo código con comillas dobles.

gracias otra vez, apenas tenga tiempo modificaré mi código para quitar el código html en los echos.

saludos.

atte.

w.
  #4 (permalink)  
Antiguo 06/10/2006, 10:54
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Cita:
Iniciado por wdc Ver Mensaje
...además explica porqué nunca podía usar comillas dobles en mis echos mientras en internet siempre veo código con comillas dobles...
Veamos sobre lo del uso de las comillas simples y dobles dos aspectos básicos a modo de resumen:
  • Las comillas simples muestran el contenido tal y como lo hemos escrito
  • Las comillas dobles parsean nuestra cadena en busca de posibles variables a interpretar por PHP.

Entonces, las comillas simples son mas rapidas que las dobles porque no pierden el tiempo interpretando el contenido. p. ej.

Código PHP:
<?
  
echo 'Esto es una cadena normal y corriente, tardo poco porque no se parseo';
  echo 
"Aquí PHP mira a ver si hay algo dentro que pueda interpretar, tardo un poco mas";
?>
Otro mas para despejar dudas:

Código PHP:
<?
  $msg 
"forosdelweb.com";
  echo 
'Me encanta $var'// muestra: Me encanta $var
  
echo "Me encanta $var"// muestra: Me encanta forosdelweb.com
?>
Aunke esto tb tiene sus ventajas y desventajas, veamos algo sobre ello:

Código PHP:
<?
 $msg 
"http://www.forosdelweb.com";

  
//No necesito escapar las dobles comillas aquí
  
echo '<input type="text" name="campo">';

  
//Sin embargo me veo obligado a concatenar $msg, para que se sustituya por su valor
  
echo '<a class="link" href="'.$msg.'">Foros del web</a>';


  
//Con comillas dobles, $msg se sustituirá por su contenido sin concatenar, pero necesito escapar las dobles comillas
  
echo "<a class=\"link\" href=\"$msg\">Foros del web</a>";

  
//Aunque esto parece que sigue siendo más rápido
  
echo "<a class=\"link\" href=\"".$msg."\">Foros del web</a>";

?>
Espero ke con esto se resuelva en algo las dudas sobre el uso de las comillas simples y dobles.

Saludos
  #5 (permalink)  
Antiguo 10/10/2006, 10:51
wdc
 
Fecha de Ingreso: mayo-2005
Mensajes: 25
Antigüedad: 19 años
Puntos: 0
en ese caso qué es mejor?

size='75' o size="75"

gracias.

w.
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 04:30.