Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] buscar dato de una bd y redirigir

Estas en el tema de buscar dato de una bd y redirigir en el foro de PHP en Foros del Web. Buenas, el pregunton de nuevo..espero no estar molestando, vean he trabajado con codigos que muestran todo el contenido de una tabla en una BD, o ...
  #1 (permalink)  
Antiguo 03/11/2014, 16:21
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
buscar dato de una bd y redirigir

Buenas, el pregunton de nuevo..espero no estar molestando, vean he trabajado con codigos que muestran todo el contenido de una tabla en una BD, o en una columna, pero me piden algo diferente:
con un codigo simple como este
Código HTML:
Ver original
  1. <form method="post">
  2. Buscar por rut:  <input type="text" name="rutUser" />
  3. </form>

para buscar un numero en una tabla llamada "clientes"
si esta muestra los datos,sino redirige a una pagina que es para ingresar el cliente a la tabla, eso puedo hacerlo, el problema es lo primero de buscar en bd sin simplemente poner un "select"

para conetarme a la BD, uso este archivo aparte llmadado "database.php"

Código PHP:
Ver original
  1. <?php
  2. class Database
  3. {
  4.     private static $dbName = 'automotora' ;
  5.     private static $dbHost = 'localhost' ;
  6.     private static $dbUsername = 'root';
  7.     private static $dbUserPassword = '';
  8.      
  9.     private static $cont  = null;
  10.      
  11.     public function __construct() {
  12.         die('Init function is not allowed');
  13.     }
  14.      
  15.     public static function connect()
  16.     {
  17.        // One connection through whole application
  18.        if ( null == self::$cont )
  19.        {    
  20.         try
  21.         {
  22.           self::$cont =  new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
  23.         }
  24.         catch(PDOException $e)
  25.         {
  26.           die($e->getMessage());
  27.         }
  28.        }
  29.        return self::$cont;
  30.     }
  31.      
  32.     public static function disconnect()
  33.     {
  34.         self::$cont = null;
  35.     }
  36. }
  37. ?>


o si es mas simple podria usar este conexion, depende de la opinion de los expertos en esta pagina

Código PHP:
Ver original
  1. <?php
  2. ?>
  3. <?php
  4. //quitar error de php 5.5
  5. error_reporting(E_ALL ^ E_DEPRECATED);
  6.  
  7. function conectar(){
  8.     $cnn = mysql_connect("localhost", "root", "");
  9.     mysql_select_db("automotora", $cnn);
  10.     return $cnn;
  11. }
  12. //valida usuario, recordar nombre de la tabla y su contenido
  13. function validarUser($user, $pass){
  14.     $res = mysql_query("SELECT * FROM usuarios WHERE usuario='".$user."' and clave='".$pass."'",conectar());
  15.     return $res;
  16. }
  17.  
  18. function mostrarAuto(){
  19.     $res = mysql_query("SELECT * FROM vehiculo  WHERE estado='en_venta'",conectar());
  20.     return $res;
  21. }
  22.  
  23. function desconectar(){
  24.     mysql_close(conectar());
  25. }
  26. ?>

gracias por su tiempo
  #2 (permalink)  
Antiguo 03/11/2014, 17:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: buscar dato de una bd y redirigir

Para buscar el dato y mostrar resultados o hacer la redirección, puedes hacerlo así:

Código PHP:
Ver original
  1. //Acá realizas tu conexión a la BD
  2.  
  3. //Tomas y desinfectas al dato recibido
  4. $dato = mysqli_real_escape_string($conexion, strip_tags($_GET['rutUser']));
  5.  
  6. //Realizas la consulta
  7. $query = mysqli_query($conexion, "SELECT * FROM tabla WHERE campo = {$dato}");
  8.  
  9. //Si la consulta no devolvió registros, realizo la redirección
  10. if (!mysqli_num_rows($query)){
  11.     header ('Location: ejemplo.php');
  12.     exit;
  13. }
  14. //Caso contrario, muestro los datos
  15. else{
  16.     $row = mysqli_fetch_array($query);
  17.     echo 'Dato 1: ' . $row['campo1'];
  18.     echo 'Dato 2: ' . $row['campo2'];
  19.     echo 'Dato N: ' . $row['campoN'];
  20. }

Ese sería un ejemplo sencillo utilizando la extensión MySQLi, pero si deseas, utiliza la de PDO. No te recomiendo la otra porque ya es obsoleta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 03/11/2014, 20:09
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: buscar dato de una bd y redirigir

mmm, pero eso no es como una query normal?, lo que necesito es escribirlo en una textbox, apretar un boton con submit y de ahi que me muestre si esta o si no que me envie a otra pag, desgraciadamente no he trabajado con algo asi antes por eso no se siquiera como empezar, aparte, PDO lo aprendi solo hace poco asi que no lo domino bien
  #4 (permalink)  
Antiguo 04/11/2014, 13:17
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: buscar dato de una bd y redirigir

trate de hacerlo, como mencione, este tipo de busqueda no las conozco asi que hize lo que pude

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="utf-8">
  5.  
  6. </head>
  7.  <?php
  8.      //Acá realizas tu conexión a la BD
  9.       require 'database.php';
  10.     //Tomas y desinfectas al dato recibido
  11.     $dato = mysqli_real_escape_string($connect, strip_tags($_GET['rut']));
  12.      
  13.     //Realizas la consulta
  14.     $query = mysqli_query($connect, "SELECT * FROM clientes WHERE campo = {$dato}");
  15.      
  16.     //Si la consulta no devolvió registros, realizo la redirección
  17.     if (!mysqli_num_rows($query)){
  18.         header ('Location: vercomprador.php');
  19.         exit;
  20.     }
  21.     //Caso contrario, muestro los datos
  22.     else{
  23.         $row = mysqli_fetch_array($query);
  24.         echo 'Dato 1: ' . $row['rut'];
  25.         echo 'Dato 2: ' . $row['nombre'];
  26.         echo 'Dato N: ' . $row['direccion'];
  27.         echo 'Dato N: ' . $row['telefono'];
  28.     }
  29.  ?>
  30. <body>
  31.     <div class="container">
  32.             <div class="row">
  33.                 <h3>Buscar cliente</h3>
  34.             </div>
  35.   <form action="vercomprador.php" method="post">
  36.   <input name="rutUser" type="text">
  37.  
  38.   </form>          
  39. <p>
  40.                     <center><a href="menu.php">volver</a></center>
  41.                 </p>
  42.   </body>
  43. </html>


use el arhivo de conexion
Código PHP:
Ver original
  1. <?php
  2. class Database
  3. {
  4.     private static $dbName = 'automotora' ;
  5.     private static $dbHost = 'localhost' ;
  6.     private static $dbUsername = 'root';
  7.     private static $dbUserPassword = '';
  8.      
  9.     private static $cont  = null;
  10.      
  11.     public function __construct() {
  12.         die('Init function is not allowed');
  13.     }
  14.      
  15.     public static function connect()
  16.     {
  17.        // One connection through whole application
  18.        if ( null == self::$cont )
  19.        {    
  20.         try
  21.         {
  22.           self::$cont =  new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
  23.         }
  24.         catch(PDOException $e)
  25.         {
  26.           die($e->getMessage());
  27.         }
  28.        }
  29.        return self::$cont;
  30.     }
  31.      
  32.     public static function disconnect()
  33.     {
  34.         self::$cont = null;
  35.     }
  36. }
  37. ?>


y solo obtuve error tras error, ayuda por favor
  #5 (permalink)  
Antiguo 04/11/2014, 16:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: buscar dato de una bd y redirigir

Cita:
Iniciado por jmfmagnum Ver Mensaje
pero eso no es como una query normal?, lo que necesito es escribirlo en una textbox, apretar un boton con submit y de ahi que me muestre si esta o si no que me envie a otra pag
Para saber si el dato escrito existe en la base de datos, necesariamente tienes que buscarlo mediante una consulta, no hay de otra.

Cita:
Iniciado por jmfmagnum Ver Mensaje
trate de hacerlo, como mencione, este tipo de busqueda no las conozco asi que hize lo que pude
Noto varios errores. Para empezar, si quieres hacer la búsqueda en la misma página en la que se encuentra el formulario, debes de ejecutar el código PHP solo si has recibido datos mediante el método POST que es el que veo que utilizas.

Código PHP:
Ver original
  1. if (isset($_POST)){
  2.     //Aquí va el código PHP
  3. }

Por otro lado, si tu conexión la realizas mediante la extensión PDO o MySQL, pues debes de utilizar las funciones que estas ofrecen y no las de MySQLi que es la que puse como ejemplo. Si quieres utilizar las funciones de MySQLi, este sería un simple ejemplo para realizar una conexión:

Código PHP:
Ver original
  1. $conexion = mysqli_connect('server', 'user', 'password', 'bd_name');
  2. if (!$conexion) exit ('No se pudo realizar la conexión: '  . mysqli_connect_error());

Por último, si envías datos a través del método POST, pues debes de recibirlos de la misma manera y no mediante el método GET, que es como veo que recibes al dato (y que creo que es por como lo viste en el ejemplo), además, si la caja de texto en la que escribiste el dato se llama 'rutUser', pues debes de tomar a dicho dato de la misma manera: $_POST['rutUser']. De cualquier forma, si solo vas a realizar una consulta a la base de datos y no modificar o eliminas datos, deberías de utilizar el método GET.

Corrige los errores y nos cuentas cómo te fue.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 05/11/2014, 18:21
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: buscar dato de una bd y redirigir

gracias pero como dije, soy algo lelo en esto, dime en que parte del codigo tengo que poner esto?, porque no tengo idea
Código PHP:
Ver original
  1. if (isset($_POST)){
  2.         //Aquí va el código PHP
  3.     }
  #7 (permalink)  
Antiguo 05/11/2014, 18:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: buscar dato de una bd y redirigir

El código PHP que tienes elaborado (y que debes de corregir), debe de ir dentro del bloque IF, es decir, en lugar del comentario que dice "Aquí va el código PHP", de hecho, por eso puse el comentario.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 06/11/2014, 11:08
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: buscar dato de una bd y redirigir

Cita:
Iniciado por Alexis88 Ver Mensaje
El código PHP que tienes elaborado (y que debes de corregir), debe de ir dentro del bloque IF, es decir, en lugar del comentario que dice "Aquí va el código PHP", de hecho, por eso puse el comentario.

Saludos
algo asi?
Código PHP:
Ver original
  1. if (isset($_POST)){
  2.     if (!mysqli_num_rows($query)){
  3.         header ('Location: vercomprador.php');
  4.         exit;
  5.     }
  6.     //Caso contrario, muestro los datos
  7.     else{
  8.         $row = mysqli_fetch_array($query);
  9.         echo 'Dato 1: ' . $row['rut'];
  10.         echo 'Dato 2: ' . $row['nombre'];
  11.         echo 'Dato N: ' . $row['direccion'];
  12.         echo 'Dato N: ' . $row['telefono'];
  13.     }}

con ese cambio logro que vaya directo al "vercomprador.php", pero ignora el textbox, aun no puedo hacer la busqueda en si :C,
Estoy nervioso y cada dia mas confundido, se que no deberia pedir el programa ya hecho, pero se me acaba el tiempo

Última edición por jmfmagnum; 06/11/2014 a las 11:39
  #9 (permalink)  
Antiguo 07/11/2014, 12:18
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: buscar dato de una bd y redirigir

OK, tras horas en internet logre hacer una solucion , la dejo aqui para quien la necesite ademas de mi
Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="utf-8">
  5.  
  6. </head>
  7.  
  8. <body>
  9.     <div class="container">
  10.             <div class="row">
  11.                 <h3>Buscar cliente</h3>
  12.             </div>
  13. <form name="consulta1" method="post" action="ejecuta.php">
  14. Codigo del producto:<input type="text" name="codigo" maxlength="10">
  15. <input type="submit" value="Aceptar">
  16. </form>  
  17. <p>
  18.                     <center><a href="menu.php">volver</a></center>
  19.                 </p>
  20.   </body>
  21. </html>

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.  
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Ver Autos disponibles</title>
  7. <script>
  8.     function noesta(){
  9.         alert("Cliente no existe...");
  10.         window.location = "creacliente.php";
  11.     }
  12.     function esta(){
  13.         alert("Se encontro Cliente...");
  14.        
  15.     }
  16. </script>
  17. </head>
  18.  
  19. <body>
  20. <center><h1>Lista Clientes</h1> </center>
  21.  
  22. <?php
  23. //quitar error de php 5.5
  24. error_reporting(E_ALL ^ E_DEPRECATED);
  25. /******** CONECTAR CON BASE DE DATOS **************** */
  26.    $con = mysql_connect("localhost","root","");
  27.    if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}
  28.  
  29. /********* CONECTA CON LA BASE DE DATOS  **************** */
  30.    $database = mysql_select_db("automotora",$con);
  31.    if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
  32. /* ********************************************** */
  33.  
  34. //ejecutamos la consulta
  35. $sql = "SELECT * FROM clientes WHERE rut='".$_POST['codigo']."'";
  36. $result = mysql_query ($sql);
  37. // verificamos que no haya error
  38.  if (!mysql_num_rows($result)){  
  39.     echo "<script>noesta()</script>";
  40.    
  41.    exit();
  42. }
  43. else {
  44.      echo "<script>esta()</script>";
  45.     echo "<table border='1'><tr><td>Rut</td><td>Nombre</td><td>Direccion</td><td>telefono</td>
  46.         </tr><tr>";
  47. //obtenemos los datos resultado de la consulta
  48.     while ($row = mysql_fetch_array($result)){
  49.          echo '<td>' . $row['rut']."</td>";
  50.         echo '<td>' . $row['nombre']."</td>";
  51.         echo '<td>' . $row['direccion']."</td>";
  52.         echo '<td>' . $row['telefono']."</td>";
  53.     }
  54.     echo "</tr></table>";
  55.      echo "";
  56.  }
  57. ?>
  58.  
  59. <center><a href="menu.php">Volver</a></center>
  60. <center><a href="creaventa.php">Crear compra</a></center>
  61. </body>
  62. </html>

Etiquetas: bd, dato, mysql, redirigir, select, tabla, usuarios
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 10:51.