Foros del Web » Programando para Internet » PHP »

Consulta SQL y php.

Estas en el tema de Consulta SQL y php. en el foro de PHP en Foros del Web. Hola a todos. Soy nuevo en este foro, asi que antes de comentar la duda que tengo en estos momentos, me presentare. Soy Hugo encantado ...
  #1 (permalink)  
Antiguo 23/09/2008, 04:49
 
Fecha de Ingreso: septiembre-2008
Ubicación: Vigo
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Pregunta Consulta SQL y php.

Hola a todos.

Soy nuevo en este foro, asi que antes de comentar la duda que tengo en estos momentos, me presentare.

Soy Hugo encantado de conoceros a tod@s.

Bueno, la duda que tengo es la siguiente:

Tengo un formulario con una serie de datos en un "index.html" que llama a una funcion php llamada "busqueda.php", lo que quiero que haga esa funcion, es realizar una consulta sql y mostrar los resultados en la pantalla, es decir:

la funcion php tiene que contar el numero de registros encontrados segun un criterio, y mostrar el criterio de busqueda, lo que he hecho hasta ahora es lo siguiente:

<html>
<head>
<title>Búsqueda completada</title>
</head>
<body>
<h1>Los resultados de la búsqueda son: </h1><tr>
<?php
include_once('config/config.inc.php');
include_once('include/database.inc.php');
$cnx = getConnection();
$marca=$_POST['id_marca'];
$articulo=$_POST['id_articulo'];
$categoria=$_POST['id_categoria'];
$producto=$_POST['id_producto'];
$familia=$_POST['id_familia'];


