Foros del Web » Programando para Internet » PHP »

Si hay resultado busqueda mostrar solo campo coincidente

Estas en el tema de Si hay resultado busqueda mostrar solo campo coincidente en el foro de PHP en Foros del Web. Dado este código Código PHP: $fecha = date ( "Y-m-d" ,  time ()+ 60 * 60 * 24 * 31 ); $sql  =  "SELECT * FROM vehiculos WHERE revision='$fecha' or extintor='$fecha' or tacografo='$fecha' or seguro='$fecha'" ; ...
  #1 (permalink)  
Antiguo 24/03/2005, 06:36
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 2 meses
Puntos: 0
Si hay resultado busqueda mostrar solo campo coincidente

Dado este código
Código PHP:
$fecha=date("Y-m-d"time()+60*60*24*31);
$sql "SELECT * FROM vehiculos WHERE revision='$fecha' or extintor='$fecha' or tacografo='$fecha' or seguro='$fecha'";
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta"); 
$i=0;
 While ((
$i<10) and $registro=mysql_fetch_assoc($consulta)  )


 {
     echo 
$registro['modelo'];
     echo 
"<br>";
      echo 
$registro['matricula'];
      echo 
"<br>";
      if (
$registro['revision']=$fecha) {
      echo 
"PASAR REVISIÓN EN ".$registro['revision']."";
      echo 
"<br>";
      }
      else {
            } 
      if (
$registro['extintor']=$fecha) {
      echo
"PASAR REVISION EXTINTOR EN :".$registro['extintor']."";
      echo 
"<br>";
      }
      else {
            }
      if (
$registro['tacografo']=$fecha) {
      echo
"PASAR REVISIÓN TACÓGRAFO EN :".$registro['tacografo']."";
      echo 
"<br>";
      }
      else{
           }
      if (
$registro['seguro']=$fecha) {
      echo
"RENOVAR SEGURO EN:".$registro['seguro']."";
      echo 
"<br>";
      }
      else {
            }
  } 
Con el cual intento realizar una consulta a la tabla y me dé los resultados de la consulta, necesitaría que por ejemplo al tener varios campos con fechas busque el registro que contenga $fecha pero quiero que el resultado solo salga por ejemplo el campo que coincida con $fecha y aparte unos campos que siempre van a salir con los cuales no tengo problemas, hice unos condicionales de que cada campo, si coincide con $fecha me lo muestre y si nó nada, el caso es que haciendolo como lo tengo me busca los registros que coincidadn con $fecha, vale hasta ahí me lo hace bien, pero a la hora de mostrar solo el campo que contiene $fecha no me lo respeta y me los muestra todos con la misma fecha, osea $fecha, aunque la fecha séa otra, si por ejemplo la fecha de extintor es $fecha y la de seguro es otra distinta la de seguro y las otras que son distintas me las muestra pero con el valor de $fecha, si hay alguien puede decirme como se pone bien para que si el campo no es igual a $fecha no me lo muestre?, porque después de todo esto tengo que hacer que si hay algún resultado me envíe un email, que esa será otra, venga espero haberme explicado bien y de antemano muchas gracias y saludos

Última edición por mon; 24/03/2005 a las 06:41
  #2 (permalink)  
Antiguo 24/03/2005, 06:56
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 2 meses
Puntos: 0
Dios vaya despiste, ya lo solucioné, Tenía puesto
Código PHP:
if ($registro['revision']=$fecha) { 
      echo 
"PASAR REVISIÓN EN ".$registro['revision'].""
      echo 
"<br>"
      } 
y es
Código PHP:
if ($registro['revision']==$fecha) { 
      echo 
"PASAR REVISIÓN EN ".$registro['revision'].""
      echo 
"<br>"
      } 
sustituir = por ==, gracias de todos modos, ahora tengo que ver cómo pongo que si hay resultado en la consulta me mande un email con los datos rescatados, eso ya lo veo más complicado, tendré que usar la funcíón mail(), ya os preguntaré, venga salu2
  #3 (permalink)  
Antiguo 24/03/2005, 07:06
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Si ponés el if con un solo = a la primer variable le adjudica el valor de la segunda.
Para comparar tenés que usar ==.
¿Son necesarios los "else {}" que tenés por todos lados? ¿Pensás poner algo ahí?

Código PHP:
 $fecha=date("Y-m-d"time()+60*60*24*31);
$sql "SELECT * FROM vehiculos WHERE revision='$fecha' or extintor='$fecha' or tacografo='$fecha' or seguro='$fecha'";
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta");
$i=0;
While ((
$i<10) and $registro=mysql_fetch_assoc($consulta)  )


{
     echo 
$registro['modelo'];
     echo 
"<br>";
      echo 
$registro['matricula'];
      echo 
"<br>";
      if (
$registro['revision']==$fecha) {
      echo 
"PASAR REVISIÓN EN ".$registro['revision']."";
      echo 
"<br>";
      }
      else {
            }
      if (
$registro['extintor']==$fecha) {
      echo
"PASAR REVISION EXTINTOR EN :".$registro['extintor']."";
      echo 
"<br>";
      }
      else {
            }
      if (
$registro['tacografo']==$fecha) {
      echo
"PASAR REVISIÓN TACÓGRAFO EN :".$registro['tacografo']."";
      echo 
"<br>";
      }
      else{
           }
      if (
$registro['seguro']==$fecha) {
      echo
"RENOVAR SEGURO EN:".$registro['seguro']."";
      echo 
"<br>";
      }
      else {
            }
  } 
  #4 (permalink)  
Antiguo 24/03/2005, 07:21
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias Seppo, el tema de los else, no sé, los pongo para decir que si no son como $fecha que no haga nada, ¿puedo quitarlos?, oye ya aprovechando que parece que controlas los if, ¿en el código donde debo de poner un if ?para decir que:
si al consultar la tabla encuentra algún resultado me mande un email con los datos que rescato de esa consulta, y si al ejecutar la consulta no encuentra ningún resultado no haga nada, esto lo estoy haciendo porque necesito esta página para que sea ejecutada en un cronjob de mi servidor en linux, entonces estoy haciendolo por partes porque todavía no controlo mucho el php, venga gracias
  #5 (permalink)  
Antiguo 24/03/2005, 10:05
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
el if lo que hace es comparar dos valores, si devuelve TRUE ejecuta los comandos que orden,as y si devuelve FALSE no los ejecuta. Ahí entraría en juego el else que se ejecuta cuando el if es falso.
Ej:
Código PHP:
$a 1;
if (
$a==1) {
echo 
"La variable a es igual a 1";
} else {
echo 
"La variable a es distinta de 1";

Siempre se ejecuta el if o el else porque la condición es siempre verdadera o falsa.
Tu código sin los elses, igual me deja pensando para que es el $i...
Si la idea es q no muestre más de 10 campos es más fácil usar LIMIT en la consulta de mysql

Código PHP:
 $fecha=date("Y-m-d"time()+60*60*24*31);
$sql "SELECT * FROM vehiculos WHERE revision='$fecha' or extintor='$fecha' or tacografo='$fecha' or seguro='$fecha' LIMIT 10";
$consulta mysql_query($sql) or die ("No se pudo ejecutar la consulta");
while (
$registro=mysql_fetch_assoc($consulta) ) {
     echo 
$registro['modelo']."<br>".$registro['matricula']."<br>";
      if (
$registro['revision']==$fecha) {
          echo 
"PASAR REVISIÓN EN ".$registro['revision']."<br>";
      }
      if (
$registro['extintor']==$fecha) {
          echo
"PASAR REVISION EXTINTOR EN :".$registro['extintor']."<br>";
      }
      if (
$registro['tacografo']==$fecha) {
          echo
"PASAR REVISIÓN TACÓGRAFO EN :".$registro['tacografo']."<br>";
      }
      if (
$registro['seguro']==$fecha) {
          echo
"RENOVAR SEGURO EN:".$registro['seguro']."<br>";
      }
  } 
  #6 (permalink)  
Antiguo 24/03/2005, 13:42
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 2 meses
Puntos: 0
Vale eso ahora ya lo tengo claro el problema ahora es cómo hacer para que envíe un email cada vez que este script se ejecute y encuentre algún resultado de la consulta enviandome todos esos datos que ahora tengo puesto para que me los muestre en la hoja, no necesito que me los muestre en la hoja solo que me mande un email con esos datos
  #7 (permalink)  
Antiguo 24/03/2005, 16:00
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Por supuesto que para eso tenés que tener un SMTP...
[PHP] $fecha=date("Y-m-d", time()+60*60*24*31);
$sql = "SELECT * FROM vehiculos WHERE revision='$fecha' or extintor='$fecha' or tacografo='$fecha' or seguro='$fecha' LIMIT 10";
$consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
while ($registro=mysql_fetch_assoc($consulta) ) {
$mail = $registro['modelo']."<br>".$registro['matricula']."<br>";
if ($registro['revision']==$fecha) {
$mail .= "PASAR REVISIÓN EN ".$registro['revision']."<br>";
}
if ($registro['extintor']==$fecha) {
$mail .= "PASAR REVISION EXTINTOR EN :".$registro['extintor']."<br>";
}
if ($registro['tacografo']==$fecha) {
$mail .= "PASAR REVISIÓN TACÓGRAFO EN :".$registro['tacografo']."<br>";
}
if ($registro['seguro']==$fecha) {
$mail .= "RENOVAR SEGURO EN:".$registro['seguro']."<br>";
}
}
ini_set("SMTP","localhost"); //si no se tiene un smtp en localhost reemplazar por el q corresponda
$from = "[email protected]";
$to = "[email protected]";
$asunto = "Mail de la web";
$header = "MIME-Version: 1.0 Content-Type: multipart/alternative;\nContent-Type: text/html;Charset = 'iso-8859-1'Content -Transfer - Encoding: quoted -printable";
if (mail($to,$asunto,$mail,$header)) {
echo "El mail ha sido enviado con exito";
}else {
echo "No se ha podido enviar el mail";
}
  #8 (permalink)  
Antiguo 25/03/2005, 02:26
mon
 
Fecha de Ingreso: febrero-2003
Mensajes: 506
Antigüedad: 21 años, 2 meses
Puntos: 0
Una vez más gracias Seppo ya lo tenía bastante encaminado pero con esto último que me pones ya lo terminé de hacer adaptandolo un poco más a lo que necesito, venga muchísimas gracias
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 19:20.