Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP no recibe variables post

Estas en el tema de PHP no recibe variables post en el foro de PHP en Foros del Web. Hola, hace unos días hice un post parecido pero estaba bastante desordenado, ahora intentare hacerlo mas ordenando y explicado. Mi web contiene una tabla la ...
  #1 (permalink)  
Antiguo 18/02/2015, 13:54
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
PHP no recibe variables post

Hola, hace unos días hice un post parecido pero estaba bastante desordenado, ahora intentare hacerlo mas ordenando y explicado.
Mi web contiene una tabla la cual contiene un botón que al ser clickeado se ejecuta una función ajax que envía un dato por método post a la misma pagina y luego la actualiza (hasta ahí todo bien). Esta pagina recibe el parámetro y crea una session con dicho parámetro. El Problema es que la pagina jamas recibe el parámetro, he puesto alert's en cada función que interviene en este proceso para encontrar el error, el único alert que se muestra es el que esta adentro del ajax, los demás no aparecen. Lo extraño es que este proceso lo hago en otra pagina y si funciona, la única diferencia es que esa pagina solo recibe un valor por post (por lo tanto una sola session), en cambio esta pagina recibe 2 valores de lugares diferentes.

Boton de envio:
Código PHP:
Ver original
  1. echo "                                <td class='center'><a onclick='actualizarObra(".$ide=$edit_obras[0].");' data-toggle='modal' style='cursor:pointer;'><img src='img/edit.png' width='20' height='20'></a></td>";
pagina principal (solo lo que interviene en este proceso):
Código HTML:
Ver original
  1. <?php
  2.    echo '<pre>';
  3.     print_r($_POST);
  4.     echo '</pre>';
  5.     session_start();
  6.     $usuario = $_SESSION['usuario'];
  7.     if(!isset($usuario)){
  8.         header("Location: index.php");
  9.     }
  10.     if (isset($_POST['ccobra'])){
  11.         $_SESSION['ccobra'] = $_POST['ccobra'];
  12.         echo "<script type='text/javascript'>";
  13.         echo "alert('entro a session');";
  14.         echo "</script>";
  15.     }
  16.     if (isset($_POST['codCliente'])){
  17.         $_SESSION['codCliente'] = $_POST['codCliente'];
  18.     }
  19.     include_once('conexion.php');
  20. ?>
  21.  
  22. <script type='text/javascript'>
  23.     function actualizarObra(ccobra){
  24.         $.ajax({
  25.             async: false,
  26.             type: "POST",
  27.             url: "obra.php",
  28.             data: {ccobra: ccobra},
  29.             success: function(ccobra) {
  30.                 window.location="obra.php";
  31.             }
  32.         }).done(function(ccobra){
  33.             alert("entro a ajax");
  34.         });
  35.     }
  36.     function mostrarEditFormularioObra(id) {
  37.         document.getElementById("editObr").style.display ='block';
  38.         document.getElementById("tablas").style.display ='none';
  39.         document.getElementById("crearObr").style.display ='none';
  40.         alert("entro a edit Form" + id);
  41.     }
  42. <?php
  43. if (isset($_SESSION['ccobra'])){
  44.    echo "<script type='text/javascript'>";
  45.     echo "alert('entro a funcion php');";
  46.     echo "  mostrarEditFormularioObra(".$_SESSION['ccobra'].");";
  47.     echo "</script>";
  48. }
  49. ?>
  #2 (permalink)  
Antiguo 18/02/2015, 14:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

¿Qué tipo de datos se supone que es ccobra?

¿Es valor es correcto y visible en el enlace generado?

¿Y si haces un alert() en la función que envía dicho dato se muestra?

¿Ya inspeccionaste las peticiones hechas en la consola de desarrollador en tu navegador?

Vamos, que leyendo tu código es complicado adivinar lo que sucede, por eso debes depurar en todo momento que va sucediendo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/02/2015, 14:44
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Qué tipo de datos se supone que es ccobra?
Es un int que viene de una clave primaria que se obtiene desde una tabla

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Es valor es correcto y visible en el enlace generado?
No entendí esta pregunta, si te refieres al enlace que recibe los parámetros, no, no son visibles
Cita:
Iniciado por pateketrueke Ver Mensaje

¿Y si haces un alert() en la función que envía dicho dato se muestra?
si al alert del ajax le agrego la variable me imprime todo el html de la pagina y en el comienzo dice [ccobra]=>4 (considerando que seleccione la fila con valor 4)

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Ya inspeccionaste las peticiones hechas en la consola de desarrollador en tu navegador?
No se donde esta esa opción (uso firebug)

Cita:
Iniciado por pateketrueke Ver Mensaje
Vamos, que leyendo tu código es complicado adivinar lo que sucede, por eso debes depurar en todo momento que va sucediendo.
Lo que pasa es que tengo bastantes lineas de código, no se si subir todo el código sea lo mejor, solo puse las funciones que intervienen en este proceso
  #4 (permalink)  
Antiguo 18/02/2015, 15:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

Cita:
No entendí esta pregunta, si te refieres al enlace que recibe los parámetros, no, no son visibles
Me refiero a esta parte:
Código PHP:
Ver original
  1. echo "                                <td class='center'><a onclick='actualizarObra(".$ide=$edit_obras[0].");' data-toggle='modal' style='cursor:pointer;'><img src='img/edit.png' width='20' height='20'></a></td>";

Eso debería generar un enlace en el navegador, ¿cual es el código que resulta ahí?

Cita:
si al alert del ajax le agrego la variable me imprime todo el html de la pagina y en el comienzo dice [ccobra]=>4 (considerando que seleccione la fila con valor 4)
¿Lo hiciste así o cómo?

Código Javascript:
Ver original
  1. function actualizarObra(ccobra){
  2.         // es importante saber que valor se recibe aquí
  3.         alert('valor recibido=' + ccobra);
  4.  
  5.         $.ajax({
  6.             async: false,
  7.             type: "POST",
  8.             url: "obra.php",
  9.             data: {ccobra: ccobra},
  10.             success: function(ccobra) {
  11.                 window.location="obra.php";
  12.             }
  13.         }).done(function(ccobra){
  14.             alert("entro a ajax");
  15.         });
  16.     }

¿Podrías compartir exactamente lo que obtienes?

Cita:
No se donde esta esa opción (uso firebug)
Yo también, ¿no ubicas la pestaña de red?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 18/02/2015, 15:21
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

1° Solo me redirige a la misma pagina, el enlace es el mismo
2° Lo hice asi:
Código Javascript:
Ver original
  1. function actualizarObra(ccobra){
  2.         $.ajax({
  3.             async: false,
  4.             type: "POST",
  5.             url: "obra.php",
  6.             data: {ccobra: ccobra},
  7.             success: function(ccobra) {
  8.                 window.location="obra.php";
  9.             }
  10.         }).done(function(ccobra){
  11.             alert("entro a ajax" +ccobra);
  12.         });
  13.     }
y esto imprime el alert:

No puedo subir el código completo ya que sobrepasa la cantidad máxima de caracteres (la sobrepasa por mas de el doble)

Última edición por Begotten; 18/02/2015 a las 15:27
  #6 (permalink)  
Antiguo 18/02/2015, 15:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

Pues ahí lo tienes: el script obra.php sí está recibiendo el valor, así que te equivocaste en tu afirmación inicial.

Ahora, ¿por qué será que no almacena el valor en sesión?

Es simple: las sesiones, cookies (ambas usan headers) tienen restricciones de uso, para que funcionen debes evitar cualquier salida anterior.

Pero eso es lo que haces, al imprimir cosas (como el print_r()) antes de session_start() estás arruinando todo.

Por favor, consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 18/02/2015, 17:25
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

el print_r() solo lo puse para probar, con o sin eso el resultado es el mismo, no se cual puede ser esa salida anterior que dices, como mencione anteriormente en otra pagina hago exactamente lo mismo y funciona sin problemas.
  #8 (permalink)  
Antiguo 18/02/2015, 17:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

Pues el alert() que haces en el evento done() te contradice, según el print_r() ahí se recibe bien la variable por POST.

¿Entonces a quien le hacemos caso?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 18/02/2015, 17:41
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

los alert solo los puse para ver si las variables se mandaban o no, el problema viene desde antes. Ademas lo que imprime print_r() en el alert no es lo mismo que imprime en la pagina cuando recibe:


