Foros del Web » Programando para Internet » PHP »

Problemas con mi consulta

Estas en el tema de Problemas con mi consulta en el foro de PHP en Foros del Web. Hola a todos, me gustaría ver si pueden ayudarme, tengo el siguiente código: Cita: <input name="asignar" type="submit" id="asignar" value="Asignar Equipo"> <? $query="SELECT * FROM equipo ...
  #1 (permalink)  
Antiguo 01/12/2006, 17:09
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 2 meses
Puntos: 0
Problemas con mi consulta

Hola a todos, me gustaría ver si pueden ayudarme, tengo el siguiente código:

Cita:
<input name="asignar" type="submit" id="asignar" value="Asignar Equipo">

<?
$query="SELECT * FROM equipo WHERE id_cliente = $idcliente";
// echo $query;
$result=mysql_query($query,$conexion);
if (!$result ) {
die('Invalid Query: ' . mysql_error());
}
if (mysql_num_rows($result) != 0) {
while ($info=mysql_fetch_array($result)) {
?>
<tr>
<td colspan="2"><table width="100%" border="1" cellpadding="2" cellspacing="1">
<tr>
<td width="3%" align="center" class="reporte"><input name="equipo" type="radio" value="<? echo $info['i_equipo'] ?>">

</td>

<td width="7%" class="reporte"><? echo $info['i_equipo']; ?></td>
<td width="13%" class="reporte"><? echo $info['descr_equipo']; ?></td>
<td width="13%" class="reporte"><? echo $info['facventa']; ?></td>
<td width="13%" class="reporte"><? echo $info['estado']; ?></td>
<td width="13%" class="reporte"><? echo $info['fechventa']; ?></td>
<td width="8%" class="reporte"><? echo $info['garantia']; ?></td>
<td width="11%" class="reporte"><? echo $info['ubic_equipo']; ?></td>
<td width="19%" class="reporte"><? echo $info['usuario_eq']; ?></td>
</tr>
</table></td>
</tr>
<?
}
}
?>
Con ese código muestro en pantalla los datos de una consulta.

Mi problema es que si uno de los equipos que muestro en pantalla tiene el estado ($estado) con el valor "cerrado", este no puede asignarse al caso, es decir, cuando haglo clik en "Asignar Equipo" me aparezca en pantalla un mensaje diciendo " no se puede asignar el equipo por Bla,bla,bla".

El código que tengo para la asignación es el siguiente:

He probado de muchas maneras pero o deja de aparecer el equipo o me lo asigna igual. Lo que probé fue lo siguiente:

Cita:

<?


if ($_POST['asignar'] )
{
$idequipo = $equipo;
if (empty($equipo)){
$i_equipo ="";
$descrEquipo = "";
$userEquipo = "";
}else{
$query="SELECT * FROM equipo WHERE i_equipo = '$idequipo'";
$result=mysql_query($query,$conexion);
if (!$result or $estado == 'Cerrado') {
die('No se puede agregar el equipo al caso ' . mysql_error());
}
if (mysql_num_rows($result) != 0) {
$info=mysql_fetch_array($result);
$id_equipo = $info['i_equipo'];
$descrEquipo = $info['descr_equipo'];
$userEquipo = $info['usuario_eq'];
}
}
echo'<meta http-equiv="refresh" content="0; URL=crearCaso.php">';
}
elseif ($_POST['cancelar']){
echo'<meta http-equiv="refresh" content="0; URL=crearCaso.php">';
}
include "final.php";
?>
Porfa, si alguien puede ayudarme a que si $estado tiene el valor 'cerrado', este no deje asignar el equipo al caso.

De antemano muchas gracias

saludos
  #2 (permalink)  
Antiguo 01/12/2006, 17:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Tanto en php como en otros muchos lenguajes para la comparación or se debe usar "||" (2 barras de filtro)...

if (!$result || $estado == 'Cerrado') {...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 01/12/2006, 18:00
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 2 meses
Puntos: 0
Aun asi no me funciona. ayudenme porfa

Gracias
  #4 (permalink)  
Antiguo 01/12/2006, 19:05
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 18 años, 10 meses
Puntos: 2
Mensaje

Código PHP:
}else{
$query="SELECT * FROM equipo WHERE i_equipo = '$idequipo'";
$result=mysql_query($query,$conexion);

if (!
$result or $estado == 'Cerrado') {

   die(
'No se puede agregar el equipo al caso ' mysql_error());


Por que no evitas el if metiendo una condicion mas a tu clausula SELECT desde hay sabes si el estado es cerrado o no es decir..

Código PHP:
$query="SELECT * FROM equipo WHERE i_equipo = '$idequipo' AND estado = 'cerrado' "
__________________
Saludos!
Mty-NL..
  #5 (permalink)  
Antiguo 04/12/2006, 08:57
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 2 meses
Puntos: 0
Si, es una posibilidad, pero de igual forma tengo que mostrar todos los equipos que hay y que sólo se puedan seleccionar los que tienen el estado en 'abierto'.
  #6 (permalink)  
Antiguo 04/12/2006, 09:58
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Me voy a centrar en este trozo de código que según dices es donde tienes el problema:

Código PHP:
$query="SELECT * FROM equipo WHERE i_equipo = '$idequipo'";
$result=mysql_query($query,$conexion);
if (!
$result or $estado == 'Cerrado') {
die(
'No se puede agregar el equipo al caso ' mysql_error());

Da la impresión que con $estado quieres referirte a algun campo obtenido de la consulta, pero como sabes, una de las formas que podrías referirte a él podría ser $row[estado] o una forma similar...

No acabo de entender bien lo que quieres hacer, pero si partimos de la premisa de que la select sólo puede devolverte una fila, yo creo que se podría resolver de la forma siguiente:

Código PHP:
$query="SELECT * FROM equipo WHERE i_equipo = '$idequipo'";
$result=mysql_query($query,$conexion);
$row mysql_fetch_array($resultado);

if (
mysql_num_rows($result) == or $row['estado'] == 'cerrado')
{
    echo 
'no se puede agregar el equipo al caso';
} else {

//lo que sea: por aquí es que el equipo existe y no tiene estado 'cerrado'



Un saludo.

Última edición por holahola; 04/12/2006 a las 10:12
  #7 (permalink)  
Antiguo 04/12/2006, 10:17
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 2 meses
Puntos: 0
Esta bueno, pero el select devuelve todos los equipos que se han ingresado, y de ahi la idea a que sólo se puedan seleccionar aquellos que tengan el estado abierto. Me explico:

Cuando selecciono los equipos de ese cliente, me los muestra todos en pantalla. Y de la lista de los equipos tengo que hacer una selección para agregarlos a otra parte (pero es es otro cuento, que funciona perfectamente).

El problema es que tengo que hacer un filtro, hacer que los equipos que tienen el estado cerrado no se puedan seleccionar, es decir que no aparezca el radio button, o sensillamente que al hacerle clik me aparezca un mensaje de que el equipo no se puede seleccionar. Lo probe con un if sobre el radio button pero lo que conseguí es que sensillamente no me aparezca en la lista. Funiona, pero lo óptimo es que aparezcan todos en la lista y sólo pueda seleccionar aquellos en que el estado sea 'abierto'.

Saludos
  #8 (permalink)  
Antiguo 04/12/2006, 10:23
Avatar de holahola  
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 18 años, 11 meses
Puntos: 1
Pero ¿has probado la modificación que te he propuesto?

Yo insisto en que la variable $estado que utilizas en el if, tras la select, no parece que se cargue con ningún valor en ningún lado, por lo que el resultado del if es impredecible.

Última edición por holahola; 04/12/2006 a las 10:52
  #9 (permalink)  
Antiguo 04/12/2006, 12:11
 
Fecha de Ingreso: febrero-2006
Mensajes: 85
Antigüedad: 18 años, 2 meses
Puntos: 0
Si, lo probé y funcionaba perfecto, un millón de gracias!

Saludos
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 21:18.