Foros del Web » Programando para Internet » PHP »

Consulta con doble condición

Estas en el tema de Consulta con doble condición en el foro de PHP en Foros del Web. Tengo esta consulta que hago a mi bd Código PHP: <?  # recogemos en una variable el nombre de BASE DE DATOS  $base = "mibase" ;  # recogemos en una variable el nombre de la TABLA  $tabla = "mitabla" ;  # establecemos la conexion con el servidor  $conexion = mysql_connect ...
  #1 (permalink)  
Antiguo 03/01/2005, 14:48
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 9 meses
Puntos: 0
Consulta con doble condición

Tengo esta consulta que hago a mi bd

Código PHP:
<? 
# recogemos en una variable el nombre de BASE DE DATOS 

$base="mibase"

# recogemos en una variable el nombre de la TABLA 

$tabla="mitabla"


# establecemos la conexion con el servidor 

$conexion=mysql_connect("localhost","root",""); 

#asiganamos la conexión a una base de datos determinada 

mysql_select_db($base,$conexion); 

# establecemos el criterio de SELECCION 
# en este caso los campos Contador, Nombre, Apellido1, Apellido2 unicamente 
# añadimos un criterio de seleccion WHERE 
# que como puedes ver es simple en este caso (que el Sexo sea masculino) 
# el resultado de la consulta será UNA LISTA CON TODOS LOS VARONES DE LA TABLA 

$resultadomysql_query("SELECT Nombre, Apellido1, Apellido2 FROM $tabla WHERE (Sexo='M') ",$conexion); 



# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML) 

echo "<table align=center border=2>"

# establecemos un bucle que recoge en un array 
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA 
# utilizamos en esta ocasión «mysql_fetch_row» 
# en vez de «mysql_fetch_array» para EVITAR DUPLICADOS 
# recuerda que esta ultima función devuelve un array escalar 
# y otro asociativo con los resultados 

while ($registro mysql_fetch_row($resultado)){ 
        
       
# insertamos un salto de línea en la tabla HTML 

       
echo "<tr>"

       
# establecemos el bucle de lectura del ARRAY 
       # con los resultados de cada LINEA 
       # y encerramos cada valor en etiquetas <td></td> 
       # para que aparezcan en celdas distintas de la tabla 

       
foreach($registro  as $clave){ 
       echo 
"<td>",$clave,"</td>"
 } 

echo 
"</table>"


# cerramos la conexion 

 
mysql_close();  

?>
Aquí le pido que me muestre los que son de sexo m, pero también quisiera que me mostrase aparte de los del sexo m también los que a la vez fuesen igual a 3, es decir los del sexo m y que sean 3 también, Venga muchas gracias
  #2 (permalink)  
Antiguo 03/01/2005, 15:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tan sólo tienes que añadir tu sentencias condicionales a tu consulta SQL .. (esto es problema principalmente de SQL no de PHP .. )

Código PHP:
$resultadomysql_query("SELECT Nombre, Apellido1, Apellido2 FROM $tabla WHERE Sexo='M' AND Sexo='3' ",$conexion); 
Un saludo,
  #3 (permalink)  
Antiguo 04/01/2005, 07:53
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 9 meses
Puntos: 0
Funciona perfectamente pero .......
No me dí cuenta que necesito ponerle tres condiciones, al final el código me queda así
Código PHP:
<?php 
//Esta consulta muestra 5 articulos por página de un total de 10 articulos


mysql_connect("localhost","root","") or die ("no se ha podido conectar a la BD"); 
mysql_select_db("inmobiliaria") or die ("no se ha podido seleccionar la BD"); 
//$id=$_GET['id'];
if ($id!="")
{
    
$sql "SELECT * FROM pisos_venta WHERE ID<=".$id." AND id_tipo_inmueble='1' AND Id_tipoperacion='2' ";
}
else
{
    
$sql "SELECT * FROM pisos_venta ORDER BY ID DESC";
}
    
    
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta"); 
$i=0;



While ((
$i<5) and $registro=mysql_fetch_assoc($consulta)  )



echo 
"<table width=480  align=center cellspacing=3 cellpadding=3 border=1 bordercolor=#003366>";
  
//echo "<tr>";
    //echo "<td>";
      //echo "<tr>";
        
echo "<td valign=top >Ref.    ".$registro['referencia']."</td>";
        echo 
"<td><div align=right>".$registro['fecha']."</div></td></tr></td></tr>";
  
//echo "<tr>";
    
echo "<td>";
      
//echo "<tr>";
        
echo "<td valign=top>";
         
//echo "<tr>";
          //echo "<tr>";
           
?></td>
  </tr>
  <tr>
    <td width="22%" rowspan="2" valign="top" align="center"><a href="masinfo.php?iden=<? echo $registro['id']; ?>" onClick='this.target = "popup"; window.open("", "popup", "tolbar=0,width=650,height=450  OVERFLOW: scroll")' ><? echo "<img src='".$registro['imagen1']."' width='70' height='70' border='0'>"?></a></td>
    <td width="78%"><? echo "".substr($registro["descripcion"],0,100)."......"?></td>
  </tr>
  <tr>
    <td><div align="right"><a href="masinfo.php?iden=<? echo $registro['id']; ?>" onClick='this.target = "popup"; window.open("", "popup", "tolbar=0,width=650,height=450 ")' >más información</a></div></td>
  </tr>

<p><?
    $i
=$i 1;
}

echo 
"<center>";
echo 
"<table>";
$registro_tmp=$registro=mysql_fetch_assoc($consulta);
if (
$id!="")
{
    
$sql "SELECT * FROM pisos_venta WHERE ID>".$id." ORDER BY ID asc";
    
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta"); 
    
$i=0;
    While ((
$i<100) and $registro=mysql_fetch_assoc($consulta)  )
    { 
        
$id=$registro['id'];
        
$i=$i+1;
        
$entraEnElBucle="si";
    }
    
    if (
$entraEnElBucle!="")
        echo 
"<a href='?mod=pisosalquiler&id=".($id)."'>Pagina Anterior &nbsp;&nbsp;&nbsp;</a>";

if (
$registro_tmp)
{
    echo 
"<a href='?mod=pisosalquiler&id=".$registro_tmp['id']."'> Siguiente Pagina</a>";
}    
echo 
"</table>"
?>
Porque necesito que me muestre los resultados de cinco en cinco en cada hoja y si lo hago así me dá un resultado en la primera hoja y otro en la segunda, me explico:
Necesito mostrar de una tabla de inmuebles los que son pisos y además están en venta, el 1 corresponde a la categoría piso y el 1 al tipo de operación es decir id_tipo_inmueble 1 y Id_tipoperacion 2 pero al poner tambien ID<=$id no me dá el resultado esperado, me dá en la primera hoja el tipo de inmueble correspondiente a 1 y en la segunda hoja me dá el tipo de inmueble correspondiente a 2 cuando deberían de ser todos los que son de tipo 1 con modalidad 2 no los de tipo 1 y tipo 2, a ver si me puedes hechar otro cable por favor, gracias de antemano

Última edición por mon; 04/01/2005 a las 07:56
  #4 (permalink)  
Antiguo 04/01/2005, 08:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Si quieres "paginar" tus resultados de 5 en 5 registros posibles que arroje tu consulta .. debes usar más SQL: en tu caso .. LIMIT registro,desplazamiento

SELECT * FROM tabla WHERE condiciones .. LIMIT $registro_inicio,5

Revisa y usa el paginado de jpinedo "Paginator" .. te va ayudar mucho en lo que estás intentando hacer. (de hecho ya gestiona ese "LIMIT" con sus parámetros adecuados).

http://jpinedo.webcindario.com/scripts/paginator/

Un saludo,
  #5 (permalink)  
Antiguo 04/01/2005, 11:22
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 9 meses
Puntos: 0
Una vez más muchísimas gracias por tu respuesta y por tu paciencia
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:10.