Jump to content


Photo

Problemas con valores GET y POST al momento de consultar a bd.


  • Please log in to reply
1 reply to this topic

#1 mavera

mavera

    Newbie

  • Miembros
  • Pip
  • 1 posts

Posted 10 October 2012 - 07:28 PM

Favor su ayuda:
Tengo problemas al mostrar los datos de una consulta por medio de un boton , mi metodo para mostrar la consulta es el siguiente:

archivo class_productos.php

class Productos
{

//creo la clase y defino variables
private $per;

public function __construct()
{
    $this->per=array();
}
//creo metodo
public function getproductos()
{
 
      $sql="select * from productos where nombre = '".$_POST["nom"]."'";
      //$sql="select * from productos";
      $res=mysql_query($sql,Conectar::con());
      //echo "holaaaa";
      //echo "la cantidad de registros es ". mysql_num_rows($res)."as";
          if (mysql_num_rows($res)==0)
          {
          echo "la consulta es vacia";
          header ("Location: productos.php?m=1") ;
          }
          else
        {

          while ($reg=mysql_fetch_assoc($res))
        {
        $this->per[]=$reg;
        }
      //echo "la consulta tiena mas de 0";
      return $this->per;
      header ("Location: productos.php?m=2") ;
}

}




ahora cuando el codigo de la pagina en la cual llamo al metodo la cual es producto.php de esta misma realizo la consulta y deberia recibir respuesta segun valor del valor recibido por GET en este caso m=1 o m=2

<?php require_once("class/class_productos.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Productos</title>
</head>

<body>

<form name="form" action="" method="post">
Indique el nombre del producto: <input type="text" name="nom" />
<hr />
<input type="hidden" name="grabar" value="si" />
<input type="submit" value="Buscar" title="Buscar" />
</form>
<?php
//print_r($_POST);
$obj= new Productos();
if (isset($_POST))
{
      if ($_POST["grabar"]=="si")
        {
                $datos=$obj->getproductos();
                echo "paso por aki";
                for ($i=0;$i < sizeof($datos);$i++)
                {
                        echo $datos[$i]["nombre"];
                        echo "<br>";
                  }
                  //echo "llame a getproductos";
                  //echo "<br>";

        }
}
?>
<?php

if (isset($_GET["m"]))
{
          switch ($_GET["m"])
          {
                  case '1':
?>
<h3 style="color:#090">no hay productos</h3>
<?php
                    break;
                    case '2':
?>
<h3 style="color:#F00">existen estos productos</h3>
<?php

                  break;

          }
}
?>
</body>
</html>



si dejo el campo vacio y presiono buscar se ejecuta correctamente el script, y me pasa el valor por GET con m=1 y aparece el mensaje "no hay productos" lo cual es correcto, sin embargo, al momento por consultar por un producto el cual EXISTE en la base de datos (en mi caso el producto "CASA"), me sigue pasando el valor por GET m=1 y me despliega CORRECTAMENTE los valores de la consulta y raramente NO me toma el valor m=2 y no despliega el mensaje "Se encontraron valores".

Favor ayudenme....
Gracias.

PD: tengo problemas con el mensaje "Undefinied Index: grabar" y eso que esta con el ISSET :s, pero me importa mas resolver las dudas de arriba.
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 11 October 2012 - 09:32 AM

a ver... prueba de esta manera...


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Productos</title>
</head>

<body>

<form name="form" action="" method="post">
Indique el nombre del producto: <input type="text" name="nom" />
<hr />
<input type="hidden" name="grabar" value="si" />
<input type="submit" value="Buscar" title="Buscar" />
</form>

<?php require_once("class/class_productos.php");

  $obj= new Productos();
  if (isset($_POST["grabar"])) {
    if ($_POST["grabar"]=="si") {
      $datos=$obj->getproductos();
      for ($i=0;$i < sizeof($datos);$i++) {
        echo $datos[$i]["nombre"]."<br>";
      }
    }
  }

  if (isset($_GET["m"])) {
    switch ($_GET["m"]) {
      case '1': echo '<h3 style="color:#090">no hay productos</h3>';
          break;
      case '2': echo '<h3 style="color:#F00">existen estos productos</h3>';
          break;
    }
  }
 
?>
</body>
</html>
 


  • 0




IP.Board spam blocked by CleanTalk.