Foros del Web » Programando para Internet » PHP »

Cargar matriz php

Estas en el tema de Cargar matriz php en el foro de PHP en Foros del Web. Hola mil gracias por su ayuda tengo el siguiente incoveniente. estoy cargando una matriz en php en un formulario. la verdad es que me carga ...
  #1 (permalink)  
Antiguo 05/05/2011, 14:50
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Pregunta Cargar matriz php

Hola mil gracias por su ayuda tengo el siguiente incoveniente. estoy cargando una matriz en php en un formulario. la verdad es que me carga pero esto carga cada que e actualiza el formulario...

$cod = $_GET['Codigo'];
$a[$i][0]=$cod;

el inconveniente es que siempre que cargo me toca el primer dato que ingrese antes utilizaba _POST pero me toco recurrir al get para ver las variables, cada que cargo uno nuevo en la url se ve index.php?Codigo=2&Codigo=1

pero al imprimir echo (isset($_GET['Codigo'])); "tambien lo e imprimirdo echo $_GET['Codigo'];"siempre me imprime 1 que es el primer valor que cargo,

alguien me podria indicar por que sucede esto.
  #2 (permalink)  
Antiguo 05/05/2011, 15:11
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cargar matriz php

buenas,
fijate en el nombre de los parametros. ambos tienen el mismo identificador. cuando php lo recibe php no es capaz de crear un array debido a que los nombres son iguales. es como si definieras una variable con un valor y mas adelante vuelves asignarle un nuevo valor a la variable. para que php pueda recibir un array al final del nombre debes incluir un par de corchete ([]).

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 05/05/2011, 15:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cargar matriz php

Eso sucede porque al nombrar dos variables con el mismo nombre, solo un valor se conserva.

No puedes pasar dos datos diferentes usando una misma variable.

Edito: así es, la solución es esa @zerokilled
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 05/05/2011, 15:18
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Cargar matriz php

Muchas Gracias por sus respuestas, podrian ser un poco mas especificos, acabe de pobrar y cada que cargo el el formulario, me doy cuenta que me remplaza los campos que, me podrian dar un ejemplo... ?

hice esto $a[$i][1]=$i; y es el contador para que cada que recargue el form avance 1. cuando lo imprimo lo imprimo con un ciclo for
for($p=0; $p<$i; $p++){
?>
<td width="169"><input name="Descripcion" type=\"text\" value=<?php echo $a[$i][1]; ?>></td>
?>
pero cada que actualizo remplaza los valores con el ultimo...
espero ser un poco mas claro mil gracias
  #5 (permalink)  
Antiguo 05/05/2011, 15:21
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Cargar matriz php

Cita:
Iniciado por jchavez Ver Mensaje
Hola mil gracias por su ayuda tengo el siguiente incoveniente. estoy cargando una matriz en php en un formulario. la verdad es que me carga pero esto carga cada que e actualiza el formulario...

$cod = $_GET['Codigo'];
$a[$i][0]=$cod;

el inconveniente es que siempre que cargo me toca el primer dato que ingrese antes utilizaba _POST pero me toco recurrir al get para ver las variables, cada que cargo uno nuevo en la url se ve index.php?Codigo=2&Codigo=1

pero al imprimir echo (isset($_GET['Codigo'])); "tambien lo e imprimirdo echo $_GET['Codigo'];"siempre me imprime 1 que es el primer valor que cargo,

alguien me podria indicar por que sucede esto.
  #6 (permalink)  
Antiguo 05/05/2011, 15:23
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Cargar matriz php

Muchas Gracias por sus respuestas, podrian ser un poco mas especificos, acabe de pobrar y cada que cargo el el formulario, me doy cuenta que me remplaza los campos que, me podrian dar un ejemplo... ?

hice esto $a[$i][1]=$i; y es el contador para que cada que recargue el form avance 1. cuando lo imprimo lo imprimo con un ciclo for
for($p=0; $p<$i; $p++){
?>
<td width="169"><input name="Descripcion" type=\"text\" value=<?php echo $a[$i][1]; ?>></td>
?>
pero cada que actualizo remplaza los valores con el ultimo...
espero ser un poco mas claro mil gracias
  #7 (permalink)  
Antiguo 05/05/2011, 16:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cargar matriz php

la verdad que llevo rato leyendo y no logro entender tu explicacion. lo que no tengo claro son dos cosas: ¿estas enviando un array desde php a un formulario o viceversa? supongo que te refieres enviar un array desde un formulario a php, porque de lo contrario no estarias mencionando el factor de haber cambiando de post a get para ver las variables. lo otro que no comprendo es cuando hablas del contador que se actualiza. encima de eso tu redaccion es incoherente. en definitiva no comprendo que quieres hacer.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 05/05/2011, 16:37
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Cargar matriz php

De Nuevo Mil Y Mil Gracias. primero tratare de explicar brevement lo que trato de hacer.

Quiero hacer un formulario donde se carguen productos, varios productos elementos algo asi

Codigo Descrip Canti
1 Arroz 4
2 Frijol 3

tengo el formulario de la siguiente forma.

<td colspan="5"><table width="724" border="1">
<tr>
<td width="101"><input name="Codigo" id="Codigo"></td>
<td width="101"><input name="Cantidad" id="Cantidad"></td>
<td width="101"><input name="ValorU" id="Valor U"></td>
<td width="101"><input name="ValorT" id="Valor T"></td>
<td width="101"><input name="Cargar" type=submit value="Cargar"></td>
<input type="hidden" name="contador" value="<?php echo $i;?>">
</tr>
al darle en el boton cargar lo que quiero es ir almacenando ese producto en un areglo y el contador lo uso para poner el numero de la fila,,, algo asi

<?php
if ($_GET['Codigo'] !=NULL){
$a = array();
$cod = $_GET['Codigo'];
$a[0][$i]=$cod;$a[$i][1]=$i;$a[$i][2]=$_GET['Cantidad'];$a[$i][3]="0-2";
?>
<td colspan="5"><table width="724" border="1">
<?
echo (isset($_GET['Codigo']));
print_r($a);
for($p=0; $p<$i; $p++){
?>
<tr>
<td width="169"><input name="Codigo" type=\"text\" value=<?php echo $a[0][$i]; ?>></td>
<td width="169"><input name="Descripcion" type=\"text\" value=<?php echo $a[$i][1]; ?>></td>
<td width="169"><input name="Descripcion" type=\"text\" value=<?php $a[$i][2]; ?>></td>
<?
}
exit;
}
?>

Cuando yo recargo el form el areglo actualiza los campos con el ultimo registro que cargo, si el primer registro que cargue tiene el codigo 1, el lo almacena bien
Codigo Descrip Canti
1 Arroz 4
Cuando el formulario se actualiza me muestra el formulario y digito el nuevo codigo 2 digamos, y le doy grabar el areglo lo que hace es lo siguiente.
Codigo Descrip Canti
2 Frijol 3
2 Frijol 3

osea no me crea el nuevo o no se que es lo que pasa en verdad.... Mil gracias por su ayuda
  #9 (permalink)  
Antiguo 05/05/2011, 16:47
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Cargar matriz php

Claro que no te guarda los datos. Cada vez que refrescas la página se interpreta el código PHP de nuevo, los datos anteriores es como si no existieran.

Si quieres guardar datos durante un tiempo tienes que utilizar variables de sesión mediante $_SESSION.

Pero, en realidad, lo ideal sería que guardases esos datos en una base de datos.
  #10 (permalink)  
Antiguo 05/05/2011, 18:47
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Cargar matriz php

@jchavez,
evidentemente la forma correcta es la que menciona @alexg88, con sessiones. la forma que tu estas planteandolo es posible pero es un apaño sucio y supongo que podria tener alguna implicacion en rendimiento u otros efectos -desconozco porque aun mis conocimientos en php son escasos. por otro lado, notese que en ese planteamiento los mismos datos se envian una y otra vez. a modo de analisis, el codigo consiste en siempre asignar el mismo nombre a los campos pero con un par de corchetes al final para que php lo reciba como array. luego, en php recreas los campos con el mismo nombre y los valores recibidos. pero por favor, entienda que no es la mejor manera de hacerlo.

Código PHP:
<form action="<?php echo $PHP_SELF?>">
<h1>List item</h1>
<ul><li><input name="item[]" /></li>
<?php
foreach($_GET['item'] as $value) if(!preg_match('/^\s*$/'$value)) echo "<li><input name=\"item[]\" value=\"$value\" /></li>\n";
?></ul>
<input type="submit" /></form>
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #11 (permalink)  
Antiguo 09/05/2011, 13:58
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Información Respuesta: Cargar matriz php

Muchas Gracias por su colaboracion, el codigo me carga las variables como queria muchas gracias, tengo una duda, para cargar la matriz con cada campo ? como seria.

igual si eso se va a cargar a una BD, pero cuando se carguen todos los items. me podrian indicar como cargaria la matriz eh intentado y no me funciona gracias.
foreach($_GET['item'] as $value);
$a[0][$i]=$value;
  #12 (permalink)  
Antiguo 09/05/2011, 15:18
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Cargar matriz php

estoy haciendo esto almacenando el array a la session como uds me recomendaros.

($_SESSION[carrito]);
$_SESSION[carrito][$i] = array(Codigo => "1", Descripcion => "20", Cantidad => "1");

este codigo me imprime la lista correctamente me funciona pero no encuentro como hacer que esa lista quede cargada en el array,
<?php
foreach($_GET['item'] as $value) if(!preg_match('/^\s*$/', $value)) echo "<li><input name=\"item[]\" value=\"$value\" /></li>\n";
?></ul>

muchas gracias por su tiempo, es de mucho valor para mi.
  #13 (permalink)  
Antiguo 10/05/2011, 22:57
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota
Mensajes: 35
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Cargar matriz php

Muchas Gracias a todos, ya he solucionado mi problema eh creado una tabla temporal donde cargare los productos de cada pedido y los voy mostrando, con los datos completos, y al guardar la tabla borrara los items de cada venta, mil gracias a todos

Etiquetas: matriz
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 15:07.