PHP Vuelto Loco con variables.

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

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

spysecurityca

#10
Engel-Ex como dicen en Cisco, error de Capa 8 jejeje.

Bien, para todos les explico: ya quisiera que fuese un simple notice, el problema es que sencillamente no llega la variable que le paso por ajax cuando un textbox detecta un Keyup.

Lo tengo configurado de 2 formas.

1 Aplicando un poco de POO a PHP LA CUAL NO ME FUNCIONA :(

2. Sin POO y la cual es la que me funciona.

Ya les inserto los 2 Códigos:

"El Js del Ajax no lo meto ya que el error solo me viene al modificar PHP"

Código (php) [Seleccionar]
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($_REQUEST['nombre']) && isset($_REQUEST['valor'])) {
    $nomb=$_REQUEST['nombre'];
    $valo=$_REQUEST['valor'];
   }else {
    $nomb="Ebebe tu variable está en blanco, no llegó, no existe, ve a escuchar Soda Estereo - No existes - :("."<br>";
    $valo="Ebebe tu variable está en blanco, no llegó, no existe, ve a escuchar Soda Estereo - No existes - :(";
   }
   echo $nomb;
   echo $valo;
   if (isset($_SESSION['orden'])) {
    $nuevaOrden= new NuevaOrden($_SESSION['orden']);
   }else {
    $_SESSION['orden']=array();
    $_SESSION['orden'][$nomb]=$valo;
    $nuevaOrden= new NuevaOrden($_SESSION['orden']);
   }


Código (php) [Seleccionar]

session_start();
   if (isset($_REQUEST['nombre'])) {
    $nomb=$_REQUEST['nombre'];
   }else {
    $nomb="";
   }
   if (isset($_REQUEST['valor'])) {
    $valo=$_REQUEST['valor'];
   }else {
    $valo="";
   }
   if (isset($_SESSION['orden'])) {
    $_SESSION['orden'][$nomb]=$valo;
    foreach ($_SESSION['orden'] as $desc => $val) {
    if ($val=="") {
    unset($_SESSION['orden'][$desc]);
    }
    }
   }else {
    $_SESSION['orden']=array();
    $_SESSION['orden'][$nomb]=$valo;
    foreach ($_SESSION['orden'] as $desc => $val) {
    if ($val=="") {
    unset($_SESSION['orden'][$desc]);
    }
    }
   }
   if (count($_SESSION['orden'])==0) {
    echo "No hay elementos seleccionados";
   }else {
    $arreglo=(json_encode($_SESSION['orden']));
    echo $arreglo;
   }


¿Será problema con PHP POO y Ajax :(?




Es más.

Si agarro y borro todo el PHP y pongo solamente:

Código (php) [Seleccionar]
<?php

if(isset($_REQUEST['valo'])){

$valor=$_REQUEST['valo'];
echo 
$valor;
}

?>


Me sigue tirando el error de que no llega la variable :(, es que ni con eso, osea el archivo como que es sagrado y no lo puedo tocar

#!drvy

#11
Entonces el problema no esta en tu PHP sino en tu llamada ajax.. Muestra el código js..

PD: Existe el botón modificar. No hagas doble post.

PD2: Estas seguro de que es el mismo archivo ?

Saludos

spysecurityca

Si, casualmente cuando le dí a modificar ya lo habías arreglado, sorry por hacerte pasar trabajo.

Aqui el Js.


window.addEventListener("load", iniciarEventos, false);
clase="";
function iniciarEventos(e) {
var cajas = document.getElementsByClassName(clase);
for (var i = 0; i < cajas.length; i++) {
cajas[i].addEventListener('keyup',obtenerDatos,false);
}
}

function obtenerDatos(e) {
var ref=e.target;
var producto=ref.name;
var cantidad=ref.value;
procesarDat(producto,cantidad);
}
var conex3= new XMLHttpRequest();
function procesarDat(pro,can) {
conex3.onreadystatechange=procesarElementos;
conex3.open("GET",'../procesarPedido/orden.php?nombre='+pro+'&valor='+can,true);
conex3.send(null);
}
function procesarElementos() {
if (conex3.readyState==4) {
alert(conex3.responseText);
}else {
alert("conexion fallida");
}
}

MinusFour

En tu primer script con POO nunca mandas a llamar a verificarProductos que es el que genera el string de JSON.

spysecurityca

#14
Hola Minus,

Hice lo que me has dicho y nada no hay cambio, fijate el problema no es POO porque borrando todo y haciendo en PHP solo la verificación de que llegue o no la variable me dice que no llega.

De hecho acabo de hacer en el Ajax que me envie las variables a otro PHP y si me lo agarra.

El problema es en ese PHP :( Será que lo deje intacto, pero la verdad no me gusta quedar al aire.

vladek

Si en ese archivo borrás todo y hacés un var_dump($_GET); llega la data?

spysecurityca

Ok me explico más resumido.

1. capturo datos del Form.

2. Envio datos por GET con ajax.

3. Ajax al estar en onreadystatechange lanza la funcion que verifica que tenga Status 200, lo cual es positivo y me devuelve el responseText por un alert. En el response Text esta el echo de las variables que envío desde Ajax.

El problema es que cuando ingreso directamente al PHP luego de obviamente captar+enviar+verificarRecepcion de variables, me doy cuenta que sencillamente las variables que he enviado no han sido recibidas y me muestra el agradable Notice: Undefined variable

¿Porque cuando hago el envio/consulta en caliente con ajax si envia y recibe el responseText con el contenido de las variables pero cuando entro directamente PHP me dice literalmente que no he enviado nada?

vladek

A qué te referís con "entro directamente"?

spysecurityca

Hola vladek con eso me refiero a que tengo un enlace que me dirige al archivo php.

Allí verifico si todo lo que me mostró Ajax sigue estando en el archivo PHP.

MinusFour

¿Si pero como accedes al archivo?

archivo.php?valor=valor

Debería traerte una respuesta correcta. No para el último archivo que tienes porque ahi estás usando.

Código (php) [Seleccionar]
$_REQUEST['valo']

Necesitas definir bien el nombre de tus variables para evitar este tipo de confusiones.