Búsqueda mediante input mysql php

Me atore con lo siguiente y por más que busco la solución, y corrijo no logro hacer lo que quiero espero poder explicarme

Tengo un formulario de un input para buscar el criterio

<form action="#" method="post">   <input type="text" name="criterio" onKeyUp="this.value=this.value.toUpperCase();"  placeholder="No de Expediente"style="width: 310px;">   <input type="submit" name="capturar" value="Buscar!"></form>

Luego debajo de todo mi código html tengo este código

¿

<?php         $n=0;        $result="";        $criterio = $_POST['criterio'];        $primer = substr($criterio,0,1);        if ($criterio == "" or $primer==" ")         {            echo "Aún no has escrito ningún nombre";        }        else {        echo "<h4>Resultados para \"$criterio\".</h4>";        $sql="select * from registro where noexp like '%$criterio%'";        $result=mysqli_query($db, $sql);        }        ?>         <div align="center">        <table border="1" >        <thead>            <tr>                <th>Expediente</th>                <th>Nombre del paciente</th>                <th>Apellido pat</th>                <th>ap materno</th>        </thead>        <tbody>        <?php while ($row=mysqli_fetch_array($result)) { $n++;?>            <tr>                <td><?php echo $row['noexp']; ?></td>                <td><?php echo $row['nombres']; ?></td>                <td><?php echo $row['appaterno']; ?></td>                <td><?php echo $row['apmaterno']; ?></td>            </tr>        <?php } if ($n==0) { echo "<p>No se ha encontrado ningún registro para \"$criterio\".";}?>        </tbody>    </table>    </div>

Mi detalle es el siguiente

Al abrir la página me aparece así

al escribir el no de expediente y darle el boton buscar me muestra bien los datos

Como hacerle para que solo me aparezca el input y el botón

Esos errores ya busque soluciones y no logro solucionarlo

La leyenda de aun no has escrito nada que aparezca en cuanto le de buscar y no haya escrito nada

La leyenda no se ha encontrado ningún registro para, igual que solo me aparezca al darle buscar y no coincidan la búsqueda

1 Respuesta

Respuesta
1

A mi ver es falta de inicializacion de variables, al principio antes de llamar al
$_POST["criterio"] intenta lo siguiente

$criterio = "";

if(isset($_POST["criterio"])){$criterio = $_POST["criterio"];}

De esa manera criterio obtendra un valor vacio y asi la sentencia debera funcionarte correctamente..

Intentalo, y mantennos informados de lo que pasa...

Hola Angel buen día... me queda perfecto haciéndolo así ya no me muestra el primer error, pero aun me sigue mostrando el Aun no has escrito ningún nombre y el segundo error me sigue apareciendo y la leyenda no se ha encontrado ningún registro para " "

Ya busque ya intente y todo y no logro conseguir lo que quiero.

La leyenda de aun no has escrito nada que aparezca en cuanto le de buscar y no haya escrito nada

La leyenda no se ha encontrado ningún registro para, igual que solo me aparezca al darle buscar y no coincidan la búsqueda

Gracias por tu valiosa ayuda

Saludos

Para solucionar lo del segundo mensaje de error... según veo falta esto en la línea

 while ($row=mysqli_fetch_array($result))

while($row=mysqli_fetch_array($result, MYSQL_ASSOC))

y para lo de la leyenda veo un error en tu if

if ($criterio == "" or $primer==" ")

deberia ser asi

if (($criterio == "") || ($primer==" "))

Y para la leyenda "No se ha encontrado ningún registro

intenta esto en tu if:

if (($n==0) && ($criterio != ""))

==================================

en php

|| = or

y

&& = and

Intentalo y sigues comentándonos como vas...

Hola Ángel buen día, perdón por contestar hasta ahorita no había podido retomar el tema, pero bueno aquí ando

El detalle de la leyenda "No se ha encontrado ningún registro" perfecto ya quedo, pero el error me sigue apareciendo al momento de abrir la página

Para mayor detalle te dejo todo mi código aquí haber donde estoy fallando, como detalle la línea 300 contiene el while

<div class="body"></div>        <div class="grad"></div>        <div class="header">            <div>BUSQUEDA</div>        </div>        <form action="" method="post">        <div class="div1">                <input type="text" name="criterio" onKeyUp="this.value=this.value.toUpperCase();"  placeholder="No de Expediente"style="width: 310px;">                <input type="submit" name="capturar" value="Buscar!">        </div>        </form>        <?php         $n=0;        $result="";        $criterio = "";        if(isset($_POST["criterio"])){$criterio = $_POST["criterio"];}        $primer = substr($criterio,0,1);         if (($criterio == "") || ($primer==" "))         {            echo "Aún no has escrito ningún nombre";        }        else {        echo "<h1>Resultados para \"$criterio\".</h1>";        $sql="select * from registro where noexp like '$criterio'";        $result=mysqli_query($db, $sql);       }        ?>         <div align="center">        <table border="1" >        <thead>            <tr>                <th>Expediente</th>                <th>Nombre del paciente</th>                <th>Apellido pat</th>                <th>ap materno</th>        </thead>        <tbody>        <?php while($row=mysqli_fetch_array($result, MYSQL_ASSOC)) { $n++;?>            <tr>                <td><?php echo $row['noexp']; ?></td>                <td><?php echo $row['nombres']; ?></td>                <td><?php echo $row['appaterno']; ?></td>                <td><?php echo $row['apmaterno']; ?></td>            </tr>        <?php } if (($n==0) && ($criterio != "")) { echo "<p>No se ha encontrado ningún registro para \"$criterio\".";}?>        </tbody>    </table>    </div>

Ya trate con mil formas pero no logro corregirlo, muchas gracias

Saludos

Aquí seguimos

Oye, ¿ya intentaste con un if en caso que $result tenga algún valor?

Algo así:

if($result) {
     while($row=mysqli_fetch_array($result, MYSQL_ASSOC)) {
          $n++;
     ?>
          <tr>
               <td><?php echo $row['noexp']; ?></td>
               <td><?php echo $row['nombres']; ?></td>
               <td><?php echo $row['appaterno']; ?></td>
               <td><?php echo $row['apmaterno']; ?></td>
          </tr>
     <?php
     }  // fin del while $row
     if (($n==0) && ($criterio != "")) {
          echo "<p>No se ha encontrado ningún registro para \"$criterio\".";
     } 

} //fin del if     "if($result)"
?>

¡Gracias! Ok Ángel con eso resulto, a la perfección te agradezco muchísimo ahora bueno deja le investigo como ocultar la tabla hasta que apriete buscar aparezca tengo idea con un script pero bueno ya sera otro tema si me atoro te agradezco muchísimo amigo

Saludos

Aquí estamos al pendiente cualquier duda que tengas o ayuda que necesites... Seguimos en contacto!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas