Nueva pregunta

Pregunta:

Fecha: 03-12-2018 06:42:22 (En Español)

Pasar el valor de un ID a una variable php[No resuelta]

hola llevo ya varios dias con este problema y he consultado por todos lados y nadie sabe ayudarme estoy realizando una pagina en donde quiero que el usuario pueda escoger una opcion y dependiendo de la opcion aparezcan otras opciones(select multiple) y que las opciones que el usuario escoja yo las pueda almacenar en una variable php para luego almacenarla en la BD,esto lo estoy haciendo con php y ajax mi problema es en el ajax ya que no puedo pasar el valor almacenado en el ID y llevarlo a PHP


dejo el codigo php

envio.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>empresa</title>
<link rel="stylesheet" href="style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">

</script>

</head>
<body>
<?php
session_start();

?>
<div class="logo">
<img src="img/logo.jpg">
</div>

<header>
<nav class="navegacion">
<ul class="menu">
<li><a href="">Envio de Sangre</a></li>
<li><a href="soli_despacho.php">Despacho </a></li>
<li><a href="stacces.php">Servicios en Transitos</a></li>
</ul>
</nav>
</header>
<center>
<h1 style="font-size: 16px;">Envio de sangre</h1><br><br>

<h2>Envio de Sangre Completa</h2><br><br>
<div class="container">
<div class="row">
<div class="col-md-4">
<p>Cantidad de coolers
<select id="cantidad" name="cantidad" class="form-control">
</select>
</p>
</div>
<div class="col-md-4">
<p>Coolers
<select id="coolers" name="coolers" class="form-control">
</select>
</p>
</div>
<div class="col-md-4">
<p><br><button id="enviar" type="submit" class="btn btn-default btn-block">Enviar</button></p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p><b>El resultado es: </b></p><p id="resultado1"></p>

</div>
</div>
</div>

<script type="text/javascript" src="js/index.js"></script>

</center>
</body>
</html>


este es el codigo ajax

index.js

$(document).ready(function(){
$.ajax({
type: 'POST',
url: 'cargar_listas.php'
})
.done(function(listas_rep){
$('#cantidad').html(listas_rep)
})
.fail(function(){
alert('Hubo un errror al cargar la cantidad')
})

$('#cantidad').on('change', function(){
var id = $('#cantidad').val()
$.ajax({
type: 'POST',
url: 'cargar_coolers.php',
data: {'id': id}
})
.done(function(listas_rep){
$('#coolers').html(listas_rep)
})
.fail(function(){
alert('Hubo un errror al cargar los coolers')
})
})

$('#enviar').on('click', function(){
var resultado = 'Cantidad: ' + $('#cantidad option:selected ').text() +
' Coolers elegido: ' + $('#coolers option:selected').text()
$('#resultado1').html(resultado);

$.post( "pagina.php", {resultado:resultado});
});

});

estos los archivos de procesos

cargar_listas.php

<?php
require_once 'conexion2.php';
function getListasRep(){
$mysqli = getConn();
$query = 'SELECT * FROM `cantidad`';
$result = $mysqli->query($query);
$listas = '<option value="0">Elige cantidad</option>';

while($row = $result->fetch_array(MYSQLI_ASSOC)){
$listas .= "<option value='$row[id]'>$row[cantidad]</option>";

}
return $listas;
}
echo getListasRep();
?>

cargar_coolers.php


<?php
require_once 'conexion2.php';
function getVideos(){
$mysqli = getConn();
$id = $_POST['id'];
$query = "SELECT * FROM `coolers` WHERE id_lista = $id";
$result = $mysqli->query($query);
$videos = '<option value="0">Elige una opción</option>';
while($row = $result->fetch_array(MYSQLI_ASSOC)){
$videos .= "<option value='$row[id]'>$row[cooler]</option>";

}
return $videos;
}
echo getVideos();
?>


y este es el archivo php a donde estoy enviando el id para pasarlo a php

pagina.php

<?php

$resultado = $_POST["resultado"];
print($resultado);

?>

aclaro un poco lo que hace el codigo, la funcion del codigo es darle al usuario escoger una opcion y dependiendo de que elija saldran otras opciones el funcionamiento del Select esta completamente bien y el de el AJAX igual esta perfecto ahora en funcion del ajax al fina esta este codigo

