Código PHP:
Ver original
| ||||
Respuesta: Variables de sesion
Código PHP:
Ver original |
| |||
Respuesta: Variables de sesion Eres un crack, la verdad. Pero he hecho los cambios y ahora si me meto en sesion.php?producto=cane por pantalla aparece el array, segun vaya metiendo datos ["carne","carne","pescado"] pero el script.php no me muestra los datos. De hecho si entro en sesion.php para ver que va grabando, veo que solo está cogiendo datos si los meto yo directamente desde la url. Si lo intento a traves del script, los valores que va cogiendo son null ["carne","carne","pescado",null,null] es decir, está petando el proceso de envío. Adjunto el código del script:
Código:
<script> $(document).ready(function(){ $('#boton').click(function(){ $.ajax({ type:'GET', url:'sesion.php', data:{"producto":$('#texto').val()}, success: function(data){ datos = data; datos = $.parseJSON(data); $.each(datos, function(i,j){ $('#mostrardatos').html(j); }); } }); }); }); </script> |
| ||||
Respuesta: Variables de sesion
Código Javascript:
Ver original |
| |||
Respuesta: Variables de sesion Nada, sigue sin funcionar. Es que ni envia los datos a la variable, ya que si ejecutas sesion.php solo muestra los datos que has ido metiendo a mano, mas los propios null que generas al ejecutar sesion.php pero sin ninguna variable en la url |
| |||
Respuesta: Variables de sesion que podría ser problema de la variable es lo priemr que pensé, así que sustituí ese valor por algo estático, pero sigue sin ir. $.ajax({ * * * * * * * * type:'GET', * * * * * * * * url:'sesion.php', * * * * * * * * data:{'producto':'macarrones'}, * * * * * * * * * * * * * * * * success: function(data){ *blablabla |
| |||
Respuesta: Variables de sesion me vas a matar, pero ya se que tenia la culpa NO era la variable, era que estaba mal la ruta de jquery.js.... Una vez introducido, ahora funciona a las mil maravillas. Muchísimas gracias. |
| ||||
Respuesta: Variables de sesion Cita: Aquí tienes una plantilla, para evitar pequeños errores que pasen desapercibidos por todos:
Iniciado por Gothgauss que podría ser problema de la variable es lo priemr que pensé, así que sustituí ese valor por algo estático, pero sigue sin ir. $.ajax({ * * * * * * * * type:'GET', * * * * * * * * url:'sesion.php', * * * * * * * * data:{'producto':'macarrones'}, * * * * * * * * * * * * * * * * success: function(data){ *blablabla Cita: Por tanto$.ajax({ url: '/path/to/file', type: 'GET', data: {param1: 'value1'}, complete: function(xhr, textStatus) { //called when complete }, success: function(data, textStatus, xhr) { //called when successful }, error: function(xhr, textStatus, errorThrown) { //called when there is an error } });
Código Javascript:
Ver original |
| |||
Respuesta: Variables de sesion Sin tu ayuda desde luego habria sido imposible. Ahora lo que quiero es más sencillito. Supongamos que cada producto va cifrado por un código y la cantidad de productos que va a comprar. Por ejemplo, hay 3 grupos de productos: Carne, pescado, verdura. Dentro de cada producto hay subproductos, por ejemplo en pescado azul y blanco. Y luego los kilos de compra: 1,2,3.... Entonces mi idea es grabar en el array algo así: pa3, es decir, seria pescado azul 3 kg Lo que quiero ahora es desmembrar por caracteres con jquery, con algun selector, aunque no se cual es el más adecuado, para uqe despiece ese pas en p a 3 y asi mostrarlo bonito al cliente en su cesta de la compra. Voy a ver si doy con el selector adecuado |
| ||||
Respuesta: Variables de sesion Cita: Es más sencillo de lo que piensas. Requieres arrays multidimensionales, en concreto uno bidimensional muy sencillito.
Iniciado por Gothgauss Sin tu ayuda desde luego habria sido imposible. Ahora lo que quiero es más sencillito. Supongamos que cada producto va cifrado por un código y la cantidad de productos que va a comprar. Por ejemplo, hay 3 grupos de productos: Carne, pescado, verdura. Dentro de cada producto hay subproductos, por ejemplo en pescado azul y blanco. Y luego los kilos de compra: 1,2,3.... Entonces mi idea es grabar en el array algo así: pa3, es decir, seria pescado azul 3 kg Lo que quiero ahora es desmembrar por caracteres con jquery, con algun selector, aunque no se cual es el más adecuado, para uqe despiece ese pas en p a 3 y asi mostrarlo bonito al cliente en su cesta de la compra. Voy a ver si doy con el selector adecuado $productos = array( array("Pescado", "azul", "3"), array("Pescado", "violeta", "1"), array("Saltamonte", "turquesa", "1") ) Y ya, tienes un array con todos los datos. Ahora, para leerlo pues sencillito foreach($productos as $p){ echo p[0]; // Pescado echo p[1]; // azul echo p[2]; // 3 // a cada vuelta examinará el siguiente elemento del array } Asunto resuelto. |
| |||
Respuesta: Variables de sesion La verdad es que si parece mucho más sencillo e intuitivo, pero no se como plasmarlo en mi código. Es decir, lo entiendo pero no se ocmo ejecutarlo. Entiendo uqe todo esto tengo que hacerlo sólo en sesion.php:
Código:
modificar el echo y sustituirlo por un foreach para que vaya recorreindo el array y también modificar $_SESSION['producto'] = array(); por un esqueleto que establezca un array dentro de cada array. ¿Sería algo tal que así?:<?session_start(); if(!is_array($_SESSION['producto']) OR empty($_SESSION['producto'])){ $_SESSION['producto'] = array(); $_SESSION['producto'][]= $_GET['producto']; } else { $_SESSION['producto'][]= $_GET['producto']; } echo json_encode($_SESSION['producto']); ?>
Código:
$_SESSION['producto']= array(array()); |
| |||
Respuesta: Variables de sesion En sesion.php pondría entonces algo así:
Código:
aunque eso de array(array(3)) me chirria muchísimo <?session_start(); if(!is_array($_SESSION['producto']) OR empty($_SESSION['producto'])){ $_SESSION['producto'] = array(array(3)); $_SESSION['producto'][]= $_GET['producto']; } else { $_SESSION['producto'][]= $_GET['producto']; } foreach($_SESSION['producto'] as $p){ echo json_encode(p[0]); echo json_encode(p[1]); echo json_encode(p[2]); } ?> |
| ||||
Respuesta: Variables de sesion Cita: json_encode tiene la capacidad ( y en esencia no tiene más que tal función) de convertir arrays en un código JSON. Con hacer
Iniciado por Gothgauss En sesion.php pondría entonces algo así:
Código:
aunque eso de array(array(3)) me chirria muchísimo<?session_start(); if(!is_array($_SESSION['producto']) OR empty($_SESSION['producto'])){ $_SESSION['producto'] = array(array(3)); $_SESSION['producto'][]= $_GET['producto']; } else { $_SESSION['producto'][]= $_GET['producto']; } foreach($_SESSION['producto'] as $p){ echo json_encode(p[0]); echo json_encode(p[1]); echo json_encode(p[2]); } ?> echo json_encode($array) es suficiente, la función recorrerá el array y lo convertirá a una salida en formato JSON. De modo que no has de usar para ello foreach. Para meter dentro de un registro de un array otro array basta con $array[0][] = $registro1; $array[0][] = $registro2; $array[0][] = $registro3; Y por tanto luego accedes $array[0][0] $array[0][1] $array[0][2] Y bueno, usa la misma lógica y proyéctala hasta el infinito, por lo que pueden haber registros $array[1][3][2][0][4][1] que expresado de una manera ordenada son muchísimos array encadenados unos dentro de otros. |
| |||
Respuesta: Variables de sesion El problema radica en que yo no se cuantos productos va a comprar el cliente, por lo que no se cuantos arrays voy a necesitar. De la forma: $_SESSION['producto'] = array(array(3)); se que está mal hecho pero lo que intento es hacer que la $_SESSION['producto'] sea igual a un array de otro array con 3 campos. Lo que no se es como meter, como me dices $array[0][] = $registro1; $array[0][] = $registro2; $array[0][] = $registro3; de manera dinámica, es decir, como ir recorriendo el array para ir metiendolo. Poruqe supongamos que compra 20 productos, se que el producto 20 sería: $array[20][] = $registro1; $array[20][] = $registro2; $array[20][] = $registro3; pero no se como hacer para ir aumentando ese número. Tengo que hacerlo con un for y primero, antes de nada, contar todos los productos que va a comprar? |
| ||||
Respuesta: Variables de sesion Muy sencillo. Como con [] creas un nuevo registro dentro del array (al final del array). Como dije antes, para hacer un nuevo registro de array puedes usar []. $array[] = array("valor1","valor2","valor3"); El nuevo registro será un array al que meterás 3 valores. Cada vez que se ejecute añadirá un nuevo registro al final y a ese registro 1 array con 3 registros. Hasta el infinito. |
| |||
Respuesta: Variables de sesion Sigue dando error
Código:
Fatal error: [] operator not supported for strings in /home/provisio/public_html/sesion.php on line 5<?session_start(); $_SESSION['producto'][0][] = $variable1; $_SESSION['producto'][0][]=$variable2; $_SESSION['producto'][0][]=$variable3; foreach(json_encode($_SESSION['producto']) as $p){ echo $p[0][0]; echo $p[0][1]; echo $p[0][2]; } ?> He probado a cambiar el texto a :
Código:
pero ahora, aunque no me da error, no me devuielve ningun resultado. Aunque he probado quitando el foreach y poniendolo a mano y si me recoge el valor, pero claro esto sería para casos estáticos <?session_start(); $variable1 = 5; $variable2 = 6; $variable3 = 7; $array[0][] = $variable1; $array[0][]=$variable2; $array[0][]=$variable3; foreach($array as $p){ echo $p[0][0]; echo $p[0][1]; echo $p[0][2]; } Última edición por Gothgauss; 14/06/2012 a las 07:57 |
| |||
Respuesta: Variables de sesion Bueno pues ya tengo el código sesion.php aunque me da que mi solución es bastante chapucera:
Código:
Ahora voy a mirar como implementarlo en .ajax() para que reciba el string y lo descomponga.<?session_start(); $variable1 = $_GET['producto']; $variable2 = $_GET['tipo']; $variable3 = $_GET['peso']; $mas = count($_SESSION['activo']); $mas2 = $mas + 1; $_SESSION['activo'][$mas2][] = $variable1; $_SESSION['activo'][$mas2][] = $variable2; $_SESSION['activo'][$mas2][] = $variable3; for($i=0;$i<count($_SESSION['activo']);$i++){ echo "[".json_encode($_SESSION['activo'][$i][0]).","; echo json_encode($_SESSION['activo'][$i][1]).","; echo json_encode($_SESSION['activo'][$i][2])."]"; } ?> De momento he añadido
Código:
para que recoga los 3 valores, los cuales si está enviando, pero me falta recibirlos $.ajax({ * * * * * * * * type:'GET', * * * * * * * * url:'sesion.php', * * * * * * * * data:"producto="+$var1+"personas="+$var2+"fecha="+$var3;, * * * * * * * * * * * * * * * * success:... Última edición por Gothgauss; 14/06/2012 a las 11:45 |
| ||||
Respuesta: Variables de sesion EL métood planteado al principio debería funcionar. Si no lo hace es porque echo $p[0][0]; echo $p[0][1]; echo $p[0][2]; Eso supone que quieres sustituir el registro 0, la cuestión es que: Pero $array[] = array($a,$b,$c); debe funcionar porque el contador va incrementándose sin necesidad de variables ajenas. Un saludo |
| |||
Respuesta: Variables de sesion OK Ahora estoy intentando recoger ya los datos del array de php en la parte de ajax, pero llevo todo el día mirando y volviendome loco. La verdad es que hay poca información sobre algo tan específico :( edito Respecto a sesion.php he vuelto a probar como me dices, con el siguiente código y no me va:
Código:
lo único uqe me muestra al hacer la entrada directa por url a sesion.php es: val y cada vez que actualizo, como es lógico vuelve a sacar por pantalla un val más <?session_start(); $variable1 = $_GET['producto']; $variable2 = $_GET['personas']; $variable3 = $_GET['fecha']; $_SESSION['carga'][] = array("valor1","valor2","valor3"); $_SESSION['carga'][0][] = $variable1; $_SESSION['carga'][0][]=$variable2; $_SESSION['carga'][0][]=$variable3; foreach($_SESSION['carga'] as $p){ echo $p[0][0]; echo $p[0][1]; echo $p[0][2]; } ?> Última edición por Gothgauss; 14/06/2012 a las 16:47 |
| ||||
Respuesta: Variables de sesion <?session_start(); $variable1 = $_GET['producto']; $variable2 = $_GET['personas']; $variable3 = $_GET['fecha']; $_SESSION['carga'][] = array($variable1,$variable2,$variable3); ?> Vamos a ver, el array está formado por las tres variables.... valor1, valor2 y valor3 qué sentido tiene |
| |||
Respuesta: Variables de sesion Vale, ya está. Me ha costado, pero yo creo que tantas horas dedicdas a esto merman mi capacidad de reaccion... jejeje EL lado de sesion.php ya ha quedado niquelado:
Código:
Ahora resta ver como recogo los datos del array, ahora que ya estan convertidos en json <?php session_start(); $variable1 = $_GET['producto']; $variable2 = $_GET['personas']; $variable3 = $_GET['fecha']; $_SESSION['carga'][] = array($variable1,$variable2,$variable3); echo json_encode($_SESSION['carga']) ?> |
| ||||
Respuesta: Variables de sesion <?session_start(); $variable1 = $_GET['producto']; $variable2 = $_GET['personas']; $variable3 = $_GET['fecha']; if(!empty($variable1) AND !empty($variable2) AND !empty($variable)){ foreach($_SESSION['carga'] as $s){ if(in_array(array($variable1,$variable2,$variable3 ),$s)){ echo "Una de las variables ya existe en el registro"; } else { $_SESSION['carga'][] = array($variable1,$variable2,$variable3); json_encode($_SESSION['carga']); } } } ?> Primero comprueba que ninguna esté vacía, luego que alguno de los valores no exista en alguno de los índices del array session y si todo es falso imprime. Como no he comprobado que funcione, haz las pruebas. |
| |||
Respuesta: Variables de sesion No me hace falta comprobar uqe estén vacias porque lo tengo restringido desde la pagina que se lanza a sesion.php, es decir son campos obligatorios a rellenar. En cuanto a que no estén repetidos, ¿porque no iban a poder estarlo? Es decir, puede que si puedan estar repetidas |
| |||
Respuesta: Variables de sesion es decir algo como :
Código:
success: function(data){ var matriz = jQuery.parseJSON(data) for(i=0;i<matriz.leght;i++){ for(j=0;j<3;j++){ $('#mostrar').prepend(matriz[i][j]); } } } |
| ||||
Respuesta: Variables de sesion Cita: , success: function(data){ var matriz = jQuery.parseJSON(data); $.each(matriz, function(i,v){ $("#mostrar").append("INDICE:"+i+" variable1:"+v[0]+"; variable2:"+v[1]+";variable3:"+v[2]); }); } |
| |||
Respuesta: Variables de sesion ME lanza el siguiente error la consola de Chrome: [Array[3] 0: "carne" 1: "roja" 2: "20" length: 3 __proto__: Array[0] ] lili.php:15 Uncaught TypeError: Cannot read property 'length' of null jquery.js:2 |
| |||
Respuesta: Variables de sesion al cambiar el código directamente me sale este error: Uncaught SyntaxError: Unexpected token ) y al meter algo en el campo para que funcione, tras eso, meto la m y me sale: ReferenceError: m is not defined |
Etiquetas: |