lo que imprime es:
Array
(
)
  #10 (permalink)  
Antiguo 18/02/2015, 17:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

Pues sigues sin aportar nada útil, veo que el código que alcanzas mostrar es correcto, los alert() muestran bien los datos pero sinceramente no sabría por donde más mirar.

Ahora lo que muestras es otra cosa, ¿dicha captura de pantalla corresponde al script mediante el método POST?

No puedo creer que algo tan sencillo te tenga de cabeza, ¿y si mejor aislas el problema con scripts simples?

Porque de otra forma aquí vas a estar, sin llegar nada.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 18/02/2015, 18:03
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

La captura es en el momento en que se actualiza la pagina (cuando debería recibir los datos) y no entiendo porque en el alert se muestra que los datos si se recibieron correctamente.

Estoy "de cabeza" porque no logro encontrar el problema, me funciona en un lado y en otro no y firebug no me ayuda mucho en esta pasada.

¿Como es eso de scripts simples?
  #12 (permalink)  
Antiguo 18/02/2015, 18:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

Scripts simples es: quita todo tu código, intenta sólo aislar la funcionalidad de sesión que intentas resolver.

Además, el hecho de que hagas redirecciones simplemente "oscurece" lo que en realidad está pasando, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 18/02/2015, 18:38
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

Bueno, lo que hice fue redirigir la función de ajax hacia otro php que solo tiene la recepción del envió y un echo para imprimir el resultado, aun no pasa nada... la variable no llega.

Código Javascript:
Ver original
  1. function actualizarObra(ccobra){
  2.         $.ajax({
  3.             async: false,
  4.             type: "POST",
  5.             url: "obra2.php",
  6.             data: {ccobra: ccobra},
  7.             success: function(ccobra) {
  8.                 window.location="obra2.php";
  9.             }
  10.         });
  11.     }
obra2:
Código PHP:
Ver original
  1. if (isset($_POST['ccobra'])){
  2.         $_SESSION['ccobra'] = $_POST['ccobra'];
  3.         echo "session:".$_SESSION['ccobra'];
  4.     }
  #14 (permalink)  
Antiguo 18/02/2015, 18:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

¿Eso es todo?

¿Dónde está la llamada a session_start()?

Además sólo imprimes el valor de la sesión si el $_POST existe, y vamos, que al hacer la redirección ya no es POST sino GET.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 18/02/2015, 18:56
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

Código PHP:
Ver original
  1.     $usuario = $_SESSION['usuario'];
  2.     if(!isset($usuario)){
  3.         header("Location: index.php");
  4.     }
  5.     if (isset($_POST['ccobra'])){
  6.         $_SESSION['ccobra'] = $_POST['ccobra'];
  7.     }
  8.     echo "session:".$_SESSION['ccobra'];
De esta forma y con GET funciona pero es básicamente lo mismo que tenia en la otra pagina (la que no funciona) por lo tanto quedo en la misma con el problema solo que ahora se que si se puede recibir.

No entiendo porque pasa a ser GET, siempre he utilizado esa función cuando uso ajax y siempre he recibido con POST.
  #16 (permalink)  
Antiguo 18/02/2015, 19:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: PHP no recibe variables post

Creo que no entiendes, la petición por Ajax es POST, y eso es correcto.

Sin embargo "window.location" hace una redirección tipo GET.

Tu script recibe perfectamente el POST, pero al mostrarlo debes leer la variable de sesión.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 18/02/2015, 19:10
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

Creo que ya he molestado mucho pero intento replicar el código en el php original y aun no doy en el clavo, aun no puedo hacer funcionar esta cosa.
  #18 (permalink)  
Antiguo 18/02/2015, 19:51
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: PHP no recibe variables post

Después de pelear y putear al código un rato encontré una llamada a mysql mal definida sin mucha relación con este problema, la corregí y ahora esta funcionando. Al final fue con post que logro funcionar (ya no quiero meterlo mas manos a esta parte). En fin... Muchas gracias por la ayuda.

Código PHP:
Ver original
  1. if (isset($_POST['ccobra'])){
  2.         $_SESSION['ccobra'] = $_POST['ccobra'];
  3.     }

Etiquetas: formulario, post, tabla, variables
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 20:19.