$('#enviar').on('click', function(){
var resultado = 'Cantidad: ' + $('#cantidad option:selected ').text() +
' Coolers elegido: ' + $('#coolers option:selected').text()
$('#resultado1').html(resultado);

aqui es donde asigo a RESULTADO como la variable que contendra todos los valores selecionado y son pasados al id en esta parte $('#resultado1').html(resultado);

yo quiero poder pasar los valores que estan almacenados en id para convertirlos en una variable y para eso utilizo la siguiente funcion

$.post( "pagina.php", {resultado:resultado});

pero me voy a PAGINA.PHP(url) y me dice esto

Notice: Undefined index: resultado in C:\xampp\htdocs\empresa\pagina.php on line 3

de verda que he intentado de todo para pasar la variable por la url y nada me funciona no quiero desistir del codigo porq ya tengo la mayor parte echo y solo falta es detalle d pasar los datos a php si me pueden ayudar estare atento a sus respuestas
Etiquetas: AJAX - Javascript - JQuery - PHP Votos: 0 - Respuestas: 9 - Vistas: 11 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 03-12-2018 10:00:57 Creo es la segunda vez que publicas esto y creo haberla respondido, no das muchos detalles de como pasas la data y procesas la data a tu php, pero creo debería ser asi:

    En el javascript que envia la info:
    $('#enviar').on('click', function(){
       var resultado = 'Cantidad: ' + $('#cantidad option:selected ').text() + ' Coolers elegido: ' + $('#coolers option:selected').text();
       $('#resultado1').html(resultado);
    
       $.post('archivo.php',{resultado:resultado}).done(function(resp){
          //respuesta del tu php
          alert(resp);//Alertamos con la respuesta de php
       }).fail(function(err){
    
       })
    
    }
    


    El php que recibe la data:

    $resultado = $_POST['resultado'];
    
    if($resultado==""){
       echo "no se envio la data";
       exit;
    }else{
       //procesas la data enviada
       //...
       //...
    
       echo "Datos Procesados";
       exit;
    }
    


    parte de estos ejemplos para hacer tus modificaciones
      Votos: 1 - Link respuesta
     
  • Fecha: 03-12-2018 10:05:17 y el error que te da es porque la variable no esta definida, esto debido a que estas esperando un POST, así que armar la url y llegar no va a hacer nada, para ello deberías hacer algo así:

    if(isset($_GET['resultado'])){
       //lo que haces si la peticion es de tipo get
       //Ejemplo https://mipagina.com?resultado=valor
    }else if(isset($_POST['resultadop'])){
       //lo que haces si la peticion es de tipo post
    }else if(!isset($_GET['resultado']) || !isset($_POST['resultado'])){
       //lo que hjaces si se esta accediendo a la pagina bajo ninguna de las otras dos peticiones o si la variable esperada no existe
    }
    


    claro esto es un ejemplo, deberías tener otras validaciones de seguridad por ejemplo.
      Votos: 1 - Link respuesta
     
  • Fecha: 03-12-2018 10:13:37 hola php se compila del lado del servidor cada ves que entras a una ruta este procesara una peticion nueva por eso cuando te vas a la pagina por la ulr no te reconoce la variable asignada.

    puedes intentar lo siguiente

    $.ajax({
    type: 'POST',
    url: 'cargar_coolers.php',
    data: {'id': id}
    })
    .done(function(listas_rep){
    $('#coolers').html(listas_rep)
    })
    .fail(function(){
    alert('Hubo un errror al cargar los coolers')
    })
    


    codigo php

    
    <?php 
    //recuperamos la informacion 
    
    $id = !empty($_POST['id']) ? $_POST['id'] : $_REQUEST['id'];
    //creamos un arreglo
    $data = [
         'dataphp'=>$id
    ];
    //traformamos a json
    $data  = json_encode($data,true);
    header('Content-type: application/json; charset=utf-8');
      echo json_encode($data, JSON_FORCE_OBJECT);
    


    en la consola de peticiones de tu navegador puedes verificar si te respondio la varible que has enviado
    es pero te sea de ayuda
      Votos: 1 - Link respuesta
     
  • Fecha: 03-12-2018 12:02:10 hola gracias por sus respuestas Carlos si es la segunda ves que lo publico porq todavia no logro que funcione acabo de hace las modificaciones que me indicaste y todavia no funciona, dime que detalles necesitas saber o que archivo necesitas para asi lograr hacer que funcione aun sigue sin funcionar no se porque el java script no hace el envio del archivo el echo que creaste dice "NO SE ENVIO LA DATA" espero me puedan ayudar gracias   Votos: 0 - Link respuesta
     
  • Fecha: 03-12-2018 12:35:09 en la consola del navegador te aparece algún error?, verificala durante el proceso y ve que te aparece.   Votos: 1 - Link respuesta
     
  • Fecha: 04-12-2018 01:50:03 hola efectivamente haqy una serie de errores aqui los dejo

    los primeros son errores de JQUERY

    jQuery.Deferred exception: resultado is not defined ReferenceError: resultado is not defined
    at HTMLDocument.<anonymous> (http://localhost/acin/js/index.js:32:35)
    at j (https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js:2:29948)
    at k (https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js:2:30262) undefined

    el siguiente error de la primera linea

    at HTMLDocument.<anonymous> (http://localhost/acin/js/index.js:32:35)

    me lleva a este codigo

    $.post('archivo.php',{resultado:resultado}).done(function(resp){
    //respuesta del tu php
    alert(resp);//Alertamos con la respuesta de php
    }).fail(function(err){
    })

    estare revisando porq


    luego esta estos errores


    jquery.min.js:2 Uncaught ReferenceError: resultado is not defined
    at HTMLDocument.<anonymous> (index.js:32)
    at j (jquery.min.js:2)
    at k (jquery.min.js:2)

    aqui presenta un error en la variable resultado del JAVA

    ojo aclaro que la variable resultado la estoy pasando a otra pagina estos errores me salen en el archivo envio.php y la variable resultado la estoy pasando al archivo ARCHIVO.PHP

    que atento a sus respuesta
      Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2018 02:03:15 acabo de entender algo por este error

    "resultado" is not defined

    la variable resultado no esta conteniendo los valores osea si los tiene por un momento pero luego queda en blanco creo entonces al parecer yo tengo que enviar la variable antes de imprimirla haré esa prueba
      Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2018 02:37:58 hola de nuevo ya logre resolver los problemas que salian en la consola efectivamente como habia dicho la variable resultado cuando yo la pasaba por la url no tenia valor porq despues que se imprimia en pantalla se vaciaba asi que lo que hice fue que movi el codigo de por url antes de que se imprima por pantalla asi :

    $(document).ready(function(){
      $.ajax({
        type: 'POST',
        url: 'cargar_listas.php'
      })
      .done(function(listas_rep){
        $('#cantidad').html(listas_rep)
      })
      .fail(function(){
        alert('Hubo un errror al cargar la cantidad')
      })
     
      $('#cantidad').on('change', function(){
        var id = $('#cantidad').val()
        $.ajax({
          type: 'POST',
          url: 'cargar_coolers.php',
          data: {'id': id}
        })
        .done(function(listas_rep){
          $('#coolers').html(listas_rep)
        })
        .fail(function(){
          alert('Hubo un errror al cargar los coolers')
        })
      })
     
      $('#enviar').on('click', function(){
       var resultado = 'Cantidad: ' + $('#cantidad option:selected ').text() + ' Coolers elegido: ' + $('#coolers option:selected').text();
    
       $.post('envio.php',{resultado:resultado}).done(function(resp){
          //respuesta del tu php
          alert(resp);//Alertamos con la respuesta de php
       }).fail(function(err){
       })
    
       $('#resultado1').html(resultado);
      });
     
    });
    



    de este modo los errores en la consola desaparecen y me sale el alert de que los datos fueron procesados peeeeerroo todavia no imprime la variable resultado en el archivo ARCHIVO.PHP

    no se porq si ya me dice la alerta de que los datos fueron procesados porq la variable sigue vacia en archivo.php aclaro que ya la consola de envi.php esta en blanco ya no hay errores ahora revisare la de archivo.php a ver si logro algo

    les dejo el codigo que estoy utilzando en archivo.php para llamar la variable resultado


    <?php
    if(isset($_GET['resultado'])){
    $var=$_GET['resultado'];
    print($var);
    //lo que haces si la peticion es de tipo get
    //Ejemplo https://mipagina.com?resultado=valor
    }else if(isset($_POST['resultadop'])){
    $var2=$_POST['resultado'];
    print($var2);
    //lo que haces si la peticion es de tipo post
    }else if(!isset($_GET['resultado']) || !isset($_POST['resultado'])){
    //lo que hjaces si se esta accediendo a la pagina bajo ninguna de las otras dos peticiones o si la variable esperada no existe
    }
    ?>

    quedo atento a sus respuestas
      Votos: 0 - Link respuesta
     
  • Fecha: 04-12-2018 04:08:11 Es que copiaste y pegaste pero no revisaste, recuerda que somos humanos y nos equivocamos hasta al escribir, en esta linea hay una letra p demás en la variable POST

    
    }else if(isset($_POST['resultadop'])){
    
    
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión