entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

conexion php con acces

tengo un proyecto con access ya pude extraer los datos de la base de datos de acces con odbc

<?
    $dsn = "ACCES_BCT";
    $usuario = "";
    $pass = "";

    $Conexion = odbc_connect($dsn, $usuario, $pass);

    $sql = "Select * FROM BCT ";

    $consulta = odbc_exec($Conexion, $sql);
?>

<div class="row">
  <div class="col-md-1"></div>
  <div class="col-md-8">
            <table class="table table-hover table-bordered">
        <tr>
            <th>Fecha</th>
            <th>Modelo</th>
            <th>Maquina</th>
            <th>Combinacion</th>
            <th>BCT</th>
            <th>Lectura 1</th>
            <th>Lectura 2</th>
            <th>Size</th>
            <th>Etiqueta</th>
            <th>Sampling</th>
            <th>Turno</th>
            <th>Wide</th>
            <th>High</th>
            <th>Comentarios</th>
        </tr>
        <?php

            while($datos = odbc_fetch_object($consulta))
            {
                ?>
                <tr>
                <td><?echo $datos->Fecha; ?></td>
                <td><?echo $datos->Modelo; ?></td>
                <td><?echo $datos->maquina;?></td>
                <td><?echo $datos->Combinacion;?></td>
                <td><?echo$datos->BCT; ?></td>
                <td><?echo$datos->Lectura1; ?></td>
                <td><?echo$datos->Lectura2; ?></td>
                <td><?echo$datos->Size; ?></td>
                <td><?echo$datos->Etiqueta_Impresion; ?></td>
                <td><?echo$datos->Sampling; ?></td>
                <td><?echo$datos->Turno; ?></td>
                <td><?echo$datos->Wide; ?></td>
                <td><?echo$datos->High; ?></td>
                <td><?echo$datos->Comentarios; ?></td>
            </tr>
            <?
            }
        ?>
        </table>

  </div>
  <div class="col-md-1"></div>
</div>

este es mi proyecto
pero me gustaria adaptarlo a un plug de algun grid

cual me Plug recomendarian?? o seria mejor realizarlo con PDO?

1 Respuesta

2votos

Leonardo-Tadei Puntos209960

Hola Erick,

me parece que en tu pregunta mezclás dos cosas.

Por un lado, está el mecanismo de conexión a los datos. Estás usando odbc_connect() y este puede ser reemplazado por PDO

Por otro lado y viendo las clases aplicadas al HTML, parece que estás usando Bootstrap para generar la tabla HTML y preguntás por algún plugin o código que te permite mejorar el manejo de las grillas, por lo que entiendo que querés cambiar la forma en que se ven y manejan los datos.

Para esto, deberías decirnos qué controles querés agregar a la grilla y que interfaz de usuario tenés pensada, para ver qué se adecua mejor: puede ser que baste con agregar una comlumna con un control para borrar o editar un registro, o podrías requerir además un manejo de paginación y filtrado.

Acá las tablas que son grillas de datos las estamos manejando con JQGrid , pero requiere cambiar mucho la arquitectura porque los datos vienen vía AJAX, lo que implica escribir servidores que los devuelvan.

Saludos!

erick comentado Mar 30, 2015

asi es lo tengo con bootstrap pero ya se ha decidido que sea asi sencillo ahora el problema es que quiero hacer una peticion via ajax
Al codigo anterior eh agregado estas lineas

<div align="center">

    <div class="form-group">
          <label class="col-md-4 control-label" for="searchinput">Buscar:</label>
              <div class="col-md-3">
                <input type="text" id="bus" name="bus" onkeyup="loadDoc()" required maxlength="15" autofocus placeholder="Buscar.." class="form-control input-md">  
             </div>
    </div>
</div>

<div align="center"><div id="Div">......</div> </div>

ESte es la peticion

// JavaScript Document
function loadDoc()
{
var xmlhttp;

var n=document.getElementById('bus').value;

if(n==''){
document.getElementById("Div").innerHTML="";
return;
}

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("Div").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","getuser.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("q="+n);

}

este es el archivo que busca en la base de datos

<?php

  $q = $_POST['q'];

  $dsn = "ACCES_BCT";
  $usuario = "";
  $pass = "";

  $Conexion = odbc_connect($dsn, $usuario, $pass);

  $sql = "Select * FROM BCT WHERE Modelo LIKE '".$q."%' ";

  $consulta = odbc_exec($Conexion, $sql);

  if(odbc_num_rows($consulta) > 0)
  {
    ?>
       <font color="#FF0000">Valor..</font>
      <?
  }
  else 
     { 
        ?> 
        <font color="#FF0000">Master Inexistente... </font>
        <? 
    }

?>

solo aparece master inexistente cuando tecleo (Lo busco por el campo Modelo)....

Editado: marqué el código como tal para que se pueda ver

Leonardo-Tadei comentado Mar 30, 2015

Primero de todo, revisá que getuser.php esté devolviendo los datos correctos a la petición AJAX. Podés revisar esto fácilmente con la consola de depurado del navegador, activando la vista de peticiones y respuestas...

La respuesta "Master inexistente" viene de getuser.php, así que o no le llega la petición bien, o no está funcionadno bien la búsqueda a la DB.

erick comentado Mar 31, 2015

ya le realice un echo a esta linea $sql = "Select * FROM BCT WHERE Modelo LIKE '".$q."%' ";
y si en tiempo real genera la consulta con el valor, pero no me devuelve nada solamente el mensaje ultimo

Leonardo-Tadei comentado Mar 31, 2015

Podrías copiar y pegar para que lo podamos ver la query generada? (el contenido de la variable $sql)

Si copias y pegás la query generada por ejemplo en PHPMyAdmin, se ejecuta bien la query?

erick comentado Mar 31, 2015

Suponiendo que busco un nombre esto es lo que imprime SELECT * FROM BCT WHERE Modelo LIKE 'PEDRO%'
si le quito el ECHO solamente muestra el mensaje de error Master Inexistente.que puse con la condicion, que deveria aparecer si no existe en la base de datos

erick comentado Mar 31, 2015

ya me funciona solo realice unos cambios al final
<?php

$dsn = "ACCES_BCT";
$usuario = "";
$pass = "";

$Conexion = odbc_connect($dsn, $usuario, $pass);

 $q = $_POST['q'];

  $sql = "SELECT * FROM BCT WHERE Modelo LIKE '".$q."%' ";

   $consulta = odbc_exec($Conexion, $sql);

      //if(odbc_num_rows($consulta) > 0)
      //{
        while($row = odbc_fetch_object($consulta))
        {
          ?>
            <? echo $row->Fecha;?>
              <? echo "//";?>
            <? echo $row->Modelo; ?>
             <? echo "//";?>
            <? echo $row->maquina; ?>
            <? echo "//";?>
          <?
        }

?>
por ahora lo tengo asi mas tarde lo paso completo asi me esta funcionando

Leonardo-Tadei comentado Mar 31, 2015

Parece que tu problema estaba en querere determinar si había o no resultados con odbc_num_rows($consulta).

Hay drivers que no devuelven la cantidad de filas afectadas por una query, y tal vez estás usando uno de ellos. Lo podés solucionar ejecutando primero un COUNT para saber cuantos registros hay, y luego el SELECT.

Otra solución sería que el JavaScript sea el que decida si mostrar el mensaje de "no hay resultados" dependiendo de la respuesta del servidor, por ejemplo en el caso de que la respuesta del servidor sea vacía.

Saludos!

erick comentado Mar 31, 2015

asi es master creo que ese es el problema justo acabo de hacer otra prueba con el num_rows y no desplego el resultado, checare eso ultimo que comentas ...
muchisimas gracias por tu tiempo y Paciencia

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta