Foros del Web » Programando para Internet » PHP »

arreglo de cajas de texto

Estas en el tema de arreglo de cajas de texto en el foro de PHP en Foros del Web. Hola. Tengo un codigo en php que arma a partir de una base de datos en mysql, un arreglo de cajas de texto. Lo que ...
  #1 (permalink)  
Antiguo 20/10/2004, 14:45
 
Fecha de Ingreso: octubre-2004
Ubicación: Mendoza
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
arreglo de cajas de texto

Hola.
Tengo un codigo en php que arma a partir de una base de datos en mysql, un arreglo de cajas de texto.
Lo que ingresa el usuario, lo graba bien. El problema es cuando recargo la pagina, porque necesito que cada valor ingresado en las cajas de texto, me los muestre en su correspondiente lugar.
Pero, solo me muestra el ultimo valor ingresado en todas las cajas de texto que tengo en el formulario.
Supongo que el tema viene por el lado de que tengo tres for anidados, y dentro de ellos un input type="text", para armar el arreglo.
¿Alguien sabe como puedo solucionar esto?
Les dejo parte del codigo para que vean que estoy haciendo mal.

//selecciono los objetivos para formar las filas

$sql1 = "SELECT * FROM servicios ORDER BY nom_objetivo";
$resulta1 = mysql_query($sql1,$dbi) or die(mysql_error($dbi)."<br>Error en busqueda.(0) <br>$sql1");
$cant = mysql_num_rows($resulta1);
if($cant >0){
$canti = $cant;
$k=0;
while($filaa1 = mysql_fetch_array($resulta1)){
$servicios[$k] = $filaa1["nom_objetivo"];
$k++;
}
$fin = $k;
}

//selecciono los horarios para formar las columnas

$sql2 = "SELECT * FROM simbolos_reportes WHERE turno='maniana' ORDER BY turno";
$resulta2 = mysql_query($sql2,$dbi) or die(mysql_error($dbi)."<br>Error en busqueda.(0) <br>$sql2");
$cant = mysql_num_rows($resulta2);
if($cant >0){
$i=0;
while($filaa2 = mysql_fetch_array($resulta2)){
$turnos[$i] = $filaa2["turno"];
$horas_desde[$i] = $filaa2["hora_desde"];
$i++;
}
$fint = $i;
}
$col=24;
$fila=$canti/$col;

//armo la matriz

echo "<center><table border=1 width=100%>
<td><span class=\"Estilo3\">Objetivos</span><td colspan=24><center><span class=\"Estilo3\">Horario</span></center>";
for($k=0;$k<$fin;$k++){
if($servicios[$k]!=$servicios[$k-1]){
if($servicios[$k]!=$servicios[$k-2]){
echo "<tr><th scope=\"row\"><span class=\"Estilo3\">$servicios[$k] </span></th>";

//aca recupero el valor que guarde la vez anterior (deberia traer todos los valores del dia de hoy y del turno correspondiente)
//Esto lo comente, porque trate de recuperar los datos de la tabla, y me hace lo mismo que si no lo pongo

/*$sqla = "SELECT * FROM reportes AS r, detalle_reportes AS d WHERE r.hora='$hora_desd' AND r.objetivo='$servicio' AND r.turno='$turno' AND r.fecha='$fechahoy' AND r.id_rep=d.id_rep ORDER BY r.objetivo, r.turno, r.hora";
$resulta = mysql_query($sqla,$dbi) or die(mysql_error($dbi)."<br>Error en búsqueda.(0) <br>$sqla");
$cant = mysql_num_rows($resulta);
if($cant > 0){
$h=0;
while($filaa = mysql_fetch_array($resulta)){
$s[$h]=$filaa["simbolo"];
$id_rep=$filaa["id_rep"];
$objetivo[$h]=$filaa["objetivo"];
$hora[$h]=$filaa["hora"];

}

if($objetivo[$h]!=$objetivo[$h-1] AND $hora[$h]!=$hora[$h-1]){
echo "<td>";
echo "<center><span class=\"Estilo1\">$hora[$h] Hs.</span></center><br>";
echo "$s[$h]";
}
}else{ */
for($i=0;$i<$fila;$i++){
for($j=0;$j<$col;$j++){
if($turnos[$j]=='maniana'){
$hora_desde[$j]=$horas_desde[$j];
}

//solo traer a todas las cajas de texto el mismo valor (el ultimo que guarde)
//cuando en realidad deberia quedar en cada caja de texto el valor que le corresponde al objetivo y a la media hora correspondiente

echo "<td>";
echo "<center><span class=\"Estilo1\">$hora_desde[$j] Hs.</span></center><br>";

echo "<form action=\"reportesdino21.php?fin=$fin&col=$col&fila =$fila&actualizar=$actualizar&turno=$turnos[$j]&servicio=$servicios[$k]&hora_desd=$hora_desde[$j]&simbolo=$simbolos\" target=\"_self\" method=\"post\">";

//coloco las cajas de texto (como una planilla de excel) para que el usuario ingrese el simbolo que desee

echo "<input type=\"text\" name=\"simbolos[$j]\" value=\"$simbolito\" size=\"1\">";
$simbolos = $simbolos[$j];
echo "<input type=\"submit\" name=\"actualizar\" value=\"OK\">";
echo "</form>";

}
$j++;
$finj=$j;
}
$i++;
$fini=$i;
// }
}
}
}
$k++;
$fink=$k;

echo "</table>";

Desde ya les agradezco su ayuda.
  #2 (permalink)  
Antiguo 20/10/2004, 15:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mmm A simple vista .. si por el URL en:

echo "<form action=\"reportesdino21.php?fin=$fin&col=$col&fila =$fila&actualizar=$actualizar&turno=$turnos[$j]&servicio=$servicios[$k]&hora_desd=$hora_desde[$j]&simbolo=$simbolos\" target=\"_self\" method=\"post\">";

concretamente cuando haces: simbolo=$simbolos esa variable es un array .. deberías de serializarla (no sé si por otro lado lo haces).

Un ejemplo para serializarla (atendiendo también a otros problemas que puedes tener si hay espacios por médio o palabras acentuadas .. etc ...):

http://www.forosdelweb.com/f18/faqs-php-530600-post262072/

Otros detalles al margen .. No usas los arrays superglobales .. ($_POST, $_GET .. etc) .. deberías usarlos.

También te recomendaría usar campos hidden en tu formualario para propagar esas variables que pasas en el "action" del formulario bien sesiones (así no tendrías ni que serializar esos arrays y te ahorras datos que van y vienen de cliente a servidor y viceversa ... constantemente).


Un saludo,
  #3 (permalink)  
Antiguo 20/10/2004, 15:15
 
Fecha de Ingreso: octubre-2004
Ubicación: Mendoza
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Hola Cluster:

Muchas gracias por tu rapida respuesta.
Estaba tratando de evitar las sesiones, pero voy a probar lo que me mandaste y luego te comento que paso.
En cuanto a usar el campo hidden, lo hice anteriormente, pero no me dio resultados.
Gracias de nuevo y luego te digo que paso.

saludos.
  #4 (permalink)  
Antiguo 20/10/2004, 16:09
 
Fecha de Ingreso: octubre-2004
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Ya estamos suscriptas, espero que todas nuestras dudas tengan respuesta.
Un beso, nos vemos el viernes.
  #5 (permalink)  
Antiguo 20/10/2004, 16:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mariandre

Forosdelweb.com dispone de un sistema de Mensajería privada para mensajes "privados" entre Uds.

Por lo demás .. aquí la gente participa desinteresadamente y responde o ayuda lo que puede. Así que no esperes que todas las preguntas tengan respuestas y menos andar con urgencias (por si acaso).

Un saludo,
  #6 (permalink)  
Antiguo 21/10/2004, 15:08
 
