Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Integer a String en PHP (https://www.clubdelphi.com/foros/showthread.php?t=46683)

noshy 06-08-2007 18:44:13

Integer a String en PHP
 
Hola a todos, tengo el siguiente problema, quiero cargar una variable $demora con el valor "5 - 15" en formato texto, o sea el nº 5 , cinco espacion en blanco, guion, conco espacios en blanco y el nº 15, pero al mostrarla o grabarla en una tabla de mysql me da el resultado como si fuera una resta.

Alguna sugerencia??

dec 06-08-2007 18:47:15

Hola,

Es raro. Si asignas el valor así:

Código PHP:

$variable '5 - 15'

En $variable debería haber esa cadena... porque es lo que es. Ahora bien, esto otro:

Código PHP:

$variable 15

Es distinto, claro.

En PHP no hay tipos de variables, sino que se toman de su contexto, si está bien dicho así. Por lo tanto, un valor entrecomillado es una cadena de caracteres, y hasta donde yo llego no debería procesarse la resta, en este caso. Tal vez si usas comillas dobles...

Me consta que en este caso se expanden las variables, y tal vez estas "cuentas", pero, ahora mismo no estoy seguro. Desde luego con comillas simples esta circunstancia ya no se daría.

noshy 06-08-2007 18:49:49

asi
 
en realidad hago esto:

Código PHP:


$demora        
'5     -     '.$_GET['dem']; 

donde $_GET['dem'] me trae un valor, en este caso es 15. y lo mismo me lo toma como resta.

roman 06-08-2007 18:51:33

¿Qué tal así?

Código PHP:

$demora        '"' '5     -     '.$_GET['dem'] . '"'

// Saludos

dec 06-08-2007 18:53:49

Hola,

Joroña que joroña...

Código PHP:

$demora sprintf("5     -     %s"$_GET['dem']); 


noshy 06-08-2007 19:02:51

Bien
 
me funciono de esta manera :

Código PHP:

$demora        '"' '5     -     '.$_GET['dem'] . '"'

Pero, no me toma los 5 espacios en blanco, me los reduce a uno solo, como puedo hacer para que me ponga los 5 espacios??

roman 06-08-2007 19:07:56

Eso es raro. A ver, el problema no es con php, esto es, desde el principio, para php el valor de $demora era la cadena "15 - 5". El problema es con MySQL, pues si, por ejemplo, usas una consulta como:

Código PHP:

mysql_query("update tabla set campo = $demora"); 

Al no haber comillas a los lados del valor, MySQL hace la resta antes de actualizar el valor. Pero con las comillas debería respetarte los espacios. ¿Por qué no nos dices como haces la consulta SQL?

// Saludos

D-MO 06-08-2007 19:09:22

Cita:

Empezado por noshy (Mensaje 220765)
me funciono de esta manera :

Código PHP:

$demora        '"' '5     -     '.$_GET['dem'] . '"'

Pero, no me toma los 5 espacios en blanco, me los reduce a uno solo, como puedo hacer para que me ponga los 5 espacios??

¿Donde no te los toma?, en la Base de Datos? o ¿haces un "echo" a la variable para mostrar su valor en el navegador?

Saludos.

noshy 06-08-2007 19:13:03

Sin consulta
 
TE comento desde el principio.

Código PHP:


<?php
$demora        
'"' '5     -     '.$_GET['dem'] . '"';
...
...
$qpendientes mysql_query("insert into viajes_pendientes".
          
"(origen      , telefono   , zona   , parada , codigo   , estado , movil, fechaasignacion, id_usuario  , demora) ".
    
"values('$domicilio', '$telefono', '$zona', $parada, '$codigo', 0      , 0    , '$fecha'       , $vvidusuario$demora )"$conector);
?>

//en tro archivo
<?php
$qpendientes 
mysql_query("SELECT * FROM viajes_pendientes where estado = 0");

 echo 
"demora: ".$array['demora'];
?>


en este echo me devuelve: 5 - 15.


donde entre el 5 y el guion me deberia poner 5 espacios en blanco, y entre el guion y el 15 otros 5 espacios mas

noshy 06-08-2007 19:14:33

echo
 
realice un echo y tambien me suprime los espacion, nunca me deja poner mas de un espacio en blanco

roman 06-08-2007 19:17:22

¡Ah! Pero eso ya no es problema ni de php ni de MySQL :D Es problema de HTML que se come los espacios extras. Tendrías que poner la cadena entre etiquetas <pre> o bien sustituir los espacios por la entidad &nbsp;

// Saludos

D-MO 06-08-2007 19:18:26

Si revisas el código fuente del navegador, posiblemente si encuentres los 5 espacios, el problema se da porque el html no permite mas de 1 espacio seguido, pero se puede evitar esta restricción reemplazando los espacios por "&nbsp;" que imprime un espacio.

prueba con esto:
Código PHP:

echo str_replace(' ','&nbsp;',$demora); 

Saludos.

Edit: La solución de roman también funciona y es mas fácil :p

roman 06-08-2007 19:25:53

Otra cosa. Más que agregar las comillas en la variable $demora, quizá quieras hacerlo en la misma consulta:

Código PHP:

values('$domicilio''$telefono''$zona'$parada'$codigo'0      0    '$fecha'       $vvidusuario'$demora' 

Si te fijas, es lo que ya haces con $telefono. Vamosm que cualquier campo de texto debe encerrarse entre comillas al mandarlo a la base.

// Saludos

noshy 06-08-2007 19:26:36

GRACIAS, TOTALEs
 
Muchas Gracias por la Solucion, ya funciona perfectamente, GRACIAS de nuevo.


La franja horaria es GMT +2. Ahora son las 09:48:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi