Foros del Web » Programando para Internet » PHP »

Error al insertar un ejecutar busqueda

Estas en el tema de Error al insertar un ejecutar busqueda en el foro de PHP en Foros del Web. Hola, estoy intentando hacer una busqueda en un php que se llama venta, el procedimiento se hace en otro php y luego devuelve el resultado ...
  #1 (permalink)  
Antiguo 26/08/2012, 01:05
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Error al insertar un ejecutar busqueda

Hola, estoy intentando hacer una busqueda en un php que se llama venta, el procedimiento se hace en otro php y luego devuelve el resultado pero el error que me aparece es:
Cita:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\prueba\3\buscaproducto.php on line 10
Luego le puse comillas simples a : la consulta from productos where codigo=$d";

pero ahora se pasa de largo y me aparece el mensaje del else osea... codigo de producto incorrecto.

he revisado varias veces pero no doy con el error... la base de datos contiene registros para probar y no logro resolverlo... ven algún error en estos codigos? falta algo? sobra algo? les pido de su ayuda... desde ya gracias!!.


Código PHP:
<?php

$c
=mysql_connect("localhost","root","1234");
mysql_select_db("ventas");
$d=0;
$consulta="select max(folio) from ventas";
$r=mysql_query($consulta);

$dato=mysql_fetch_row($r);
$d=$dato[0]+1;

mysql_close();
?>




<html>
<head>
    <title> venta </title>
<script type="text/javascript">

    function grabar(){

        var d1=document.getElementById("folio");
        var d2=document.getElementById("fecha");
        var d3=document.getElementById("clave");

        var ad1=d1.value;
        var ad2=d2.value;
        var ad3=d3.value;
                
        var t=document.getElementById("listado");        

        var envio="folio="+ad1+"&fecha="+ad2+"&clave="+ad3;
        var valor="";
        var a1="";
        var a2="";
        var a3="";
        
        for (var linea=1;linea<t.rows.length;linea++){
            
            a1=t.rows[linea].cells[0].innerHTML;
            a2=t.rows[linea].cells[1].innerHTML;
            a3=t.rows[linea].cells[4].innerHTML;
            
            valor="&w"+linea+"="+a1+"&x"+linea+"="+a2+"&y"+linea+"="+a3;
            envio=envio+valor;
            }
    
        try{ var ajax= new ActiveXObject("Msxml2.XMLHTTP"); }
        catch(e){
            try{ var ajax=new ActiveXObject("MicrosoftXMLHTTP"); }
        catch(E){ var ajax=false; }
        }

        if (!ajax && typeof XMLHttpRequest!='undefined'){
            var ajax=new XMLHttpRequest();
        }

        ajax.onreadystatechange=function(){
        var zona=document.getElementById("mensaje");
        if (ajax.readyState==4){
           if (ajax.status==200){
            zona.innerHTML=ajax.responseText;
            }}
        }
        
        

        ajax.open("POST","vendido.php",true);
        ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        ajax.send(envio);

           }





    function buscac(){
        var dato=document.getElementById("clave");
        var d=dato.value;

        try{ var ajax= new ActiveXObject("Msxml2.XMLHTTP"); }
        catch(e){
            try{ var ajax=new ActiveXObject("MicrosoftXMLHTTP"); }
        catch(E){ var ajax=false; }
        }

        if (!ajax && typeof XMLHttpRequest!='undefined'){
            var ajax=new XMLHttpRequest();
        }

        ajax.onreadystatechange=function(){
        var zona=document.getElementById("cliente");
        if (ajax.readyState==4){
           if (ajax.status==200){
            zona.innerHTML=ajax.responseText;
            }}
        }

        ajax.open("POST","buscacliente.php",true);
        ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        ajax.send("clave="+d);

           }

    function articulo(){
        var dato=document.getElementById("codigo");
        var d=dato.value;

        try{ var ajax= new ActiveXObject("Msxml2.XMLHTTP"); }
        catch(e){
            try{ var ajax=new ActiveXObject("MicrosoftXMLHTTP"); }
        catch(E){ var ajax=false; }
        }

        if (!ajax && typeof XMLHttpRequest!='undefined'){
            var ajax=new XMLHttpRequest();
        }

        ajax.onreadystatechange=function(){
        var zona=document.getElementById("datapro");
        if (ajax.readyState==4){
           if (ajax.status==200){
            zona.innerHTML=ajax.responseText;
            }}
        }

        ajax.open("POST","buscaproducto.php",true);
        ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        ajax.send("codigo="+d);

           }

    

    function actual(){
    var n=new Date();
    var f=document.getElementById("fecha");
    f.value=n.getFullYear()+"-"+n.getMonth()+"-"+n.getDay();
        
    }

function listado(){
    var c=document.getElementById("codigo");
    var can=document.getElementById("cantidad");
    var des=document.getElementById("descripcion");
    var tam=document.getElementById("tamano");
    var exi=document.getElementById("existencia");
    var pre=document.getElementById("precio");
    
    var x=parseInt(can.value,10);
    var y=parseInt(exi.value,10);
    if (x > y){
        alert ("Existencia del producto insuficiente");
        }
    else{
        var st=x*parseInt(pre.value);
    
        var t=document.getElementById("listado");
        var l=t.rows.length;
        t.insertRow(l);
        
        var c1=document.createElement("td");
        c1.innerHTML=c.value;
        
        var c2=document.createElement("td");
        c2.innerHTML=can.value;

        var c3=document.createElement("td");
        c3.innerHTML=des.value;

        var c4=document.createElement("td");
        c4.innerHTML=tam.value;

        var c5=document.createElement("td");
        c5.innerHTML=pre.value;

        var c6=document.createElement("td");
        c6.innerHTML=st
        
        t.rows[l].appendChild(c1);
        t.rows[l].appendChild(c2);
        t.rows[l].appendChild(c3);
        t.rows[l].appendChild(c4);
        t.rows[l].appendChild(c5);
        t.rows[l].appendChild(c6);

        var p=document.getElementById("pago");
        var dinero=parseInt(p.value);
        p.value=dinero+st
        
        
        }
    }

</script>
<style type="text/css">
#cliente {
    position:absolute;
    left:363px;
    top:21px;
    width:451px;
    height:115px;
    z-index:1;
}
#datapro {
    position:absolute;
    left:206px;
    top:180px;
    width:611px;
    height:72px;
    z-index:2;
}
#ppp {
    position:absolute;
    left:501px;
    top:262px;
    width:300px;
    height:31px;
    z-index:3;
}
#mensaje {
    position:absolute;
    left:300px;
    top:400px;
    width:300px;
    height:50px;
    z-index:4;
}

</style>
</head>
<body onLoad="actual();">

<div id="ppp">Total:
  <input type="text" name="pago" id="pago" value="0"> 
</div>
<form name="venta">
<p>Num de Folio<?php echo ("<input type=\"text\" name=\"folio\" id=\"folio\" value=\"$d\" DISABLED>"); ?></p>

<p>Fecha <input type="text" name="fecha" id="fecha"></p>
<p>clave del cliente
  <input type="number" id="clave" REQUIERED><input type="button" value="buscar" onClick="buscac();">
</p>
<p>&nbsp;</p>
    <p>Codigo
  </p>
  <p>
  <input name="codigo" type="text" id="codigo" REQUIERED>
      <input type="button" name="bb" id="bb" value="&gt;&gt;" onClick="articulo();" >
      
    </p>
  <p>
    <input type="button" name="agrega" id="agrega" value="+" onClick="listado();"> <input type="button" value="Cobrar" onClick="grabar();">
  </p>
  <table id="listado" width="100%" border="1">
    <tr>
    <td>Codigo</td>
    <td>Cantidad</td>
    <td>Descripcion</td>
    <td>Tamaño</td>
    <td>Precio U.</td>
    <td>Precio T.</td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="cliente">
  
</div>
<div id="datapro">

</div>
<div id="mensaje">

</div>

</form>
</body>
</html>



Código PHP:
<?php
$d
=$HTTP_POST_VARS['codigo'];

$c=mysql_connect("localhost","root","1234");
mysql_select_db("ventas");

$consulta="select descripcion,tamano,existencia,precio from productos where codigo='$d'";
$r=mysql_query($consulta);

$l=mysql_num_rows($r);
if (
$l>0){
$dato=mysql_fetch_row($r);
echo(
"<h6 align=\"center\">CodigoOOOOOOOOOOOOOOOOOOOO <h6> ");
echo (
"<table><tr><td>Cantidad</td><td>Descripcion</td><td>Tamano</td><td>Existencia</td><td>Precio</td></tr>");
echo (
"<tr><td><input type=\"number\" name=\"cantidad\" id=\"cantidad\" min=1 size=3 value=\"1\"></td>");
echo (
"<td><input type=\"text\" name=\"descripcion\" id=\"descripcion\" value=\"$dato[0]\" DISABLED></td>");
echo (
"<td><input type=\"text\" name=\"tamano\" id=\"tamano\" value=\"$dato[1]\" DISABLED></td>");
echo (
"<td><input type=\"text\" name=\"existencia\" id=\"existencia\" value=\"$dato[2]\" DISABLED></td>");
echo (
"<td><input type=\"text\" name=\"precio\" id=\"precio\" value=\"$dato[3]\" DISABLED></td></tr></table>");

}
else{
echo(
"<h6 align=\"center\">Codigo de producto incorrecto <h6> ");

}

mysql_close();
?>

Gracias por la ayuda...
  #2 (permalink)  
Antiguo 26/08/2012, 01:11
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Error al insertar un ejecutar busqueda

mysql_select_db("ventas",$c);

$r=mysql_query($consulta,$c);

y HTTP_POST_VARS no se usa mas

siempre en cada consulta query usa luego or die(mysql_error());

el error es claro, a mysql_num_rows no le esta llegando algo coherente a lo que debería llegarle
  #3 (permalink)  
Antiguo 26/08/2012, 03:22
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Error al insertar un ejecutar busqueda

rodrigo791, Agradezco mucho tus consejos me han servido mucho pero estoy topando en otra cosa....

tengo 10 productos en la base de datos, pero al hacer la busqueda siempre me aparece como resultado el primer registro de la tabla. siempre el mismo, me seguira faltando algo o el if esta mal expresado?

linea editada: ups, me acabo de dar cuenta que aunque ponga un id inexistente igual me muestra el primer registro. puse comillas simples en where codigo='$d'"; pero ahora siemrpe pasa de largo me muestra el mensaje de incorrecto.

asi quedó con los cambios, probé cambiando las comillas en agunas partes pero no funcionó... gracias por tu valiosa ayuda...


Código PHP:
<?php
$d
='codigo';

$c=mysql_connect("localhost","root","1234");
mysql_select_db("ventas",$c);

$consulta="select descripcion,tamano,existencia,precio from productos where codigo=$d";
$r=mysql_query($consulta,$c)or die(mysql_error()); 

$l=mysql_num_rows($r);
if (
$l>0){
$dato=mysql_fetch_row($r);

echo (
"<table><tr><td>Cantidad</td><td>Descripcion</td><td>Tamano</td><td>Existencia</td><td>Precio</td></tr>");
echo (
"<tr><td><input type=\"number\" name=\"cantidad\" id=\"cantidad\" min=1 size=3 value=\"1\"></td>");
echo (
"<td><input type=\"text\" name=\"descripcion\" id=\"descripcion\" value=\"$dato[0]\" DISABLED></td>");
echo (
"<td><input type=\"text\" name=\"tamano\" id=\"tamano\" value=\"$dato[1]\" DISABLED></td>");
echo (
"<td><input type=\"text\" name=\"existencia\" id=\"existencia\" value=\"$dato[2]\" DISABLED></td>");
echo (
"<td><input type=\"text\" name=\"precio\" id=\"precio\" value=\"$dato[3]\" DISABLED></td></tr></table>");

}
else{
echo(
"<h6 align=\"center\">Codigo de producto incorrecto <h6> ");

}

mysql_close();
?>

Última edición por neveuster; 26/08/2012 a las 03:27
  #4 (permalink)  
Antiguo 26/08/2012, 11:46
 
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 1
Respuesta: Error al insertar un ejecutar busqueda

seguro que lo que esta en ese if es una ele y no un numero uno???? yo aparte de eso no le veo nada mas. avisa.
  #5 (permalink)  
Antiguo 26/08/2012, 13:58
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Error al insertar un ejecutar busqueda

si es una l, y he probado cambiado algunas cositas pero no encuentro el error,

he cambiado varias cositas, pero pequeñas y no hay caso... por eso les pido su ayuda, a alguien con mas experiencia que me ayude por favor... cual será el error??

saludos y gracias..
  #6 (permalink)  
Antiguo 26/08/2012, 14:06
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Error al insertar un ejecutar busqueda

$dato=mysql_fetch_row($r);

pero tu problema es que si tenes 10 datos, siempre te muestra 1, porque estas almacenando el resultado en una variable, y tenes que recorrer eso, tenes que usar un while para recorrer cada fila de tu tabla, ese es el error.

Código PHP:
Ver original
  1. while($dato=mysql_fetch_row($r)){ //esto significa que mientras existan filas en tu tabla recuperadas por la consulta las guarda en $dato y la mostras con while
  2.  
  3. echo ("<table><tr><td>Cantidad</td><td>Descripcion</td><td>Tamano</td><td>Existencia</td><td>Precio</td></tr>");
  4. echo ("<tr><td><input type=\"number\" name=\"cantidad\" id=\"cantidad\" min=1 size=3 value=\"1\"></td>");
  5. echo ("<td><input type=\"text\" name=\"descripcion\" id=\"descripcion\" value=\"$dato[0]\" DISABLED></td>");
  6. echo ("<td><input type=\"text\" name=\"tamano\" id=\"tamano\" value=\"$dato[1]\" DISABLED></td>");
  7. echo ("<td><input type=\"text\" name=\"existencia\" id=\"existencia\" value=\"$dato[2]\" DISABLED></td>");
  8. echo ("<td><input type=\"text\" name=\"precio\" id=\"precio\" value=\"$dato[3]\" DISABLED></td></tr></table>");
  9.  
  10. }
  #7 (permalink)  
Antiguo 26/08/2012, 15:21
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Error al insertar un ejecutar busqueda

Muchas gracias.... es muy chistoso que después de hacer ese cambio que me dices ahora me diga

Código:
Parse error: syntax error, unexpected '}' in C:\AppServ\www\prueba\3\buscaproducto.php on line 21
EDITADO: acabo de subir en un espacio la llave y ahora no sale ese error pero al apretar el boton buscar me aparecen todos los resultados no importando si el espacio queda en blanco o tiene cualquier id o codigo.

el codigo ha quedado asi

Código PHP:
<?php
$d
='codigo';

$c=mysql_connect("localhost","root","1234");
mysql_select_db("ventas",$c);

$consulta="select descripcion,tamano,existencia,precio from productos where codigo=$d";
$r=mysql_query($consulta,$c)or die(mysql_error()); 

$l=mysql_num_rows($r);
if (
$l>0){
    while(
$dato=mysql_fetch_row($r)){ 

        echo (
"<table><tr><td>Cantidad</td><td>Descripcion</td><td>Tamano</td><td>Existencia</td><td>Precio</td></tr>");
        echo (
"<tr><td><input type=\"number\" name=\"cantidad\" id=\"cantidad\" min=1 size=3 value=\"1\"></td>");
        echo (
"<td><input type=\"text\" name=\"descripcion\" id=\"descripcion\" value=\"$dato[0]\" DISABLED></td>");
        echo (
"<td><input type=\"text\" name=\"tamano\" id=\"tamano\" value=\"$dato[1]\" DISABLED></td>");
        echo (
"<td><input type=\"text\" name=\"existencia\" id=\"existencia\" value=\"$dato[2]\" DISABLED></td>");
        echo (
"<td><input type=\"text\" name=\"precio\" id=\"precio\" value=\"$dato[3]\" DISABLED></td></tr></table>");
    }
}
else{
    echo(
"<h6 align=\"center\">Codigo de producto incorrecto <h6> ");

}

mysql_close();
?>
como siempre gracias.
  #8 (permalink)  
Antiguo 26/08/2012, 15:30
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error al insertar un ejecutar busqueda

""pero al apretar el boton buscar me aparecen todos los resultados no importando si el espacio queda en blanco o tiene cualquier id o codigo.""

que espacio ???

tienes que pasar el id a la consulta o el codigo y tal como tienes el codigo $d = codigo no lo estas haciendo, deberias pasarle el dato a traves del formulario tipo post o get

Última edición por webankenovi; 26/08/2012 a las 15:36 Razón: uuuuupppsss has respondido a la vez jejeje lo dejo de igual manera
  #9 (permalink)  
Antiguo 26/08/2012, 15:58
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Error al insertar un ejecutar busqueda

Código PHP:
Ver original
  1. $d='codigo';

Código PHP:
Ver original
  1. $consulta="select descripcion,tamano,existencia,precio from productos where codigo=$d";

en otras palabras estas diciendo que selecionas descripcion, tamano, existencia, precio de la tabla productos donde el codigo sea igual a codigo. Porque si yo no veo mal $d es igual a la palabra 'codigo'

Que tipo de busqueda es esta?
Vamos che...

$d deberia ser un codigo que recibas por GET o POST como dice @webankenovi
  #10 (permalink)  
Antiguo 26/08/2012, 19:57
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Error al insertar un ejecutar busqueda

Estimados, muchas gracias...

bueno, la verdad es que probe poniendo GET, pero como no me funcionaba lo saqué....

finalmente la solución fue poner
Código PHP:
Ver original
  1. $codigo=$_REQUEST['codigo'];

agradezco por toda la paciencia que me tuvieron, saludos a todos.. jeje si se me presenta alguna duda los vuelvo a molestar. gracias.

Última edición por neveuster; 26/08/2012 a las 20:31
  #11 (permalink)  
Antiguo 26/08/2012, 20:36
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Error al insertar un ejecutar busqueda

Pucha, ya se me presento un problemita...

cuando en el input pongo un codigo existente o que no existe funciona bien, pero al dejar el input en blanco, aprarece este mensaje....

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\prueba\3\buscaproducto.php on line 11

esta linea corresponde a:

Código:
$l=mysql_num_rows($r);
desde ya, gracias!!

EDITADO:

Puse comillas simples a
Código PHP:
Ver original
  1. WHERE codigo='$codigo'


La pregunta ahora es como puedo hacer para qe en vez de que pase de largo y muestre que el codigo no existe, diga, "ingrese un codigo" cuando el input está en blanco??

gracias, saludos..

Última edición por neveuster; 26/08/2012 a las 21:12
  #12 (permalink)  
Antiguo 26/08/2012, 22:01
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Error al insertar un ejecutar busqueda

con un conficional if, si lo que te llega es vacio, mostras con echo.
  #13 (permalink)  
Antiguo 26/08/2012, 22:09
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Error al insertar un ejecutar busqueda

Gracias Rodrigo, se han pasado todos!!!! saludos!

Etiquetas: html, mysql, registro, sql, busquedas
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 22:28.