PHP Vuelto Loco con variables.

Iniciado por spysecurityca, 16 Agosto 2014, 09:20 AM

0 Miembros y 3 Visitantes están viendo este tema.

spysecurityca

Hola minus que tal.

Mira accedo sin pasarle los parametros por enlace ya que en teoria las variables que mando por Ajax han de ser guardadas en una variable sesion.

El principal problema al parecer es que mis variables no se guardan en la variable sesion.

Si se guardasen aún entrando al PHP sin pasar parametros por GET a lo mucho me deberia arrojar el Notice de que no hay variable valo y nombre definida pero si deberia mostrarme la que se guardó en la $_SESSION previamente.

MinusFour

#21
Puedes hacer otro archivo y poner:

Código (php) [Seleccionar]

session_start();
print_r($_SESSION["orden"]);


Para checar si hay algo en la session.

¿Estás comprobando con tu código en POO o el otro? Si estás usando el 2ndo debería por lo menos traerte un mensaje siempre.

Edit: No se te olvide el session_start()

vladek

Adhiero una pregunta no menor, estás poniendo el session_start?

Nada nada, ya vi que si. Ahora lo veo en la pc el php que en Tapatalk no se entiende nada.

spysecurityca

El problema se me da al usar POO, sin usar POO todo va bien.

MinusFour

Tienes que organizar mejor tu código.

Estás detectando si estas pasando variables $_REQUEST pero pones código que las utiliza fuera del bloque que las detecta. Resulta mejor si simplemente mueves el código que utiliza estás variables dentro del bloque que detecta si están puestas o no.

No entiendo lo que haces con con tu session, pero quiero creer que si no hay un arreglo en la session, quieres crear un nuevo arreglo para poder usar las propiedades asociativas del arreglo. No es necesario correr dos códigos que hagan lo mismo.

Y por último, como te dije, yo no he visto como implementas verificarProductos que es el que trae el string Json.

Código (php) [Seleccionar]

<?php
session_start
();
class 
NuevaOrden{
private $arreglo;
public function __construct($arr) {
$this->arreglo=$arr;
$this->empujarProducto();
}
private function empujarProducto() {
foreach ($this->arreglo as $desc => $val) {
if ($val=="") {
unset($this->arreglo[$desc]);
}
}
}
public function verificarProductos() {
if (count($this->arreglo)==0) {
echo "No hay elementos seleccionados";
} else {
$arreglo=(json_encode($this->arreglo));
echo $arreglo;
}
}
}
if (!isset(
$_SESSION['orden'])) {
$_SESSION['orden'] = array();
}
if (isset(
$_REQUEST['nombre']) && isset($_REQUEST['valor'])) {
$nomb=$_REQUEST['nombre'];
$valo=$_REQUEST['valor'];
$_SESSION['orden'][$nomb]=$valo;
}
$nuevaOrden= new NuevaOrden($_SESSION['orden']);
$nuevaOrden->verificarProducts();
?>

vladek

#25
Totalmente cierto, nunca se llamó a verificarProductos();
Si vas a probar el código de Minus, tiene un pequeño error que seguro le ocurrió al tipear, dice "verificarProducts();" en vez de "verificarProductos();".
Te aviso por las dudas por si copiás y pegás.

Si lo que querés es que se haga todo el proceso sin tener que llamar a verificarProductos, deberías llamarla en el constructor.

PD:
Te recomiendo para un próximo desarrollo que utilices un framework de JS, como ser JQuery o Prototype. No es necesario reinventar la rueda para ciertas cosas  :)
Lo mismo con PHP, hay frameworks como Symfony2 o CodeIgniter que hacen muy buen trabajo. Pero si recién estás empezando yo seguiría con PHP plano.

spysecurityca

Te me has adelantado maestro, casualmente reorganice el PHP POO pieza por pieza y me funcionó perfecto!.

Ahora me arroja un problema menor, que lo puedo resolver pero me gustaria saber el origen.

Al final del array me agrega un elemento vacio, lo soliciono filtrandolo, pero me gustaria saber el origen.

yoelrodguez

Hola Estuve viendo tu código y la primero que te quiero preguntar por estas usando por get y no post. Te lo pregunto porque en una ocasión estuve leyendo que por get existe limitación en tamaño para hacer el envió al servidor.   Existe una frenwork de Java Script que se llama Jquey (http://jquery.com/) que no se si lo conoces el cual te permite pasar los datos tanto por get como por post te voy a dejar un ejemplo para que veas que es muy sencillo y como:

//Pasando datos por post con Jquery
$.post(path, {clave1: textbox-1, clave2: textbox-2}, function(datos){
        alert(datos);
});



//Capturamos los datos en el servidor.

<?php
$clave1 
$_post['clave1'];
$clave2 $_post['clave2'];

//mensage de respuesta.
echo  "Datos Enviado";
?>