Foros del Web » Programando para Internet » PHP »

Problemas con la Condicional "If"

Estas en el tema de Problemas con la Condicional "If" en el foro de PHP en Foros del Web. Buenas noches, escribo este post porque tengo problemas en la parte de realizar una consulta con las condiciones If y Else. Aquí les dejo mi ...
  #1 (permalink)  
Antiguo 19/09/2013, 16:48
Avatar de angelveloz17  
Fecha de Ingreso: septiembre-2013
Ubicación: Aragua
Mensajes: 14
Antigüedad: 10 años, 7 meses
Puntos: 0
Problemas con la Condicional "If"

Buenas noches, escribo este post porque tengo problemas en la parte de realizar una consulta con las condiciones If y Else.

Aquí les dejo mi código y les voy explicando que es lo que voy haciendo.

(SE QUE TENGO ALGO MALO, PERO NO SE DONDE)

Voy.

A trávez de otra página mande a pedir un dato para realizar la consulta.
Código PHP:
Ver original
  1. <?php
  2.  
  3. conectar(); //Conecto la BD, Ya antes incluí la librería.
  4.  
  5. //Pregunto si Existe el dato solicitado (Lo llamé 'datoconsulta')
  6.  
  7. if (isset ($_POST['datoconsulta'])){
  8. $datoconsulta=$_POST['datoconsulta'];
  9. }
  10.  
  11. //luego hago una busqueda en la data base
  12.  
  13. $sql = "SELECT * FROM historia NATURAL JOIN representante WHERE historia.id_historia='$datoconsulta' OR historia.nombres='$datoconsulta'";
  14. $result = mysql_query ($sql);
  15.  
  16. //pregunto si la busqueda fué exitosa
  17.  
  18. if (isset($result)){
  19.            
  20.         while ($fila = mysql_fetch_array($result)){
  21.         ?>

Código HTML:
Ver original
  1. <br /> <h3>&nbsp;&nbsp;&nbsp;PACIENTE: <?php echo $fila["nombres"]; echo " "; echo $fila["apellidos"];?></h3> <br>
  2.   <h3>&nbsp;&nbsp; Fecha: <?php echo date('d-M-Y'); ?> </h3><br><br>

(MUESTRA MÁS DATOS EN HTML)

PIENSO QUE A PARTIR DE AQUÍ ESTÁ EL ERROR, PORQUE CUANDO SI ES EXITOSA LA BUSQUEDA, TODO EL CÓDIGO HTML SE MUESTRA, JUNTO LOS DATOS EXTRAIDOS DE LA DATA BASE.

PROSIGO.

Código PHP:
Ver original
  1. <?php
  2. }   } //Llaves del If y while
  3. if (!$result){ //Pregunto si la busqueda no existe
  4.     echo "NO EXISTE NADA";
  5. }
  6. ?>

Cuando coloco un dato que se que no existe, y la busqueda no va a dar resultado, No me muestra el "NO EXISTE NADA" que mandé a imprimir, simplemente me aparece en blanco la página.

Junto a el "NO EXISTE NADA" agregaré unos campos, pero probé para ver si funcionada con solo ese echo y aún así nada me muestra.

Se que estoy usando mal los If. tambien lo hice con else y nada.

Código PHP:
Ver original
  1. else{
  2.     echo "NO EXISTE NADA";
  3. }

no encuentro el error :-s

si pueden ayudarme, se los agradecería.
  #2 (permalink)  
Antiguo 19/09/2013, 16:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con la Condicional "If"

Lo que pasa es que el isset($result) comprueba la existencia de la variable únicamente, y ciertamente existe, aunque eso no implica que tenga un valor adecuado.

Con sólo cambiar lo siguiente debería bastar:
Código PHP:
Ver original
  1. // MAL
  2. if (isset($result))
  3.  
  4. // BIEN
  5. if ($result)
  6.  
  7. // MEJOR
  8. if ($result !== FALSE)

Ejecuta este ejemplo y observa lo que sucede:
Código PHP:
Ver original
  1. $foo = false;
  2.  
  3. var_dump(isset($foo));
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/09/2013, 16:57
 
Fecha de Ingreso: septiembre-2013
Mensajes: 3
Antigüedad: 10 años, 7 meses
Puntos: 2
Respuesta: Problemas con la Condicional "If"

Creo que puede tener que ver con que el result te devuelve false si la consulta es erronea y lo que tu realmente quieres saber es si la consulta no te devuelve ningun resultado.

Para este caso que yo te comento lo que deberias de hacer seria lo siguiente:

if ( mysql_num_rows($result) == 0 ) // si la consulta no devuelve ninguna fila ...
  #4 (permalink)  
Antiguo 19/09/2013, 17:10
Mariuch
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con la Condicional "If"

Hola. Acá te paso tu código con algunas correciones, probalo ya que debería solucionar tu problema. No hace falta que utilices isset para preguntar por el resultado de tu consulta, simplemente con preguntar si $result es verdadero, ya obtienes la información que necesitás.

También reemplacé el if que utilizaste para obtener el valor de 'datoconsulta' por un operador ternario, que es la manera más clásica de recuperar información en PHP.

Código PHP:
<?php
    conectar
(); //Conecto la BD, Ya antes incluí la librería.
     
    //Pregunto si Existe el dato solicitado (Lo llamé 'datoconsulta')
     
    
$datoconsulta = ( isset( $_POST'datoconsulta' ] ) ) ? $_POST'datoconsulta' ] : false;

    
//luego hago una busqueda en la data base
     
    
$sql "SELECT * FROM historia NATURAL JOIN representante WHERE historia.id_historia='$datoconsulta' OR historia.nombres='$datoconsulta'";
    
$result mysql_query ($sql);
     
    
//pregunto si la busqueda fué exitosa
     
    
if( $result ){  
        while( 
$fila mysql_fetch_array$result )){
    
?>
        <br /> <h3>&nbsp;&nbsp;&nbsp;PACIENTE: <?php echo $fila["nombres"]; echo " "; echo $fila["apellidos"];?></h3> <br>
        <h3>&nbsp;&nbsp; Fecha: <?php echo date('d-M-Y'); ?> </h3><br><br>
    <?php
        
}   
    } else {
        echo 
'No existe nada';
    }
?>
De esta manera debería funcionar.
Una cosa más, la consulta SQL que estás haciendo tiene algunos errores al plantear el JOIN, ya que además del WHERE para que levante la información que le pedís, debe ir siempre acompañado de una cláusula ON que lo respalde. Te doy un ejemplo:

Código PHP:
<?php

$consulta 
"SELECT * FROM usuarios JOIN paises on usuarios.PAISES_ID = paises.ID WHERE NOMBRE_PAIS = 'Francia'";

?>
Aquí estaría haciendo un join de la tabla con los datos de usuarios más la de los países para obtener la información de ambos, pero siempre es necesario matchear foreign key contra primary key cuando uses un join ya que si por algún motivo un registro que necesites no cumple con tu cláusula where, no vas a recibir la información necesaria.

Saludos
  #5 (permalink)  
Antiguo 19/09/2013, 18:43
Avatar de angelveloz17  
Fecha de Ingreso: septiembre-2013
Ubicación: Aragua
Mensajes: 14
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Problemas con la Condicional "If"

Realicé todo lo que me escribieron, y nada, sigue el problema, También cambié la forma de buscar con JOIN ON, y nada, cuando marcaba un registro falso, no aparece el valor de else.

Pensé que el problema era al consultar, pero tampoco lo es, no se realmente que es para que no me aparezca el valor de ELSE al marcar un registro que no existe :-s

De todas formas aquí dejo el código, por si otra persona puede encontrar el error y ayudarme T____T

Código PHP:
<?php 
    $titulo
="Consulta Buscada";
    include (
"libreria.php");
    
head($titulo);
    
aside();
?>

<div id="content">

<?php

conectar
();

$datoconsulta=$_POST['datoconsulta'];
        
$sql="SELECT * FROM historia NATURAL JOIN representante WHERE nombres='$datoconsulta'";
$result=mysql_query($sql);
        
if (
$result){
    while( 
$fila mysql_fetch_array$result )){
?>
Código HTML:
 <br /> <h3>&nbsp;&nbsp;&nbsp;PACIENTE: <?php echo $fila["nombres"]; echo " "; echo $fila["apellidos"];?></h3> <br>
           <h3>&nbsp;&nbsp; Fecha: <?php echo date('d-M-Y'); ?> </h3><br><br>
         

<table border="0" cellspacing="0" class="tablaconsulta">
  <tr>
    <td class="tc">ID:</td>
    <td class="ttc"><?php echo $fila["id_historia"]; ?></td>
  </tr>
  <tr>
    <td class="tc">Nombres:</td>
    <td class="ttc"><?php echo $fila["nombres"]; ?></td>
  </tr>
  <tr>
    <td class="tc">Apellidos</td>
    <td class="ttc"><?php echo $fila["apellidos"]; ?></td>
  </tr>
  <tr>
    <td class="tc">Edad:</td>
    <td class="ttc"><?php echo $fila["edad"]; ?></td>
  </tr>
  <tr>
    <td class="tc">Género:</td>
    <td class="ttc"><?php echo $fila["genero"]; ?></td>
  </tr>
  <tr>
    <td class="tc">Fecha de Nacimiento:</td>
    <td class="ttc"><?php echo $fila["fecha_nac"]; ?></td>
  </tr>
  <tr>
    <td class="tc" height="60px">Lugar de Nacimiento:</td>
    <td class="ttc"><?php echo $fila["lugar_nac"]; ?></td>
  </tr>
  <tr>
    <td class="tc" height="80px">Dirección:</td>
    <td class="ttc"><?php echo $fila["direccion"]; ?></td>
  </tr>
  <tr>
    <td class="tc">Tlf. Movil:</td>
    <td class="ttc"><?php echo $fila["tlf_m"]; ?></td>
  </tr>
  <tr>
    <td class="tc">Tlf. Fijo:</td>
    <td class="ttc"><?php echo $fila["tlf_f"]; ?></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td class="tc">Representante:</td>
    <td class="ttc"><?php echo $fila["nombre"]; echo " "; echo $fila["apellido"]; ?></td>
  </tr>
  <tr>
    <td class="tc">C.I:</td>
    <td class="ttc"><?php echo $fila["cedula"]; ?></td>
  </tr>
</table> <br />

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Editar" name="buscar" class="bcontinuar"  title="Hacer clic para Editar información del Paciente"/>
<input type="submit" value="Eliminar" name="buscar" class="bcontinuar"  title="Hacer clic para Eliminar al Paciente"/> 
Código PHP:
<?php
    
}} else {
        echo 
'No existe nada' .mysql_error();
        
$foo false;
        
var_dump(isset($foo));
    }
?>
</div>

La cuestion es que cuando coloco un dato que se que no existe en la base de datos, en vez de mostrar el mensaje de error "no existe

Última edición por angelveloz17; 19/09/2013 a las 20:37

Etiquetas: condicional, fecha, html, mysql, select, sql
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 14:34.