Foros del Web » Programando para Internet » PHP »

Me coge el último insertado y no quiero eso!

Estas en el tema de Me coge el último insertado y no quiero eso! en el foro de PHP en Foros del Web. Hola amigos. A ver si explico bien el problema que tengo... Tengo, entre otras, 3 tablas en la base de datos: 1.- usuario (nick_usuario, telefono_usuario, ...
  #1 (permalink)  
Antiguo 03/08/2005, 01:59
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Me coge el último insertado y no quiero eso!

Hola amigos.
A ver si explico bien el problema que tengo...
Tengo, entre otras, 3 tablas en la base de datos:

1.- usuario (nick_usuario, telefono_usuario, email_usuario,...) siendo su clave "nick_usuario"
2.- concierta_visita (dni_propietario, ref_inmueble, nick_usuario) siendo los 3 atributos la clave de la tabla
3.- gestiona_visitas (dni_propietario, ref_inmueble, nick_usuario, id_agente, visitado) siendo los 4 primeros atributos su clave. El atributo "visitado" será "si" o "no", según el agente encargado (id_agente) del inmueble lo haya visitado ya o no con el usuario interesado (nick_usuario).

Por otro lado, tengo un código que saca correctamente por pantalla los datos que quiero en una tabla de tipo <table>, cuyas columnas indican los siguientes datos: referencia del inmueble a visitar, usuario interesado en visitar el inmueble, telefono del usuario, email del usuario, y si el inmueble ha sido visitado o no (si aún no ha sido visitado, lo que aparecerá en esa columna, por cada fila, será un botón que al pulsarlo, cambiará a "si" el campo correspondiente a ese inmueble en la tabla "gestiona_visitas" de la base de datos, por el que se ha interesado ese usuario, que tiene como encargado al agente "id_agente").

El problema es que paso mal el nick del usuario (en este caso se me ha ocurrido pasarlo a través de un campo "hidden") y siempre me coge el último usuario insertado en la tabla "gestiona_visitas"... Cuando yo lo que quiero es que trate el usuario correspondiente en cuya fila se ha pulsado el botón de "visitado"...
(Por cierto, si el inmueble ya ha sido visitado con el usuario que se interesó por él, en lugar de aparecer un botón de "VISITADO", lo que aparece es la palabra "SI", indicando que sí ha sido visitado con el usuario interesado)

El código "conflictivo" es este:
--------------------------------------------------------------------------
//obtengo la id del agente encargado del inmueble mediante los datos de la sesión

$ag=$_SESSION['id_agente'];

//realizo la consulta para obtener los datos que se sacarán por pantalla

$s3="select ref_inmueble,nick_usuario,visitado from gestiona_visitas where (id_agente='$ag')";
$resultado=mysql_query($s3,$link);
while ($salida=mysql_fetch_row($resultado)){

//una segunda consulta para obtener el telefono y el email del usuario interesado en visitar el inmueble

$s2="select telefono_usuario,email_usuario from usuario where (nick_usuario='$salida[1]')";
$res=mysql_query($s2,$link);
while ($row=mysql_fetch_row($res)){

//comienzo a imprimir por pantalla la tabla con los resultados

echo "<tr>";
if ($salida[2]=="no") {

//el inmueble no ha sido visitado

for ($i=0;$i<5;$i++){
if($i==0) {
echo "<td bgcolor=\"#F0F1DA\">",$salida[$i],"</td>";
}else{
if ($i==1) {
$n=$salida[$i];
echo "<td bgcolor=\"#F0F1DA\">",$salida[$i],"</td>";
}else{
if ($i==2) {
echo "<td bgcolor=\"#F0F1DA\">",$row[0],"</td>";
}else{
if ($i==3) {
echo "<td bgcolor=\"#F0F1DA\">",$row[1],"</td>";
}else{
if ($i==4) {
echo "<input type=\"hidden\" name=nick value=\"$salida[1]]\"><input type=\"hidden\" name=agente value=\"$ag\"><td bgcolor=\"#F0F1DA\"><div align=\"center\"><input type=\"submit\" name=visita[$salida[0]] value=\"VISITADO\"></div></td>";
}
//cierro los 4 "else"
}}}}
//cierro el for
}
//cierro el if
}
elseif ($salida[2]=="si"){

//el inmueble ya figura como visitado

for ($i=0;$i<5;$i++){
if($i==0) {
echo "<td bgcolor=\"#F0F1DA\">",$salida[$i],"</td>";
}else{
if ($i==1) {
echo "<td bgcolor=\"#F0F1DA\">",$salida[$i],"</td>";
}else{
if ($i==2) {
echo "<td bgcolor=\"#F0F1DA\">",$row[0],"</td>";
}else{
if ($i==3) {
echo "<td bgcolor=\"#F0F1DA\">",$row[1],"</td>";
}else{
if ($i==4) echo "<td bgcolor=\"#F0F1DA\" align=\"center\">SI</td>";
//cierro los 4 "else"
}}}}
//cierro el for
}
//cierro el if
}
echo "</tr>";
//cierro el while
}
//cierro el otro while
}
--------------------------------------------------------------------------

¿Cómo puedo pasar correctamente el nick del usuario interesado en ese inmueble? ¿Será que estoy haciendo mal las consultas?

No sé si hace falta, pero por si acaso, pongo también el código de prueba que estoy usando (archivo que recoge los datos) para comprobar si sale o no sale bien el nick en cuestión...
--------------------------------------------------------------------------
<?php
$n=$_POST['nick'];
$a=$_POST['agente'];

foreach ($visita as $indice=>$valor)
echo $n,"<br>",$a,"<br>",$indice,"<br>";
?>
--------------------------------------------------------------------------

Muchas gracias y a ver si alguien puede ayudarme!!
  #2 (permalink)  
Antiguo 03/08/2005, 05:45
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Ayuda a que se te ayude: >> colorea tu código <<; usa las etiquetas [ PHP] y [ /PHP] (sin espacios).

Pués... no entendiendo bien tu código, parece ser esta línea es la que imprimes con un bucle:
Código PHP:
echo "<input type=\"hidden\" name=nick value=\"$salida[1]]\"><input type=\"hidden\" name=agente value=\"$ag\"><td bgcolor=\"#F0F1DA\"><div align=\"center\"><input type=\"submit\" name=visita[$salida[0]] value=\"VISITADO\"></div></td>"
... ok, el error es simple: A todos los elementos del formulario le daz un mismo name, no habrá manera de diferenciarlos y por ello solo se envia el último. Puedes crear names diferentes ó usar matricez.

Brevemente:
- Opción 1:
Código PHP:
<form action="archivo.php" method="post">
<?php
for ($i=0$i<5$i++)
      echo 
"<input type=\"checkbox\" name=\"check$i\" value=\"valor$i\">";
// eso te genera checkboxes con nombres diferentes, entonces debes pasar la cantidad
echo "<input type=\"hidden\" name=\"cantidad\" value=\"$i\">";
?>
<input type="submit" name="submit" value="Enviar">
</form>
y donde recibes:
Código PHP:
$pre"check"// la parte del name que es fija
$total$_POST['cantidad']; // la cantidad.. es importante la pases para limitar el bucle donde recojes
echo "Recibidos: ";
for(
$i=0$i<$total$i++) { // inicia el bucle
    
$indice$pre.$i// armar el índice
    
if(isset($_POST[$indice])) // ves si se pasó
        
echo "<br>".$_POST[$indice]; // imprimes
}
// y eso es todo... 
- Opción 2 (matricez):
Código PHP:
<form action="archivo.php" method="post">
<?php
for ($i=0$i<5$i++)
      echo 
"<input type=\"checkbox\" name=\"check[]\" value=\"valor$i\">";
// Solo diferencia en que defines el name como matriz
// ya no es necesario pasar la cantidad
?>
<input type="submit" name="submit" value="Enviar">
</form>
y donde recojes
Código PHP:
 echo "Recibidos: ";
foreach(
$_POST['check'] as $indice => $valor// recorres la matriz
        
echo "<br>$valor"// e imprimes
// y es todo... 
www.php.net/foreach

Espero te haya aclarado algo... aunque igual te diré que en vez de todos esos if()'s hagas un switch()... pero ese no es motivo del problema.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 03/08/2005, 07:53
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
(Antes de nada,perdón por no colorear el código, pero es un tema que se me olvidó preguntar en mi post... Ahora ya lo sé, gracias)

No sin ayuda, he podido resolver el problema. Al final era muy sencillo. Se trataba de poner las etiquetas de <form> y </form> al usar la variable hidden "nick". Es decir, me queda algo así (con lo cual por cada fila se envian solo los datos correspondientes a ese usuario).

Código PHP:
if ($i==4) {
    echo 
"<form name=\"form1\" method=\"post\" action=\"marcando_visitas.php\"><input type=\"hidden\" name=nick value=\"$salida[1]\"><input type=\"hidden\" name=agente value=\"$ag\"><td bgcolor=\"#F0F1DA\"><div align=\"center\"><input type=\"submit\" name=visita[$salida[0]] value=\"VISITADO\"></div></td></form>";

Gracias a todos.
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 13:56.