$cnx=mysql_connect("localhost","nombre","pass")or die("Problemas en la conexion");
mysql_select_db("nombre",$cnx)or die("Problemas en la selección de la base de datos");
$query=mysql_query("select count (id_articulos) from me_articulos where id_marca='$marca',id_producto='$producto', id_categoria='$categoria',id_familia='$familia'",$ cnx)or die("Problemas en el select:".mysql_error());
echo "consulta".$query;
$result = mysql_query($query, $cnx);
if($result==FALSE)
{
die('Error: ' . mysql_error();
}
while ( ($row = mysql_fetch_array($result)) !== FALSE ) {
echo '<tr>';
echo "Categoria:" .$categoria;
echo "Marca:" .$marca;
echo "Producto".$producto;
echo "Familia".$familia;

}
mysql_close($cnx);

?>
</body>
</html>



En el while lo que quiero es recorrer la consulta para que muestre los datos pero no se muy bien como hacerlo, espero que entendais algo lo que quise decir, muchas gracias de antemano por la ayuda.
  #2 (permalink)  
Antiguo 25/09/2008, 13:23
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Consulta SQL y php.

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 25/09/2008, 13:32
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Consulta SQL y php.

Prueba usando

Código PHP:
while ($row mysql_fetch_array($resultMYSQL_ASSOC)) {
    echo 
'<tr>';
    echo 
"Categoria:" .$row["id_categoria"];
    echo 
"Marca:" .$row["id_marca"];
    echo 
"Producto".$row["id_producto"];
    echo 
"Familia".$row["id_familia"];

Mas info en Manual oficial de PHP capitulo funcion mysql_fetch_array()

http://es2.php.net/manual/es/functio...etch-array.php


Saludos!
  #4 (permalink)  
Antiguo 25/09/2008, 13:48
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Consulta SQL y php.

Que tal Dacosta, primero que todo bienvenido al foro, segundo tienes algunos errores en el planteamiento de tu consulta si quieres realizar busquedas comparando varios criterios debes de utilizar la instrucción SQL - AND, si deseas obtener el número de registros devueltos por la consulta puedes utilizar la función mysql_num_rows(), prueba así tu código:
Código PHP:
$cnx mysql_connect("localhost","nombre","pass")or die("Problemas en la conexion");
mysql_select_db("nombre",$cnx)or die("Problemas en la selección de la base de datos");
$query mysql_query("select * from me_articulos where id_marca = '$marca' AND id_producto = '$producto'"$cnx)or die("Problemas en el select:".mysql_error());
$filas mysql_num_rows($query);
while (
$row mysql_fetch_array($query)) { 
    echo 
'<tr>'
    echo 
"Categoria:" .$row['id_categoria']; 
    echo 
"Marca:" .$row['id_marca']; 
    echo 
"Producto".$row['id_producto']; 
    echo 
"Familia".$row['id_familia']; 
}
mysql_close($cnx); 
Saludos.
  #5 (permalink)  
Antiguo 25/09/2008, 14:33
Avatar de degochan  
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 1
Respuesta: Consulta SQL y php.

hola dejame que te corrija algo que me suele pasar en algunos servidores yankis
lo que ha echo a mi experiencia es ordenar todo antes de hacer algo :P

Código PHP:
$q="select * from tabla where campo='".$vatiable."'";
$rss=mysql_query($q);
if (!(
$error=mysql_error()){
   while (
$r=mysql_fetch_array($rss)){
           
///sentencias
  
}
}else{
      die(
'eroor en la consulata sql: ' $error);
      } 
bueno por si no lo entienden a que me refiero es esto: campo='$variable' esto suele saltar error por que lo que hace es buscaren la BD la cadena $variable que en realidad lo que se quiere es que busque el contenido de la variable. por eso siempre es mejor colocar bien cancatenadas las cosas que quedaria asi campo='".$variable."' and ........
  #6 (permalink)  
Antiguo 29/09/2008, 01:25
 
Fecha de Ingreso: septiembre-2008
Ubicación: Vigo
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta SQL y php.

Gracias a todos por vuestras respuestas, la verdad es que tenía algo oxidado el SQL y bueno el php ni os cuento... xD, he hecho algunas modificaciones en el código pero me sigue dando errores que no consigo ver, a ver si podeis verlo alguno.

Código PHP:
<html>
<head>
<title>Búsqueda completada</title>
</head>
<body>
<h1>Los resultados de la búsqueda son: </h1><tr>
    <?php
        
include_once('config/config.inc.php');
        include_once(
'include/database.inc.php');
    
        
$cnx getConnection();
    
        
$marca=$_POST['id_marca'];
        
$categoria=$_POST['id_categoria'];
        
$producto=$_POST['id_producto'];
        
$familia=$_POST['id_familia'];

        
$consulta "select count (*) as total from me_articulos where     id_marca=$marca and id_categoria=$categoria and id_producto=$producto and id_familia=$familia";
        
$result mysql_query($consulta$cnx);
    
        
        if(
$result==FALSE)
        {
            die(
'Error: ' mysql_error() . '<br/>' $consulta);   
        }
        while ((
$row=mysql_fetch_array($resultMYSQL_ASSOC))!=FALSE
        {
            echo 
$row['total'];
            echo 
"<tr>";
            
//echo "$row['id_categoria']";
            //echo "<tr>";
            //echo "$row['id_producto']";
            //echo "<tr>";
            //echo "$row['id_familia']";
            //echo "<tr>";        
        
}
    
mysql_close($cnx);
    
    
?>
</body>
</html>
He puesto el and en la consulta sql y le he dado un sinónimo con: "as" y lo que quería era simplemente que mostrase el resultado de la cuenta, pero sin embargo me da este error:

Los resultados de la búsqueda son:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) as total from me_articulos where id_marca=1 and id_categoria=1 and id_product' at line 1
select count (*) as total from me_articulos where id_marca=1 and id_categoria=1 and id_producto=1 and id_familia=1

En el código html he puesto todas las "values" de los campos y no entiendo por qué sigue dando este tipo de error, muchas gracias de antemano por todo. ^^

Salúdos.
  #7 (permalink)  
Antiguo 29/09/2008, 02:22
 
Fecha de Ingreso: septiembre-2008
Ubicación: Vigo
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta SQL y php.

Vale, ya está, resulta que el error estaba en la propia consulta, que tenía un espacio en blanco entre el count y (*), y al parecer fallaba por eso.

Gracias de todos modos.
  #8 (permalink)  
Antiguo 29/09/2008, 08:16
Avatar de degochan  
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 1
Respuesta: Consulta SQL y php.

me alegro que te dieras cuenta solito, pero recuerda lo que te escribi antes en localhos siempre funcionan las cosas, nunca te albides de utilizar bien las reglas de concatenacion, hya servidores que tambien funciona, per hay otros que no, y cuando pase eso si que es embolante ir cambiando todas las consultas SQL ;)
  #9 (permalink)  
Antiguo 30/09/2008, 00:54
 
Fecha de Ingreso: septiembre-2008
Ubicación: Vigo
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta SQL y php.

Hola de nuevo compañeros, a lo largo del día me han surgido varias dudas respecto de la página web que estoy codificando, a ver si me podeis orientar en algunas dudas que tengo ahora mismo.

Resulta que tengo el siguiente código html de un <option></option>, este es:
Código HTML:
 <tr>
									<td><span class="txtEtqBusqueda">Producto:</span></td>
									<td width="65%">
										<select name="id_producto" class="comboBusqueda">
											<option value="0" selected>--Todos--</option>
											<option value="1">Cascos</option>
											<option value="2">Trajes/monos</option>
											<option value="3">Chaquetas</option>
											<option value="4">Pantalones</option>
											<option value="5">Guantes</option>
											<option value="6">Botas</option>
											<option value="7">Protecciones</option>
											<option value="8">Térmicos</option>
											<option value="9">Impermeables</option>
											<option value="10">Infantil</option>
										
										</select>
									</td>
								</tr>
								<tr>
									<td><span class="txtEtqBusqueda">Familia:</span></td>
									<td width="65%">
										<select name="id_familia" class="comboBusqueda">
											<option value="0" selected>--Todas--</option>
											<option value="1">Abatibles/Convertibles</option>
											<option value="2">Integrales</option>
											<option value="3">Jet</option>
											<option value="4">1 pieza</option>
											<option value="5">2 piezas</option>
											<option value="6">Piel</option>
											<option value="7">Textiles</option>
											<option value="8">Textiles impermeables</option>
											<option value="9">Invierno</option>
											<option value="10">Verano</option>
									
											
										</select>
									</td>
								</tr> 
Y el siguiente código php ya modificado y funcionando:
Código PHP:
    <?php
        
include_once('config/config.inc.php');
        include_once(
'include/database.inc.php');
    
        
$cnx getConnection();
    
        
$marca=$_POST['id_marca'];
        
$categoria=$_POST['id_categoria'];
        
$producto=$_POST['id_producto'];
        
$familia=$_POST['id_familia'];
        
        
$consulta "select count(*) as total from me_articulos where id_marca=$marca and id_categoria=$categoria and id_producto=$producto and id_familia=$familia";
        
$result mysql_query($consulta$cnx);
    
        
        if(
$result==FALSE)
        {
            die(
'Error: ' mysql_error() . '<br/>' $consulta);   
        }
        while ((
$row=mysql_fetch_array($resultMYSQL_ASSOC))!=FALSE
        {
            echo 
"Total de registros según la búsqueda: ".$row['total'];
                echo 
"<br>";
                echo 
"<br>";
            echo 
"Marca: ".$marca;
                echo 
"<br>";
            echo 
"Categoria: ".$categoria;
                echo 
"<br>";
            echo 
"Producto: ".$producto;
                echo 
"<br>";
            echo 
"Familia: ".$familia;
                echo 
"<br>";
            
        }
    
mysql_close($cnx);
    
    
?>
En estos momentos si selecciono en la "pagina web" valores de los combos cuando le doy al botón "buscar", me sale el valor númerico (el value="loquesea"), pero lo que yo quería es que me apareciesen todos los nombres según el criterio que busque en el combo; Dicho así es un poco lío, espero que me hayais "entendido" un poco, jeje.

Gracias compañeros, saludos.
  #10 (permalink)  
Antiguo 30/09/2008, 07:21
Avatar de degochan  
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 1
Mensaje Respuesta: Consulta SQL y php.

Dacosta, No entiendo mucho lo que queres hacer ya que en la consulta aparese
Código PHP:
id_marca=$marca and
id_categoria=$categoria and 
id_producto=$producto and 
id_familia=$familia 
Esto es, queres que se encuentre un producto con estas cuatros cosas a la vez,
te lo pregunto porque es casi imposible que te liste algo
ya que si no elegís nada, por ej. en el combo de id_familia=$familia te va a mostrar todos los registro que tenga '0' (cero) de valor y no te va a elegir todos las id_familias para que te elija todas las familias, un concejo para no complicarte demaciado es no concatenarlo en la consulta sino afuera
Código PHP:
 if ($_POST['id_marca'] !=''){
     
$mar=" and id_marca='".$_POST['id_marca']."'";
     }
 if (
$_POST['id_categoria'] !='0'){
     
$cat=" and id_categoria='".$_POST['id_categoria']."'";
     }
      ...
      .
      . 
y despues de hacer eso lo concatenas en la consulta where ".$mar.$cat." .......
tenes encuenta que yo mi ejemplo empieso a concatenar con and asi que eso te lo dejo que pienses vos un ratiro para que resuelvas.;)
y bueno supongo que si o si tiene que buscar por algo eso deberías evaluar también si todos son vacios haces la consulta sin el where de esa forma te listara todos los productos de la tabla.

otra cosa un consejo en los combos viste que tenes <select name="id_producto" class="comboBusqueda">
añadile tambien el id="id_producto" asi te safas de errores futuros;)

espero que te sirva lo que te pase, por que mucho mi coco no da para saver que quieres hacer, OK
Saludos Dacosta

Última edición por degochan; 30/09/2008 a las 07:28
  #11 (permalink)  
Antiguo 30/09/2008, 08:43
 
Fecha de Ingreso: septiembre-2008
Ubicación: Vigo
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta SQL y php.

Sí, me ha servido de mucho, siento no poder explicarme mejor, estoy algo agobiado al ver que no me salen las cosas y me lío mucho al intentar explicarlo, lo que he conseguido fue:
- Contar el número de artículos según el criterio de seleccion de los combo asi:
Código PHP:
$condicion="";

            if(
$marca!=0)
            {
                
$condicion="id_marca=$marca";

            }
            if(
$categoria!=0)
            {
                if(
$condicion!="")
                {
                    
$condicion=$condicion.' and ';
                    
                }
                
$condicion=$condicion."id_categoria=$categoria";
                    
            }
            if(
$producto!=0)
            {
                if(
$condicion!="")
                {
                    
$condicion=$condicion.' and ';
                    
                }
                
$condicion=$condicion."id_producto=$producto";
                    
            }
            if(
$familia!=0)
            {
                if(
$condicion!="")
                {
                    
$condicion=$condicion.' and ';
                    
                }
                
$condicion=$condicion."id_familia=$familia";
                    
            }
            if(
$condicion!="")
            {
                
//echo $condicion;
                
$condicion "where $condicion";
            }

        
        
//$consulta = "select count(*) as total from me_articulos where id_marca=$marca and id_categoria=$categoria and id_producto=$producto and id_familia=$familia";
        
$consulta2"select count(*) as total from me_articulos $condicion";
        
$result mysql_query($consulta2$cnx); 
Muchas gracias por la ayuda, saludos.
  #12 (permalink)  
Antiguo 30/09/2008, 08:46
Avatar de degochan  
Fecha de Ingreso: marzo-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 1
Respuesta: Consulta SQL y php.

de nada :)
  #13 (permalink)  
Antiguo 01/10/2008, 04:58
 
Fecha de Ingreso: septiembre-2008
Ubicación: Vigo
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta SQL y php.

Continuando con la página, tengo un nuevo problema(que raro)

Quiero paginar los resultados que muestro, y tengo el siguiente código php:

Código PHP:
<?php
    
    header
('Content-Type: text/html; charset=' SRV_ENCODING);
    
DEFINE('TAM_PAGINA''25');
    
DEFINE('ART_X_FILA''5'); 
?>
<html>
<head>
<title>Búsqueda completada</title>
</head>
<body>
<h1>Los resultados de la búsqueda son: </h1>
<?php
        
include_once('config/config.inc.php');
        include_once(
'include/database.inc.php');    
        function 
printNavegador ($numPaginas$numPagina
        {

        echo 
'Mostrar p&aacute;g.&nbsp;&nbsp;';
            for ( 
$k 1$k <= $numPaginas$k++ ) 
            {
                if ( 
$k == $numPagina 
                {
                    echo 
$k;
                }
                else 
                {
                    echo 
"<a href='busqueda.php?pag=$k'>" $k '</a>';
                }
                if ( 
$k $numPaginas )  echo "&nbsp;";
            }

        }        
        
$cnx getConnection();    
        
$marca=$_POST['id_marca'];
        
$categoria=$_POST['id_categoria'];
        
$producto=$_POST['id_producto'];
        
$familia=$_POST['id_familia'];
        
$condicion="";        
            if(
$marca!=0)
            {
                
$condicion="id_marca=$marca";

            }
            if(
$categoria!=0)
            {
                if(
$condicion!="")
                {
                    
$condicion=$condicion.' and ';
                    
                }
                
$condicion=$condicion."id_categoria=$categoria";
                    
            }
            if(
$producto!=0)
            {
                if(
$condicion!="")
                {
                    
$condicion=$condicion.' and ';
                    
                }
                
$condicion=$condicion."id_producto=$producto";
                    
            }
            if(
$familia!=0)
            {
                if(
$condicion!="")
                {
                    
$condicion=$condicion.' and ';
                    
                }
                
$condicion=$condicion."id_familia=$familia";
                    
            }
            if(
$condicion!="")
            {
                
$condicion "where $condicion";
                echo 
"Marca: ".$marca['id_marca'];
                echo 
" Categoria: ".$categoria['id_categoria'];
                echo 
" Producto: ".$producto['id_producto'];
                echo 
" Familia: ".$familia['id_familia'];
                echo 
"<br>";
            }
        
        
$consulta "select count(*) as total from me_articulos $condicion";
        
$result mysql_query($consulta$cnx);
        
$consulta2 "select * from me_articulos $condicion";
        
$result2 mysql_query($consulta2$cnx);
        
$row3=mysql_fetch_array($result);
        
$total2 $row3['total']; 
        
$numPagina = (isset($_GET['pag']) ? $_GET['pag'] : 1);
        
$numPaginas floor($total2 TAM_PAGINA) + (($total2 &#37; TAM_PAGINA) == 0 ? 0 : 1);
        
$indice = ($numPagina 1) * TAM_PAGINA;
        
$query 'select id_articulo, cod_migracion, nombre, ruta_foto_completa_100 from me_articulos limit ' $indice ', ' TAM_PAGINA;
        
$result3 mysql_query($query$cnx);        
        
        if(
$result==FALSE)
        {
            die(
'Error: ' mysql_error() . '<br/>' $consulta2);   
        }
        while ((
$row=mysql_fetch_array($result))!=FALSE
        {
            echo 
"Total de registros según la búsqueda: ".$row['total'].'<br>';            
        }
        while(
$row2=mysql_fetch_array($result2))
        {
                echo 
" Referencia: ".$row2['cod_migracion']; 
                echo 
"<td>";
                    echo 
"<br>";
        }
        
        
        
mysql_close($cnx);    
?>
</body>
</html>
El problema está cuando hago click en el botón buscar para que me muestre los resultados según el criterio de búsqueda que seleccioné en los combo, me da el siguiente error.

Notice: Use of undefined constant SRV_ENCODING - assumed 'SRV_ENCODING' in D:\Pentared\Programas\Apache22\htdocs\motoelite\pr ototipo\busqueda.php on line 3

¿A alguien se le ocurre de que puede ser?

Muchas gracias de antemano, saludos.
  #14 (permalink)  
Antiguo 01/10/2008, 05:04
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta SQL y php.

la linea 3 es

header('Content-Type: text/html; charset=' . SRV_ENCODING); ??

por que por mas que busco no encuentro nada sobre SRV_ENCODING

para que te sirve eso??
  #15 (permalink)  
Antiguo 03/10/2008, 03:06
 
Fecha de Ingreso: septiembre-2008
Ubicación: Vigo
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consulta SQL y php.

Pues, la verdad es que no tengo ni idea, lo que hice fue incluirla al principio de la cabecera y parece que ya iba, 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 13:48.