Foros del Web » Programando para Internet » PHP »

Consulta con uso de arreglos!

Estas en el tema de Consulta con uso de arreglos! en el foro de PHP en Foros del Web. Buenos días señoras y señores :) mi duda es la siguiente, estoy haciendo un pequeño sistema de "Cuotas" por asi decirlo que se trata de ...
  #1 (permalink)  
Antiguo 23/11/2009, 12:33
 
Fecha de Ingreso: agosto-2009
Ubicación: Santiago, Chile
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Consulta con uso de arreglos!

Buenos días señoras y señores :)
mi duda es la siguiente, estoy haciendo un pequeño sistema de "Cuotas" por asi decirlo que se trata de lo siguiente:

El usuario pidio el tener el control de las cuotas que se ingresan, es decir a medida que apreta un boton agregar, se suma un campo ( input) a la pagina sin perder los datos anteriores, se entiende?

yo hice algo asi:

envia.php.

Esta es como el index parte con un campo vacio en donde se ingresa el valor de la primera cuota y con dos botones, un envia y un agregar, el boton envia toma el arreglo completo y lo imprime en la pagina siguiente, ahi no tengo problema,
mi problema es cuando agrego otro campo, mi intencion es solo agregar un campo y mostrar el valor de los datos ingresados anteriormente, osea
sería asi:

| 1 |
(Envia) - (Agregar).

//apreto agregar
| 1 |
| |
//me muestra un campo vacio para ingresar el nuevo dato y el dato anterior
(Enviar) - (agregar).
//apreto agregar nuevamente

| 1 |
| 2 |
| |
//supongamos que agrege un 2 en el nuevo campo. la imprecion seria asi
(envia) - (Agregar)

y asi sucecivamente..

Ahora supongo que apreto. (Enviar).
Me tendria que tomar el valor completo del arreglo y mostrarmelo en otra pagina..
Se entiende, ?? muchas gracias de antemano!
Aqui esta el codigo.

Código PHP:

<?php
//inicializo el valor de i 
$i 0;

//obtengo el cont por el get
$cont $_GET['cont'];


//ARREGLO UN CAMPO
if($_POST['f_agregar']){
    
    
$var_cap $_POST['f_num'];
    
$aux_c serialize($var_cap);
    
$aux_c urlencode($aux_c);
    
$cont += 1;
        
    
header("Location:?cont=$cont&ar_cap=$aux_c");
}

//ENVIO EL ARREGLO PARA QUE SE IMPRIMA EN OTRA PAGINA
if($_POST['f_enviar']){
    
    
$v_1 $_POST['f_num'];
    
// Conversión del arreglo en cadena
    
$aux serialize($v_1);
    
// Conversión de la cadena en una cadena de consulta GET
    
$aux urlencode($aux);
    
header("Location:recibe.php?alumno=$aux");
}
?>
<title>Envia</title>
<form method="post">
<table>
<? 
//Funciona IMPRIME EL ARREGLO QUE SE HA ACEPTADO.
$get_ar $_GET['ar_cap'];

if(
$get_ar != ""){
 
$a_c stripslashes($get_ar);
 
$a_c urldecode($a_c);
 
$a_c unserialize($a_c);
    foreach(
$a_c as $dato){
    echo 
"<tr><th><input type=text name=".$dato." value=".$dato."></th></tr>";
    }
    
 
/* Seleccion la cantidad de valores dentro del arreglo, para determinar cual es la cantidad de arreglos que necesitaremos */
   
  
unset($a_c);
  
  
  
}
echo 
"Ingreso";

 while(
$i<=$cont){ 
   
$i += 1;
   
?>
    <tr><th><input type="text" name="f_num[]" /></th></tr>
    <?
    
}

?>
</table>
<input type="submit" name="f_enviar" value="enviar" />
<input type="submit" name="f_agregar" value="agregar" />
</form>
  #2 (permalink)  
Antiguo 23/11/2009, 12:39
 
Fecha de Ingreso: septiembre-2009
Mensajes: 81
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Consulta con uso de arreglos!

El problema esk no puedes hacer eso con php... Kieres k aparezca un input nuevo cuando le das a agregar pero sin llamar a una nueva pagina? Si eso es lo k kieres debes usar javascript. basicamente el boton agregar tendria una llamada a una funcion en el evento onclick y esa funcion se encargaria de insertar un nuevo input, pero como te digo debes usar javascript para ello.
  #3 (permalink)  
Antiguo 23/11/2009, 12:49
 
Fecha de Ingreso: septiembre-2009
Mensajes: 81
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Consulta con uso de arreglos!

Venga va pk me aburro k sino... xDD

añade el siguiente codigo en el head:
Cita:
function addInput(idDiv){
div=document.getElementById(idDiv);
div.innerHTML+="<input name=\"\" type=\"text\" />";
}
abajo del todo cambia:
Cita:
<input type="submit" name="f_agregar" value="agregar" />
por
Cita:
<input name="f_agregar" value="agregar" onclick="addInput('idDelDiv')" />
Basicamente lo k hace es añadir un input al contenido de un div, por lo tanto la zona en la k kieres añadir los inputs debes de meterla dentro de un div. Y luego al llamas a la funcion recuerda enviarle el id del div k has creado.

Tendras k controlar los identificadores de los inputs a la hora de enviarlo por fromulario. Y en el script en el k realizes la insercion a la db simplemente haz un bucle y los vas añadiendo.
  #4 (permalink)  
Antiguo 23/11/2009, 12:58
 
Fecha de Ingreso: agosto-2009
Ubicación: Santiago, Chile
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Consulta con uso de arreglos!

Ok, mira hice lo que me recomendaste pero me tira un error:

Código PHP:
<head>
<script language="javascript">

function addInput(idDiv){
div=document.getElementById(idDiv);
div.innerHTML+="<input name=\"\" type=\"text\" />";
}

</script>
</head>

<div id="1">
<form method="post">
<table>
<? 
//Funciona IMPRIME EL ARREGLO QUE SE HA ACEPTADO.
$get_ar $_GET['ar_cap'];

if(
$get_ar != ""){
    
 
$a_c stripslashes($get_ar);
 
$a_c urldecode($a_c);
 
$a_c unserialize($a_c);
 
    foreach(
$a_c as $dato){
    echo 
"<tr><th><input type=text name=".$dato." value=".$dato."></th></tr>";
    }
    
 
/* Seleccion la cantidad de valores dentro del arreglo, para determinar cual es la cantidad de arreglos que necesitaremos */
   
echo "<tr><th><input type=text name=f_num[] /></th></tr>";
   
}else{

 while(
$i<=$cont){ 
   
$i += 1;
   
?>
    <tr><th><input type="text" name="f_num[]" /></th></tr>
    <?
    
}

?>
</table>
<input type="submit" name="f_enviar" value="enviar" />
<input type="submit" name="f_agregar" value="agregar" onclick="addInput('1')" />

</form>
</div>
  #5 (permalink)  
Antiguo 23/11/2009, 13:03
 
Fecha de Ingreso: agosto-2009
Ubicación: Santiago, Chile
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Consulta con uso de arreglos!

el error sale en la linea 77 osea donde se termina el </div>
  #6 (permalink)  
Antiguo 23/11/2009, 13:12
 
Fecha de Ingreso: agosto-2009
Ubicación: Santiago, Chile
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Consulta con uso de arreglos!

Sip efectivamente funciona como tu dices, ahora como hago para que los valores se mantengar cuando apreto el input ? :S ese es el mayor problema!! HELP!! PLIS!
  #7 (permalink)  
Antiguo 23/11/2009, 13:23
 
Fecha de Ingreso: septiembre-2009
Mensajes: 81
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Consulta con uso de arreglos!

Creo k deberias de envolver con el div solamente el input ya k si no me ekivoco tu lo k kieres esk aparezca un input debajo del otro. Tal cual lo tienes aparecera debajo no?

No se mantienen los valores de los inputs k has rellenado? es eso lo k preguntas?
El problema esk basicamente estas creando una pagina dentro del div por lo tanto deverias enviarle los valores de los inputs al hacer la llamada. Y una vez dentro recojer esos valores y meterselos a los inputs. Vas a tener k dar identificadores dinamicamente a los inputs y luego recorrer un bucle al k le vas añadiendo los valores k le has pasado.

El tema ya se complica e?? xDD
  #8 (permalink)  
Antiguo 23/11/2009, 13:31
 
Fecha de Ingreso: agosto-2009
Ubicación: Santiago, Chile
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Consulta con uso de arreglos!

se complico ene!! ahora logre hacer lo que u recomendabas, yo hacia lo mismo pero en php con un while y unos indices para actualizar la pagina he enviar el arreglo completo, para mostrarlo, pero ahora es con javascript como mando he inicializo los valores de los input anteriores...me complica muy dificil para mi nivel :(
  #9 (permalink)  
Antiguo 23/11/2009, 13:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 81
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Consulta con uso de arreglos!

xDD en realidad es ajax ¬¬

Lo k puedes hacer es enviarle un array a la funcion con el contenido de los inputs y hacer un bucle k vaya creando los inputs y metiendoles el valor k kieras.

Cita:
function addInput(idDiv,v){
var cadena="";
for (x=0;x<v.length;x++){
cadena+="<input name=\"\" type=\"text\" value=\"v[x]\"/>";
}
div=document.getElementById(idDiv);
div.innerHTML=cadena;
}
v es un array k contiene los valores de cada input. Por lo tanto en lugar de simplemente añadir un input como haciamos hasta ahora lo k aremos sera crear de nuevo el contenido del div con el numero de inputs= a la longitud del array, y cada input tendra el valor de dentro de la posicion del array.
  #10 (permalink)  
Antiguo 23/11/2009, 13:52
 
Fecha de Ingreso: agosto-2009
Ubicación: Santiago, Chile
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Consulta con uso de arreglos!

y el arreglo en que momento se lo paso ? por que el input quedaría asi

Cita:
<input type="submit" name="f_agregar" value="agregar" onclick="addInput('uno,v')" />
Pero v de donde lo saco ?:(
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 10:07.