Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema para transformar de string a int

Estas en el tema de problema para transformar de string a int en el foro de PHP en Foros del Web. Hola, Me encuentro intentando transformar un string a int, pero me devuelve valor 0, cabe mencionar que la cadena la extraigo desde la url. <script ...
  #1 (permalink)  
Antiguo 15/06/2016, 16:11
 
Fecha de Ingreso: octubre-2012
Mensajes: 74
Antigüedad: 11 años, 6 meses
Puntos: 0
problema para transformar de string a int

Hola,

Me encuentro intentando transformar un string a int, pero me devuelve valor 0, cabe mencionar que la cadena la extraigo desde la url.

<script type="text/javascript">
var id = window.location.search;
var id=id.substr(1);
</script>

<?php
$id = '<script> document.write(id) </script>';
$id = (int)$id;
echo $id;
?>
  #2 (permalink)  
Antiguo 15/06/2016, 16:58
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: problema para transformar de string a int

No puedes ir juntando variables de JavaScript con variables de PHP, uno se ejecuta del lado del cliente, y el otro del lado del servidor en ese órden. Puede darte problemas en un futuro.

Código PHP:
Ver original
  1. <script type="text/javascript">
  2. var id = window.location.search;
  3. var id=id.substr(1);
  4. </script>
  5.  
  6. <?php
  7. $id = intval('<script> document.write(id) </script>');
  8.  
  9. echo (is_nan($id)) ? 'la variable id no es un número' : 'la variable id es un número y tiene valor: '. $id;
  10.  
  11. ?>

Esto me dice que es un número, puedes probarlo. saludos
  #3 (permalink)  
Antiguo 15/06/2016, 17:06
 
Fecha de Ingreso: octubre-2012
Mensajes: 74
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problema para transformar de string a int

Cita:
Iniciado por rodocoyote15 Ver Mensaje
No puedes ir juntando variables de JavaScript con variables de PHP, uno se ejecuta del lado del cliente, y el otro del lado del servidor en ese órden. Puede darte problemas en un futuro.

Código PHP:
Ver original
  1. <script type="text/javascript">
  2. var id = window.location.search;
  3. var id=id.substr(1);
  4. </script>
  5.  
  6. <?php
  7. $id = intval('<script> document.write(id) </script>');
  8.  
  9. echo (is_nan($id)) ? 'la variable id no es un número' : 'la variable id es un número y tiene valor: '. $id;
  10.  
  11. ?>

Esto me dice que es un número, puedes probarlo. saludos
Me sigue arrojando valor 0;
"la variable id es un número y tiene valor: 0"
  #4 (permalink)  
Antiguo 15/06/2016, 17:17
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: problema para transformar de string a int

Edito. Tienes razón, no vi el valor que arrojaba.

¿Por qué tienes que usar las dos herramientas?

Toca ver si alguien más por aquí puede ayudarte, igual se me ocurre esto.

Código PHP:
Ver original
  1. <?php
  2. $url= $_SERVER["REQUEST_URI"];
  3. $url = explode("?", $url);
  4. $id = $url[1];
  5. echo $id + 8;
  6.  
  7. ?>

Pero tendríamos que ver si se acopla a tus necesidades.
  #5 (permalink)  
Antiguo 15/06/2016, 18:13
Avatar de manuparquegiralda  
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 9 meses
Puntos: 39
Respuesta: problema para transformar de string a int

A ver, ¿eres consciente de lo que estás metiendo en la variable $id de PHP?

Como ha dicho rodocoyote15 no puedes pasar variables desde javascript a PHP por una razón muy sencilla, el PHP se ejecuta en el servidor, el Javascript en el navegador, esto quiere decir, que cuando el servidor envía la información al navegador todas las variables PHP ya están definidas y puesto que el servidor no ejecuta el código Javascript la variable PHP no está cogiendo el valor que tu quieres darle.

Mira si haces esto:

Código PHP:
Ver original
  1. <script type="text/javascript">
  2. var id = window.location.search;
  3. var id=id.substr(1);
  4. </script>
  5.  
  6. <?php
  7. $id = '<script> document.write(id) </script>';
  8.  
  9. echo $id;
  10. ?>

Te dará como resultado que estás definiendo la variable $id como "<script> document.write(id) </script>" literalmente, es decir, no como el resultado de window.location.search. Porque como te he dicho, la variable PHP la defines en el servidor y el servidor no te ejecuta el código Javascript. Por tanto el resultado al pasar a INT te da 0, porque directamente no le estás pasando un número en string.

Por lo tanto, no puedes pasar variables de Javascript a PHP, pero si lo puedes hacer al revés. Por ejemplo:

Código PHP:
Ver original
  1. <?php
  2. $miVar = "Hola";
  3. ?>
  4.  
  5. <script>
  6. var foo = "<?php echo $miVar; ?>";
  7. </script>

Esto te dará que la variable foo de Javascript si es la variable $miVar de PHP, porque el servidor ejecuta el PHP y le manda al navegador esto:

Código Javascript:
Ver original
  1. <script>
  2. var foo = "Hola";
  3. </script>

Bien, teniendo en cuenta que lo que intentas hacer es no lo puedes hacer de esa manera. Tendrías que captar la URL en PHP y no en Javascript, para eso tienes las variables de servidor de PHP. Te pongo un ejemplo si la url de la que estás sacando la información con Javascript es: http://www.midominio.com/prueba.php?id=1&nombre=Juan y quieres sacar los argumentos pasados la URL tienes una varibale en PHP que es $_GET

Código PHP:
Ver original
  1. <?
  2. $id = $_GET['id'];
  3. $nombre=$_GET['nombre'];
  4.  
  5. echo $id." - ".$nombre;
  6.  
  7. //Te imprimirá: 1 - Juan
  8. ?>

Si lo que quieres hacer es sacar todos los argumentos, puedes hacer lo que te ha dicho rodocoyote15

Código PHP:
Ver original
  1. <?php
  2.  
  3. $url= $_SERVER["REQUEST_URI"];
  4. $url = explode("?", $url);
  5. echo $url[1];
  6.  
  7. // Te imprimirá: id=1&nombre=Juan
  8.  
  9. ?>

Normalmente en PHP no necesitas pasar un string sencilo como "1" a int, te lo hace directamente. Por ejemplo si obtienes la id por el método GET, no haría falta que lo pasaras a string;
__________________
Diseño Web - Arisman Web
  #6 (permalink)  
Antiguo 16/06/2016, 07:12
 
Fecha de Ingreso: octubre-2012
Mensajes: 74
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: problema para transformar de string a int

Muchisimas gracias por la aclaracion, era exactamente lo que necesitaba.

Totalmente agradecido.

Etiquetas: int, string, transformar
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 18:14.