Foros del Web » Programando para Internet » PHP »

Apostrofe dentro de un value

Estas en el tema de Apostrofe dentro de un value en el foro de PHP en Foros del Web. Hola a todos, tengo un formulario en el que recupero los datos de la base de datos. Código PHP: echo  "<td><input type=\"text\" name=\"Des_plat_es\" size=\"55\" value='$fila[Des_plat_es]'></td>" ;  El problema es ...
  #1 (permalink)  
Antiguo 14/12/2009, 08:35
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Apostrofe dentro de un value

Hola a todos,
tengo un formulario en el que recupero los datos de la base de datos.
Código PHP:
echo "<td><input type=\"text\" name=\"Des_plat_es\" size=\"55\" value='$fila[Des_plat_es]'></td>"
El problema es que si el valor de $fila[Des_plat_es] contiene un apostrope (ej: l'arbre) me recupera el valor hasta el apostrofe.
Si lo cambio por comillas
Código PHP:
echo "<td><input type=\"text\" name=\"Des_plat_es\" size=\"55\" value=\"$fila[Des_plat_es]\"></td>"
cuando recupero un valor que contiene comillas (") no lo hace correctamente.

Alguna idea para solucionar el problema?
  #2 (permalink)  
Antiguo 14/12/2009, 08:47
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Apostrofe dentro de un value

y si intentas poniendolo entre comillas dobles y luego simples?
echo "<td><input type=\"text\" name=\"Des_plat_es\" size=\"55\" value='"$fila[Des_plat_es]"'></td>";
ahi comentas.
Saludos!
  #3 (permalink)  
Antiguo 14/12/2009, 08:52
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Gracias por responder pero ya lo he intentado i no funciona. En todo caso deberia ser echo "<td><input type=\"text\" name=\"Des_plat_es\" size=\"55\" value='\"$fila[Des_plat_es]\"'></td>";
pero estamos en las mismas
  #4 (permalink)  
Antiguo 14/12/2009, 10:23
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Apostrofe dentro de un value

Hola da2.

Prueba esto:

echo '<td><input type="text" name="Des_plat_es" size="55" value="' . $fila['Des_plat_es'] . '" /></td>';

Si usas comillas simples al principio y al final también te ahorrarás la barra invertida antes de cada comilla doble.

Ya dirás como te ha ido.
  #5 (permalink)  
Antiguo 14/12/2009, 10:51
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 4 meses
Puntos: 20
Respuesta: Apostrofe dentro de un value

Echa un vistazo a estas funciones: addslashes() y stripslashes()
  #6 (permalink)  
Antiguo 14/12/2009, 11:41
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Gracias por responder mariogl84,

ya lo habia intentado.
</td>";
En un
Código PHP:
 $e stripslashes($fila[Des_plat_fr]);
echo 
$e
Funciona

Código PHP:
$e stripslashes($fila[Des_plat_fr]);
echo 
"<td><input type=\"text\" name=\"Des_plat_uk\" size=\"55\" value='$e'> 
Sigo con el mismo problema
  #7 (permalink)  
Antiguo 14/12/2009, 12:05
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 4 meses
Puntos: 20
Respuesta: Apostrofe dentro de un value

Con la función htmlspecialchars y usando esta combinación de comillas simples y dobles, me ha funcionado la prueba. A ver si te sirve:

Código PHP:
$a 'ha dicho "hola"';
$b "l'arbre";
$a htmlspecialchars($a);
$b htmlspecialchars($b);

echo 
'<input type="text" value="' $a '"><br />';
echo 
'<input type="text" value="' $b '">'
  #8 (permalink)  
Antiguo 14/12/2009, 12:07
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Apostrofe dentro de un value

Mira esto:
http://es2.php.net/manual/en/functio...ecialchars.php
  #9 (permalink)  
Antiguo 14/12/2009, 12:21
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Me haces trampas

Me usas en una comilla simple y en otra comilla doble. Si en las dos usas comillas dobles o sencillas seguro que una de las dos no funciona.

$a = 'ha dicho "hola"';
$b = 'l'arbre';
$a = htmlspecialchars($a);
$b = htmlspecialchars($b);

echo '<input type="text" value="' . $a . '"><br />';
echo '<input type="text" value="' . $b . '">';

Lo que no se puede hacer es estar pendiente del tipo de valor que se recuperará de la base de datos para usar unas o otras.
  #10 (permalink)  
Antiguo 14/12/2009, 12:36
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 4 meses
Puntos: 20
Respuesta: Apostrofe dentro de un value

Pero hombre, eso era porque he usado dos cadenas de texto para hacer el ejemplo sin tirar de base de datos. Si cambias las dos primeras líneas, en las que asigno los valores, por la recogida de datos de la base de datos, te funcionará.

Fíjate que en el resto de líneas no hay distinción entre comillas simples o dobles, te funcionarán los dos casos. Olvida las dos primeras líneas y usa ahí lo que recibas de la base de datos.
  #11 (permalink)  
Antiguo 14/12/2009, 12:55
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Me pasa lo mismo.
echo '<td><input type=\"text\" name=\"Des_plat_fr\" size=\"55\" value="' . $fila[Des_plat_fr] . '"></td>';

Si recupera algo con ' funciona pero si recupera algo con " no funciona
  #12 (permalink)  
Antiguo 14/12/2009, 13:04
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Apostrofe dentro de un value

Código PHP:
Ver original
  1. echo "<td><input type='text' name='Des_plat_es' size='55' value='".$fila['Des_plat_es']."'></td>";

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #13 (permalink)  
Antiguo 14/12/2009, 13:10
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 4 meses
Puntos: 20
Respuesta: Apostrofe dentro de un value

Cita:
Iniciado por da2 Ver Mensaje
Me pasa lo mismo.
echo '<td><input type=\"text\" name=\"Des_plat_fr\" size=\"55\" value="' . $fila[Des_plat_fr] . '"></td>';

Si recupera algo con ' funciona pero si recupera algo con " no funciona
Pero es que no le has pasado el htmlspecialchars().

Prueba esto:

Código PHP:
$dato_maldito htmlspecialchars($fila["Des_plat_fr"]);
echo 
'<td><input type=\"text\" name=\"Des_plat_fr\" size=\"55\" value="' $dato_maldito '"></td>'
A ver ahora :)
  #14 (permalink)  
Antiguo 14/12/2009, 13:12
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Cita:
Iniciado por masterojitos Ver Mensaje
Código PHP:
Ver original
  1. echo "<td><input type='text' name='Des_plat_es' size='55' value='".$fila['Des_plat_es']."'></td>";

Suerte.
Gracias por responder per ahora pasa al reves
  #15 (permalink)  
Antiguo 14/12/2009, 13:15
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Apostrofe dentro de un value

Código PHP:
Ver original
  1. echo "<td><input type='text' name='Des_plat_es' size='55' value='".htmlentities($fila['Des_plat_es'], ENT_QUOTES)."'></td>";

Código PHP:
Ver original
  1. echo "<td><input type='text' name='Des_plat_es' size='55' value='".htmlspecialchars($fila['Des_plat_es'], ENT_QUOTES)."'></td>";
  #16 (permalink)  
Antiguo 14/12/2009, 13:16
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Cita:
Iniciado por mariogl84 Ver Mensaje
Pero es que no le has pasado el htmlspecialchars().

Prueba esto:

Código PHP:
$dato_maldito htmlspecialchars($fila["Des_plat_fr"]);
echo 
'<td><input type=\"text\" name=\"Des_plat_fr\" size=\"55\" value="' $dato_maldito '"></td>'
A ver ahora :)
Pasa lo mismo. Cuando es ' funcina pero cuando hay " NO!
  #17 (permalink)  
