Pasar variables 2

Bueno, espero ser más específico.
Recupero datos de varias personas de una tabla, pero lo que interesa es el idCliente, asimismo, de otra tabla recupero datos de las habitaciones disponibles con un select, todo esto dentro de un solo form, al enviar a la otra página, solamente pasan los últimos valores recuperados, si la última pieza es la 200 y quiero que llegue la 15, el valor que llega es 200, asimismo si el idCliente que debería pasar es el Nº 10, el valor que pasa es el del último cliente
por si acaso va el código:
<tr >
<td ><?php echo $row_clientes['nombres']; ?> <?php echo $row_clientes['apPaterno']; ?> <?php echo $row_clientes['apMaterno']; ?> //hasta aquí los datos son redundantes, no interesan
<input name="idCli" type="hidden" id="idCli" value="<?php echo $row_clientes['idCliente']; ?>" /> //este es el valor que quiero recuperar en la otra pág
</td>
<td >  //con este select asigno la nueva pieza
<select name="piezaNew" id="piezaNew">
<?php do { ?>
<option value="<?php echo $row_pzas['numero']?>"<?php if (!(strcmp($row_pzas['numero'], $row_clientes['pieza']))) {echo "selected=\"selected\"";} ?>><?php echo $row_pzas['numero']?></option>
<?php
} while ($row_pzas = mysql_fetch_assoc($pzas));
$rows = mysql_num_rows($pzas);
if($rows > 0) {
mysql_data_seek($pzas, 0);
$row_pzas = mysql_fetch_assoc($pzas);
}
?>
</select></td>
<td bordercolor="#0099FF"><input name="button" type="submit" class="quoteBoton2" id="button" value="O.K." /></td>
//con este botón envío el form
</tr>
Espero puedas ayudarme, te agradeceré infinitamente, por si vale de algo, utilizo dreamweaver para ayudarme con el diseño

1 Respuesta

Respuesta
1
En el código que muestras hay 3 elementos de formulario:
* un campo oculto de nombre idCli que devolverá ese código de cliente que quieres (siempre que no haya otros campos en la página con ese mismo name)
* un campo de selección de nombre piezaNew que como opciones parece que tiene unos ciertos valores numéricos extraidos de la base de datos. Este elemento retornará el elemento seleccionado por defecto o bien el que escoja el usuario.
* un botón de envio del formulario.
Aunque no se vé en el código la etiqueta form, lo demás aparece correcto. Así que,
echo $_REQUEST["idCli"] . ", " . $_REQUEST["piezaNew"];
Debería devolver los dos valores comentados.
Si no es así, habrás de dar más información, porque hasta aquí el código es correcto.
El problema sigue, en la página "destino" sólo recupero los últimos valores que se recuperan en el form, tanto de idCliente como de piezaNew. Según tu apreciación el código es correcto, pero no me interesa que pasen más variables, ya que el idCliente es único y el piezaNew puede ser asignado a varios clientes
Si hay otra forma de hacer la actualización, por favor comentámela, o si requieres que te pase toda la página haceme saber como; todo tu análisis concuerda con lo que necesito pero estoy trancado en esta situación.
De antemano, muchas gracias
raúl
Desde luego con el código que has facilitado no hay suficiente. Como te digo con el código que has enviado han de llegar esos dos datos correctamente. ¿Cuántos esperabas recibir?
No entiendo tu frase "no me interesa que pasen más variables" ¿más qué cuantas? Yo sólo veo dos.
Para concretar: ¿Cuántos campos tiene tu formulario?, ¿Cuántos recibes en la página destino? ¿Cuántos quieres recibir?
No entiendo porque dices que sólo recibes 'los últimos'. Esto podría deberse a que tienes más de una etiqueta form en tu página. También puede ser que le des el mismo 'name' a campos 'similares'. Eso es totalmente incorrecto, como ya te dije en mi anterior mensaje. En ese caso, sólo se enviaría el último de los resultados.
Hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
<?php
// technocurve arc 3 php mv block1/3 start
$mocolor1 = "#FFFFCC";
$mocolor2 = "#D5EAD7";
$mocolor3 = "#CCCCFF";
$mocolor = $mocolor1;
// technocurve arc 3 php mv block1/3 end
?><?php require_once('../../Connections/sistole.php'); ?>
<?php
require_once('../../Connections/sistole.php');
require('../../Clases/cuentas.php');
require('../../Clases/estadia.php');
?>
<?php
//initialize the session
if (!isset(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
te envío toda la página donde recupero los datos:
tiny_mce_markerSESSION)) {
session_start();
}
// ** Logout the current user. **
$logoutAction = hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
te envío toda la página donde recupero los datos:
tiny_mce_markerSERVER['PHP_SELF']."?doLogout=true";
if ((isset(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
te envío toda la página donde recupero los datos:
tiny_mce_markerSERVER['QUERY_STRING'])) && (hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
te envío toda la página donde recupero los datos:
tiny_mce_markerSERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
te envío toda la página donde recupero los datos:
tiny_mce_markerSERVER['QUERY_STRING']);
}
if ((isset(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
tiny_mce_markerGET['doLogout'])) &&(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
te envío toda la página donde recupero los datos:
tiny_mce_markerGET['doLogout']=="true")){
//to fully log out a visitor we need to clear the session varialbles
Hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
tiny_mce_markerSESSION['MM_Username'] = NULL;
Hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
tiny_mce_markerSESSION['MM_UserGroup'] = NULL;
Hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
tiny_mce_markerSESSION['PrevUrl'] = NULL;
unset(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
tiny_mce_markerSESSION['MM_Username']);
unset(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
tiny_mce_markerSESSION['MM_UserGroup']);
unset(hola de nuevo, bueno, no encuentro el error, no tengo campos similares con el mismo name y sólo tengo un form en la página.
Te envío toda la página donde recupero los datos:
tiny_mce_markerSESSION['PrevUrl']);
$logoutGoTo = "../../Inicio.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_sistole, $sistole);
$query_clientes = "SELECT cliente.idCliente, cliente.nombres, cliente.apPaterno, cliente.apMaterno, estadia.pieza, estadia.obs, estadia.procede, fechas.fecha_ing, cuenta.tot_mang, cuenta.cama, cuenta.total_otros, cuenta.total_pago, cuenta.efectivo, cuenta.cambio FROM cliente, estadia, fechas, cuenta WHERE cliente.idCliente=estadia.idCliente AND estadia.IdCta=fechas.idestadia AND estadia.IdCta=cuenta.idEstadia ORDER BY estadia.pieza";
$clientes = mysql_query($query_clientes, $sistole) or die(mysql_error());
$row_clientes = mysql_fetch_assoc($clientes);
$totalRows_clientes = mysql_num_rows($clientes);
mysql_select_db($database_sistole, $sistole);
$query_pzas = "SELECT pieza.numero, pieza.precio_cama FROM pieza ORDER BY pieza.numero";
$pzas = mysql_query($query_pzas, $sistole) or die(mysql_error());
$row_pzas = mysql_fetch_assoc($pzas);
$totalRows_pzas = mysql_num_rows($pzas);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- DW6 -->
<head>
<!-- Copyright 2005 Macromedia, Inc. All rights reserved. -->
<title>Cambio de Pieza</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../../Imagenes/mm_travel2.css" type="text/css" />
<script language="JavaScript" type="text/javascript">
//--------------- LOCALIZEABLE GLOBALS ---------------
var d=new Date();
var monthname=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
//Ensure correct for language. English is "January 1, 2004"
var TODAY = monthname[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear();
//--------------- END LOCALIZEABLE ---------------
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args+".location='"+args[i+1]+"'");
}
</script>
<style type="text/css">
<!--
.Estilo1 {color: #4372D1}
.Estilo2 {font-size: 16px}
-->
</style>
</head>
<body bgcolor="#C0DFFD" onload="KW_doClock()">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#3366CC">
<td colspan="2" rowspan="2" nowrap="nowrap"><img src="../../Imagenes/mm_travel_photo.jpg" alt="Header image" width="382" height="127" border="0" /></td>
<td width="419" height="63" id="logo" valign="bottom" align="center" nowrap="nowrap">en la frontera...</td>
<td width="201"> </td>
</tr>
<tr bgcolor="#3366CC">
<td height="64" id="tagline" valign="top" align="center">el mejor lugar para quedarse</td>
<td width="201"><span class="Estilo1">shot 1.4</span></td>
</tr>
<tr>
<td colspan="4" bgcolor="#003366"><img src="../../Imagenes/mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
</tr>
<tr bgcolor="#CCFF99">
<td height="25" colspan="4"><a href="<?php echo $logoutAction ?>">Inicio</a> : <a href="../principal_cliente.php">Menú Cliente</a> : Cambio de Pieza :
<script language="JavaScript" type="text/javascript">
document.write(TODAY); </script>
, Hrs:
<script language='JavaScript'>
// Kaosweaver Live Clock Start
function class_clock(f,s,c,b,w,h,d,m,g,z) { // Copyright 2002 by Kaosweaver, All rights reserved
this.b=b;this.w=w;this.h=h;this.d=d;this.g=g;this.z=z
this.o='<font style="color:'+c+'; font-family:'+f+'; font-size:'+s+'pt;">';
if (m==1) this.o+=0
}
var clock=new class_clock("Verdana, Arial, Helvetica, sans-serif","8","#003366","#000000","56",0,1,0,0,0)
// If the clock's size needs adjusting, change the 56 above.
d=document
if (d.all || d.getElementById) {d.write('<span id="activeClock" style="width:'+clock.w+'px; "></span>'); }
else if (d.layers) {d.write('<ilayer id="wrapClock"><layer width="'+clock.w+'" id="activeClock"></layer></ilayer>'); }
else {KW_doClock(1);}
function KW_doClock(a) { // Copyright 2003 by Kaosweaver, All rights reserved
d=document;t=new Date();p="";dClock=""; if (d.layers) d.wrapClock.visibility="show";
tD=(t.getTimezoneOffset()-(clock.z*60))*clock.g;t.setMinutes(tD+t.getMinutes())
h=t.getHours();m=t.getMinutes();s=t.getSeconds();if (clock.h)
{p=(h>11)?"PM":"AM";h=(h>12)?h-12:h;h=(h==0)?12:h;}if (clock.d)
{m=(m<=9)?"0"+m:m; s=(s<=9)?"0"+s:s;} dClock = clock.o+h+':'+m+':'+s+' '+p+'</font>';
if (a) {d.write(dClock);}if (d.layers) {wc = document.wrapClock;lc = wc.document.activeClock;
lc.document.write(dClock);lc.document.close();
} else if (d.all) { activeClock.innerHTML = dClock;
} else if (d.getElementById) {d.getElementById("activeClock").innerHTML = dClock;}
if (!a) setTimeout("KW_doClock()",1000);
}
// Kaosweaver Live Clock End
</script>
<!-- KW Live Clock --> </td>
</tr>
<tr>
<td colspan="4" bgcolor="#003366"><img src="../../Imagenes/mm_spacer.gif" alt="" width="1" height="1" border="0" /></td>
</tr>
<tr>
<td width="40"> </td>
<td colspan="2" valign="top"> <br />
 <br />
<form action="cambiando.php" method="post" name="form1" id="form1">
<table border="0" cellspacing="0" cellpadding="2" width="650">
<tr>
<td class="pageName">Cambiar de pieza al cliente (s).</td>
</tr>
<tr>
<td class="bodyText">
<table width="646" border="1" cellspacing="1" bordercolor="#99FFFF" bgcolor="#000099">
<tr>
<td width="367" rowspan="2" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quote">Cliente</td>
<td width="97" rowspan="2" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quote">Cuenta</td>
<td colspan="2" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quote">Pieza</td>
<td width="48" rowspan="2" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quote"> </td>
</tr>
<tr>
<td width="53" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quote Estilo2">Actual</td>
<td width="53" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quote Estilo2">Nueva</td>
</tr>
<?php do {
?>
<tr <?php
// technocurve arc 3 php mv block2/3 start
echo " style=\"background-color:$mocolor\" onMouseOver=\"this.style.backgroundColor='$mocolor3'\" onMouseOut=\"this.style.backgroundColor='$mocolor'\"";
// technocurve arc 3 php mv block2/3 end
?>
>
<td bordercolor="#0099FF" class="quoteBoton"><?php echo $row_clientes['nombres']; ?> <?php echo $row_clientes['apPaterno']; ?> <?php echo $row_clientes['apMaterno']; ?> <input name="idClienteCh" type="hidden" id="idCl" value="<?php echo $row_clientes['idCliente']; ?>" /></td>
<?php
$dias_esta = new entre_dia;
$dias_ya = $dias_esta -> dias_dif($row_clientes['fecha_ing']);
$la_cuenta = new cuentas;
$saldillo = $la_cuenta -> averigua($row_clientes['cama'], $row_clientes['total_pago'], $row_clientes['cambio'], $row_clientes['efectivo'], $dias_ya);
$saldo_total = $la_cuenta -> cta_total($row_clientes['cama'], $dias_ya);
$saldi = $saldillo-$row_clientes['total_otros']-$row_clientes['tot_mang'];
?>
<td bordercolor="#0099FF" class="quoteBoton">
<div align="right"><?php echo $saldi; ?> Bs.-</div>
</td>
<td bordercolor="#0099FF">
<div align="right">
<input name="piezaAct" type="text" class="quoteIzqAzul" id="piezaAct" value="<?php echo $row_clientes['pieza']; ?>" size="3" maxlength="3" readonly="true" />
</div>
</td>
<td bordercolor="#0099FF">
<select name="piezaNuevaCh" class="quoteBoton2" id="piezaNe">
<?php do { ?>
<option value="<?php echo $row_pzas['numero']?>"<?php if (!(strcmp($row_pzas['numero'], $row_clientes['pieza']))) {echo "selected=\"selected\"";} ?>><?php echo $row_pzas['numero']?></option>
<?php
} while ($row_pzas = mysql_fetch_assoc($pzas));
$rows = mysql_num_rows($pzas);
if($rows > 0) {
mysql_data_seek($pzas, 0);
$row_pzas = mysql_fetch_assoc($pzas);
}
?>
</select></td>
<td bordercolor="#0099FF"><input name="button" type="submit" class="quoteBoton2" id="button" value="O.K." /></td>
</tr>
<?php
// technocurve arc 3 php mv block3/3 start
if ($mocolor == $mocolor1) {
$mocolor = $mocolor2;
} else {
$mocolor = $mocolor1;
}
// technocurve arc 3 php mv block3/3 end
?>
<?php } while ($row_clientes = mysql_fetch_assoc($clientes)); ?>
<tr>
<td colspan="5" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quoteBoton"><img src="../../Imagenes/mm_spacer.gif" width="1" height="1" /></td>
</tr>
<tr>
<td bordercolor="#0099FF" bgcolor="#D5EAD7" class="quoteBoton">
<div align="center">
<input name="button3" type="button" class="quoteBoton2" id="button3" onclick="MM_goToURL('parent','../../Clases/salir.php');return document.MM_returnValue" value="Salir" />
</div>
</td>
<td colspan="4" bordercolor="#0099FF" bgcolor="#D5EAD7" class="quoteBoton">
<div align="center">
<input name="button2" type="button" class="quoteBoton2" id="button2" onclick="MM_goToURL('parent','../principal_cliente.php');return document.MM_returnValue" value="Terminar" />
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form> </td>
<td width="201"> </td>
</tr>
<tr>
<td width="40"> </td>
<td width="342"><a href="mailto:[email protected]">Gracias pos usar Shot 1.4</a></td>
<td width="419"> </td>
<td width="201"> </td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($clientes);
mysql_free_result($pzas);
?>

Como verás, y te lo he comentado antes, utilizo Dreamweaver para el diseño, es por eso que el código es tan tedioso.
En la primer parte está lo referido a la presentación de la tabla, luego viene una parte de seguridad y restricción de acceso a la misma, tengo sólo dos consultas, la primera me recupera datos del cliente, de varias tablas y la segunda me recupera datos de las habitaciones, luego hasta el form es código que sirve para mejorar la interfaz, y luego, en el form mismo está el armado de la tabla.
Existen un par de clases que me devuelven el estado de cuentas del cliente y el resto es información del cliente mismo.
Lo que me interesa es que: en la página ésta se recuperan los datos óptimamente, si es que son tres o cinco filas de clientes, al ir a la página de destino, me llegan sólo los datos recuperados en la última fila.
No sé qué hacer, he probado muchas formas pero todas me dan el mismo resultado.
Por lo que veo en tu código, tienes un bucle do while que muestra los distintos clientes según los registros que se han obtenido en $clientes.
Dentro de este bucle todos los elementos de formulario (la input y la select) tienen el MISMO nombre en CADA iteración.
Es decir, que en la primera iteración se escribe una input con name idClienteCh, y en la segunda otro input con el mismo name y así sucesivamente.
Puesto que el name no cambia de una iteración a la siguiente, la página HTML resultante tiene varios elementos con la misma name y por lo tanto sólo devuelve el valor del último de ellos. Esto ya te lo mencioné en uno de mis mensajes anteriores como posible causa.
Si estás en un bucle, lo habitual es que el name sea una matriz: name="idClienteCh[$i]" y que en cada iteración incrementes el valor de $i
Excelente! Abrí el correo de mucho tiempo (en mi pueblo las fiestas de fin de año duran toda la semana), vi la respuesta y funciona a la perfección.
Gracias, de veras te quedo muy agradecido, hasta la próxima

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas