Foros del Web » Programando para Internet » PHP »

Como hacer una consulta a bases de datos

Estas en el tema de Como hacer una consulta a bases de datos en el foro de PHP en Foros del Web. Hola a todos, pues les comento la duda que tengo. En un formulario que utilizare para dar de alta el prestamo de un libro tengo ...
  #1 (permalink)  
Antiguo 25/05/2009, 15:22
Avatar de optimus100  
Fecha de Ingreso: febrero-2009
Mensajes: 45
Antigüedad: 15 años, 2 meses
Puntos: 0
Como hacer una consulta a bases de datos

Hola a todos, pues les comento la duda que tengo.
En un formulario que utilizare para dar de alta el prestamo de un libro tengo los siguientes campos:
nombre del alumno, grupo, clave del libro, titulo del libro, autor del libro, fecha de prestamo y fecha de entrega. Pues la duda esta en que deseeo poner un boton en "clave del libro", ya que al poner en el text de la clave (del libro) el numero correspondiente a ese libro y dar click me llene los text del titulo del libro y autor del libro automaticamente con la informacion de libro seleccionado. El problema que tengo es que al dar click al boton no me envia dicha informacion. Les mostrare el codigo que he realizado:

En la pagina esta esto
Código PHP:

<html>
<head>
<title>PRESTAMOS DE LIBROS</title>

<?php
function pedirDatos(){

include_once(
"cPrestamo.php");

$objetocPrestamo=new cPrestamo// objeto de la clase cPrestamo; herencia
$idlib=$_POST["clave"];
$consultaClave=$objetocPrestamo->consultarClave($idlib);

$row=mysql_fetch_array($consultaClave);// arreglo que almacenara los datos encontrados en la consulta

// valores retornados de la consulta
$titu=$row['titulo'];
$auto=$row['autor'];
}
?>
</head>
<body>
<center>
<p>&nbsp;</p>
<form name="ej" method="get" action="" onSubmit="enviarDatosPrestamo(); return false">
  <tr>
    <td>Codigo del Libro</td>
    <td><input name="clave" type="text" size="6" maxlength="6" />
      <label>
      <input type="button" name="en" id="en" value="Enviar" onClick="pedirDatos()">
      </label>    </td>
  </tr>
  <tr>
    <td>Titulo del libro</td>
    <td><input type="text" name="titulo" size="30" maxlength="30" value=" <?php $titu?> ">
    </td>
  </tr>
  <tr>
    <td>Autor</td>
    <td><input type="text" name="autor"  size="20" maxlength="20" value=" <?php $auto?> ">
    </td>
  </tr>
    <tr>
    
<p>
  
  <input type="submit" name="Submit" value="Insertar" />
 
</body>
</html>
Y tengo otros php, en uno realizo la conexion a la base de datos y el otro realiza la consulta.

Clase que se encarga de la conexion a la base de datos:

Código PHP:
<?php 
class DBManager// clase para que realiza la conexion a la Base de Datos
  
var $conect;
     function 
DBManager(){ // constructor de la clase DBManager
     
}
     
     function 
conectar() { // funcion que conecta a la base de datos
         
if(!($conmysql_connect("localhost","root","")))
         {
             echo
"Error al conectar a la base de datos";    
             exit();
          }
          if (!
mysql_select_db("biblioteca",$con)) {
           echo 
"error al seleccionar la base de datos";  
           exit();
          }
           
$this->conect=$con;
           return 
true;    
     }
}

?>

y Clase que realiza la consulta:

Código PHP:
<?php 
include_once("DBManager.php");// instanciamos la clase DBManager.php

class cPrestamo// creamos la clase cPrestamos

function cPrestamo(){
}

// consulta el libro por su clave para la consulta del prestamo
 
function consultarClave($cve){
   
$con = new DBManager;
   if(
$con->conectar()==true){
     
$query "SELECT * FROM libros WHERE clave=$cve";
     
$result mysql_query($query);
     if (!
$result)
       return 
false;
     else
       return 
$result;
    }
   }

}
// fin de la clase cPrestamo
?>
Si alguien me pudiera decir que es lo que esta mal o como deberia realizar esta consuta XD
  #2 (permalink)  
Antiguo 25/05/2009, 15:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como hacer una consulta a bases de datos

No puedes mezclar asi directamente las cosas, recuerda que PHP es un lenguaje que se ejecuta en el servidor, no en el cliente, por lo que no puedes usar "eventos" como en Javascript.

Para hacer lo que quieres debes de usar forzosamente AJAX junto con Javascript para traer los datos.

Saludos.
  #3 (permalink)  
Antiguo 26/05/2009, 15:34
Avatar de optimus100  
Fecha de Ingreso: febrero-2009
Mensajes: 45
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Respuesta: Como hacer una consulta a bases de datos

Gracias por responder GatorV, investigue acerca de ajax y encontre algo como esto e intente implementarlo de la siguiente manera:

Creo un archivo ajax.js
Código:
function objetoAjax(){
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
		   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
  		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}


function pedirDatos(idlib){
	//donde se mostrará el formulario con los datos
	divFormulario = document.getElementById('formulario');
	
	//instanciamos el objetoAjax
	ajax=objetoAjax();
	//uso del medotod POST
	ajax.open("POST", "index.php");
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			//mostrar resultados en esta capa
			divFormulario.innerHTML = ajax.responseText
			divFormulario.style.display="block";
		}
	}
	//como hacemos uso del metodo POST
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//enviando la clave del libro
	ajax.send("idlib="+idlib)
}
y en el archivo de index.php :

Código PHP:

<?php
include_once("cPrestamo.php");

$cPrestamo=new cPrestamo// objeto de la clase cPrestamo; herencia
$idlib=$_POST["idlib"];
$consultaClave=$cPrestamo->consultarClave($idlib);

$row= @mysql_fetch_array($consultaClave);// arreglo que almacenara los datos encontrados en la consulta

// valores retornados de la consulta
$titu=$row['titulo'];
$auto=$row['autor'];

?>
<html>
<head>
<title>PRESTAMOS DE LIBROS</title>
<script language="JavaScript" type="text/javascript" src="ajax.js"></script>
</head>
<body>
<center>
<p>&nbsp;</p>
<p>&nbsp;</p>

<div id="formulario">
<tr>
    <td>Codigo del Libro</td>
    <td><input name="idlib" type="text" size="6" maxlength="6" onBlur="pedirDatos(idlib)" />
    </td>
  </tr>
  <tr>
    <td>Titulo del libro</td>
    <td><input type="text" name="titulo" size="30" maxlength="30" value=" <?php $titu?> ">
    </td>
  </tr>
  <tr>
    <td>Autor</td>
    <td><input type="text" name="autor"  size="20" maxlength="20" value=" <?php $auto?> ">
    </td>
  </tr>
    <tr>
Pero aun asi no manda nada de informacion, sigo utilizando los mismos archivos que estan en el primer mensaje. Soy nuevo en esto de la programacion con ajax
espero puedas ayudarme a encontrar una mejor manera de obtener lo que deseo
  #4 (permalink)  
Antiguo 26/05/2009, 15:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Como hacer una consulta a bases de datos

Mi sugerencia es que el envio de POST de ajax no lo hagas en la misma pagina de index.php crea una pagina que se dedique solamente a hacer el query en la base de datos y luego haces un echo al query eso es lo que va a traer a la pagina index.php

Acuerdate que el ajax.responseText va a traer toda la información que se envia al navegador. por lo tanto solamente limitate a lo que quieres que se despliegue en el div.
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 17:12.