Antiguo 14/12/2009, 13:38
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Una solucion cutre sera dejar el codigo así:
Código HTML:
echo "<td><input type=\"text\" name=\"Des_plat_fr[$c]\" size=\"55\" value=\"$Des_plat_fr\"></td>";
Y no usar " . Caundo tenga que poner doble comilla poner dos simples seguidas.
  #18 (permalink)  
Antiguo 14/12/2009, 13:46
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 4 meses
Puntos: 20
Respuesta: Apostrofe dentro de un value

He usado en mi servidor el código que te he dado, y funciona tanto con valores con comillas simples como con valores con comillas dobles.

No sé qué te puede estar fallando.
  #19 (permalink)  
Antiguo 14/12/2009, 14:01
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

$fila["Des_plat_fr"] tiene un valor ---> Pleurotes avec de l'ail et au persil
$fila["Des_plat_de"] tiene un valor ---> "Gírgolas" mit Knoblauch und Petersilie

$dato_maldito_fr = htmlspecialchars($fila["Des_plat_fr"]);
$dato_maldito_de = htmlspecialchars($fila["Des_plat_de"]);
echo"<tr>";
echo "<td class=\"tddret\"><img src=\"imatges/fr.gif\"></td>";
echo '<td><input type=\"text\" name=\"Des_plat_fr\" size=\"55\" value="' . $dato_maldito_fr . '"></td>';
echo"</tr>";
echo"<tr>";
echo "<td class=\"tddret\"><img src=\"imatges/de.gif\"></td>";
echo '<td><input type=\"text\" name=\"Des_plat_de\" size=\"55\" value="' . $dato_maldito_de . '"></td>';
echo"</tr>";


$fila["Des_plat_fr"] recupera---> Pleurotes avec de l'ail et au persil
$fila["Des_plat_de"] recupera --->

No se si hago algo mal pero a mí las las comillas dobles no me funcionan.

Estoy convenciodo que se tiene que poder hacer ya que en este foro funcona si editas un mensaje
  #20 (permalink)  
Antiguo 14/12/2009, 14:07
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Apostrofe dentro de un value

¿Has probado con el parámetro ENT_QUOTES como te he indicado antes?
  #21 (permalink)  
Antiguo 14/12/2009, 14:32
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Cita:
Iniciado por serser Ver Mensaje
¿Has probado con el parámetro ENT_QUOTES como te he indicado antes?
Perdona per mientras escribia se me ha pasado tu post!
Me pasa lo mismo con los dos codigos. Con comillas simples funciona pero con dobles no.
  #22 (permalink)  
Antiguo 14/12/2009, 16:48
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: Apostrofe dentro de un value

mira prueba esto y veras que si sale:

Código PHP:
Ver original
  1. <?php
  2. $a="Pleurotes avec de l'ail et au persil";
  3. $b='"Gírgolas" mit Knoblauch und Petersilie ';
  4. echo "<input value=\"$a - $b\" />";
  5. ?>

entonces aplica lo mismo para tu codigo.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #23 (permalink)  
Antiguo 15/12/2009, 02:46
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 21 años
Puntos: 0
Respuesta: Apostrofe dentro de un value

Cita:
Iniciado por masterojitos Ver Mensaje
mira prueba esto y veras que si sale:

Código PHP:
Ver original
  1. <?php
  2. $a="Pleurotes avec de l'ail et au persil";
  3. $b='"Gírgolas" mit Knoblauch und Petersilie ';
  4. echo "<input value=\"$a - $b\" />";
  5. ?>

entonces aplica lo mismo para tu codigo.
ESte funciona

Mi codigo lo he dejado así
Código PHP:
               echo"<tr>";
               echo 
"<td class=\"tddret\"><img src=\"imatges/fr.gif\"></td>";
            echo 
"<td><input type=\"text\" name=\"Des_plat_fr\" size=\"55\" value=\"".htmlspecialchars($fila[Des_plat_fr])."\"></td>";
            echo 
"<td><input type=\"text\" name=\"Obs_plat_fr\" size=\"40\" value=\"".htmlspecialchars($fila[Obs_plat_fr])."\"></td>";
            echo
"</tr>";
               echo
"<tr>";
               echo 
"<td class=\"tddret\"><img src=\"imatges/de.gif\"></td>";
            echo 
"<td><input type=\"text\" name=\"Des_plat_de\" size=\"55\" value=\"".htmlspecialchars($fila[Des_plat_de])."\"></td>";
            echo 
"<td><input type=\"text\" name=\"Obs_plat_de\" size=\"40\" value=\"".htmlspecialchars($fila[Obs_plat_de])."\"></td>";
            echo
"</tr>"
Gracias a todos por vuestro esfuerzo.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:28.