Fecha de Ingreso: octubre-2004
Ubicación: Mendoza
Mensajes: 4
Antigüedad: 13 años, 2 meses
Puntos: 0
Hola otra vez!
Perdón por lo hincha.
Solucioné en parte mi problema, gracias a lo que me dijiste. Use la variable en la que cargo los datos, con sesiones.
Ahora me muestra los valores cargados, pero, no en las cajas de texto correspondientes, sino que empieza desde el índice cero ($simbolos[0]) a mostrarlas, y cada vez que agrego un dato en otra caja, me lo muestra a continuación de la última que mostró.
Aparte, si tengo dos filas, me pone el mismo valor en las dos filas (para la misma columna).
¿Tendré que hacer una matriz (tipo $simbolos[$j,$i], por ejemplo), en vez de $simbolos[$j]?

Te paso el código que agregué para que lo veas:

<?
session_start();
require("config.php");
require("lib.php");
echo "<html><head><title>$X_NOMBRE</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>
<body> ......

.........
$sql = "SELECT max(id_rep) AS ultimo_idrep FROM reportes";
$result = mysql_query($sql,$dbi) or die(mysql_error($dbi)."<br>Error en búsqueda.(0) <br>$sql");
$cant = mysql_num_rows($result);
if($cant > 0){
while($fila = mysql_fetch_array($result)){
$id_rep=$fila["ultimo_idrep"];
}
$id_rep = $id_rep +1;
}else{
$id_rep = 1;
}

$sql = "SELECT max(id_detalle) AS ultimo_iddetalle FROM detalle_reportes";
$result = mysql_query($sql,$dbi) or die(mysql_error($dbi)."<br>Error en búsqueda.(0) <br>$sql");
$cant = mysql_num_rows($result);
if($cant > 0){
while($fila = mysql_fetch_array($result)){
$id_detalle=$fila["ultimo_iddetalle"];
}
$id_detalle = $id_detalle +1;
}else{
$id_detalle = 1;
}

if($simbolito!=""){

$sqla = "SELECT * FROM reportes WHERE objetivo='$servicio' AND turno='$turno' AND hora='$hora_desd' AND fecha='$fechahoy' ORDER BY id_rep";
$resulta = mysql_query($sqla,$dbi) or die(mysql_error($dbi)."<br>Error en búsqueda.(0) <br>$sqla");
$cant = mysql_num_rows($resulta);
if($cant > 0){
$band = 1;
while($filaa = mysql_fetch_array($resulta)){
$id_rep=$filaa["id_rep"];
}
}else{
$band = 0;
}
if($band == 0){

... aca verifico que no exista ese registro...
}else{

//si no existe el registro, lo grabo

if($fland==0){
$sql2 = "INSERT INTO detalle_reportes SET id_rep=$id_rep, id_detalle=$id_detalle, simbolo='$simbolito'";
$result2 = mysql_query($sql2,$dbi) or die(mysql_error($dbi)."<br>Error en alta.(0) <br>$sql2");

$sql1 = "INSERT INTO reportes SET id_rep=$id_rep, objetivo='$servicio', turno='$turno', hora='$hora_desd', fecha='$fechahoy'";
$result1 = mysql_query($sql1,$dbi) or die(mysql_error($dbi)."<br>Error en alta.(0) <br>$sql1");
}
}
}
}
//selecciono los objetivos para formar las filas

$sql1 = "SELECT * FROM servicios ORDER BY nom_objetivo";
$resulta1 = mysql_query($sql1,$dbi) or die(mysql_error($dbi)."<br>Error en busqueda.(0) <br>$sql1");
$cant = mysql_num_rows($resulta1);
if($cant >0){
$canti = $cant;
$k=0;
while($filaa1 = mysql_fetch_array($resulta1)){
$servicios[$k] = $filaa1["nom_objetivo"];
$k++;
}
$fin = $k;
}

//selecciono los horarios para formar las columnas

$sql2 = "SELECT * FROM simbolos_reportes WHERE turno='maniana' ORDER BY turno";
$resulta2 = mysql_query($sql2,$dbi) or die(mysql_error($dbi)."<br>Error en busqueda.(0) <br>$sql2");
$cant = mysql_num_rows($resulta2);
if($cant >0){
$i=0;
while($filaa2 = mysql_fetch_array($resulta2)){
$turnos[$i] = $filaa2["turno"];
$horas_desde[$i] = $filaa2["hora_desde"];
$i++;
}
$fint = $i;
}
$col=24;
$fila=$canti/$col;

//aca recupero los datos que he ido cargando en la tabla, para mostrarlos en las cajas de texto

$sqla = "SELECT * FROM reportes AS r, detalle_reportes AS d WHERE r.id_rep=d.id_rep AND r.turno='$turno' ORDER BY r.id_rep";
$resulta = mysql_query($sqla,$dbi) or die(mysql_error($dbi)."<br>Error en búsqueda.(0) <br>$sqla");
$cant = mysql_num_rows($resulta);
if($cant > 0){
$j = 0;
while($filaa = mysql_fetch_array($resulta)){
$simbolos[$j]=$filaa["simbolo"];
$fecha=$filaa["fecha"];
$fechah=substr("$fecha", 0, 10);
if($fechah == $fechaho){
session_register("simbolos[$j]");
$simbolos[$j]=$simbolos[$j];
}
$finj=$j++;
}
}

//armo la matriz

echo "<center><table border=1 width=100%>
<td><span class=\"Estilo3\">Objetivos</span><td colspan=24><center><span class=\"Estilo3\">Horario</span></center>";
for($k=0;$k<$fin;$k++){
if($servicios[$k]!=$servicios[$k-1]){
if($servicios[$k]!=$servicios[$k-2]){

echo "<tr><th scope=\"row\"><span class=\"Estilo3\">$servicios[$k]</span></th>";

for($i=0;$i<$fila;$i++){
for($j=0;$j<$col;$j++){
if($turnos[$j]=='maniana'){
$hora_desde[$j]=$horas_desde[$j];
}

//solo traer a todas las cajas de texto el mismo valor (el ultimo que guarde)
//cuando en realidad deberia quedar en cada caja de texto el valor que le corresponde al objetivo y a la media hora correspondiente

echo "<td>";
echo "<center><span class=\"Estilo1\">$hora_desde[$j] Hs.</span></center><br>";

echo "<form action=\"reportesdino2.php?array=$array&valor=$val or&fin=$fin&col=$col&fila=$fila&actualizar=$actual izar&turno=$turnos[$j]&servicio=$servicios[$k]&hora_desd=$hora_desde[$j]&simbolo=$simbolos[$j]\" target=\"_self\" method=\"post\">";

//coloco las cajas de texto (como una planilla de excel) para que el usuario ingrese el simbolo que desee

echo "<input type=\"text\" name=\"simbolos[$j]\" value=\"$simbolos[$j]\" size=\"1\">";

session_register("simbolos[$j]");

$simbolos[$j] = $simbolos[$j];

//este campo hidden es para evitar tener los botones y dar enter para grabar

echo "<input type=\"hidden\" name=\"actualizar\" value=\"submit()\">";

echo "</form>";

}
$j++;
$finj=$j;
}
$i++;
$fini=$i;

}
}
}
$k++;
$fink=$k;

echo "</table>";

session_destroy();
?>

</body>
</html>

Gracias de nuevo por tu tiempo y tu ayuda.
Cualquier cosa, lo haré de nuevo de otra forma.

Gracias de nuevo.
Adriana.
  #7 (permalink)  
Antiguo 21/10/2004, 16:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Realmente veo mucho lío ya en el código .. Si usas sesiones no deberías usar todas esas variables que propagas en el URL en el action del formulario ..

Tampoco el uso de sesiones que haces es del todo correcto .. NO deberías usar session_register() sino los arrays superglobales (en general para todo) como $_SESSION y afines.

Puedes ver más información al respecto en:
www.php.net/session

Un saludo,
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:21.