Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consultar si tabla esta vacía PDO

Estas en el tema de Consultar si tabla esta vacía PDO en el foro de PHP en Foros del Web. Hola a todos: Estoy realizando un ejercicio con PDO donde en la página de inicio, si no hay ningún registro en la tabla, el botón ...
  #1 (permalink)  
Antiguo 28/01/2016, 05:17
 
Fecha de Ingreso: mayo-2011
Ubicación: Palma de Mallorca
Mensajes: 108
Antigüedad: 13 años, 6 meses
Puntos: 4
Consultar si tabla esta vacía PDO

Hola a todos:

Estoy realizando un ejercicio con PDO donde en la página de inicio, si no hay ningún registro en la tabla, el botón de modificar y el botón de baja esté deshabilitado. Cuando realizo un alta en la tabla y vuelvo a la pagina de inicio, no me habilita los botones correctamente.

Este es mi código:

index.php:

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8" />
  5.         <title>Empresas asociadas</title>
  6.     </head>
  7.     <body>
  8.         <a href="alta.html">Alta</a><br/>
  9.         <?php
  10.             //llamada al archivo de los datos de conexion y conectar a la base de datos.
  11.             require_once 'inc/db.inc';
  12.             connectDB();
  13.             // preparar sentencia sql a ejecutar.
  14.             $query = "SELECT * FROM table WHERE ID=?";
  15.             $stmt = $connect->prepare($query);
  16.             $stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT);
  17.             // ejecutamos la sentencia y comprobamos si cuenta filas de la tabla
  18.             $stmt->execute();
  19.             $row = $stmt->fetch(PDO::FETCH_ASSOC);
  20.             if($row)
  21.             {
  22.                 echo '<input type="button" value="Modificar" /><br/>';
  23.                 echo '<input type="button" value="Eliminar" /><br/>';
  24.             }
  25.             else
  26.             {
  27.                 echo '<input type="button" value="Modificar" disabled /><br/>';
  28.                 echo '<input type="button" value="Eliminar" disabled /><br/>';
  29.             }
  30.             closeDB();
  31.         ?>
  32.     </body>
  33. </html>

inc/db.inc:

Código PHP:
Ver original
  1. <?php
  2.  
  3. /*
  4.  * En este archivo se guardan los datos para la conexión a la base de datos.
  5.  * También creamos metodos para la conexión y el cierre de la base de datos.
  6.  */
  7.  
  8. $hostname = 'localhost';
  9. $database = 'empresas';
  10. $username = 'root';
  11. $password = '';
  12. $dbtable = 'registro';
  13. $connect;
  14.  
  15. function connectDB()
  16. {
  17.     try
  18.     {
  19.         $GLOBALS['connect'] = new PDO
  20.         ('mysql:host='.$GLOBALS['hostname'].';
  21.         dbname='.$GLOBALS['database'],$GLOBALS['username'], $GLOBALS['password']);
  22.     }
  23.     catch(PDOException $e)
  24.     {
  25.         print "Error: ".$e->getMessage();
  26.     }
  27. }
  28.  
  29. function closeDB()
  30. {
  31.     $GLOBALS['connect'] = NULL;
  32. }
  33.  
  34. ?>

alta.html:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <meta charset="UTF-8">
  3.     <title>Alta de empresa</title>
  4.     <script type="text/javascript" src="js/altaform.js"></script>
  5. </head>
  6.     <h1>Alta de empresa</h1>
  7.     <form id="altaform" name="altaform" method="post"
  8.     action="alta_exec.php" onsubmit="return checkAltaForm();">
  9.         <label for="emp_nombre">Nombre empresa:</label><br/>
  10.         <input type="text" name="emp_nombre" size="50" maxlength="50" /><br/>
  11.         <label for="emp_web">Web empresa:</label><br/>
  12.         <input type="text" name="emp_web" size="50" maxlength="50" /><br/>
  13.         <label for="emp_tlf">Tel&eacute;fono empresa:</label><br/>
  14.         <input type="text" name="emp_tlf" size="20" maxlength="20" /><br/>
  15.         <label for="emp_sector">Sector empresa:</label><br/>
  16.         <input type="text" name="emp_sector" size="30" maxlength="30" /><br/>
  17.         <label for="emp_desc">Descripci&oacute;n empresa:</label><br/>
  18.         <input type="text" name="emp_desc" size="50" maxlength="50" /><br/>
  19.         <label for="emp_karma">Karma empresa: (0-999)</label><br/>
  20.         <input type="text" name="emp_karma" size="3" maxlength="3" /><br/>
  21.         <br/>
  22.         <input type="submit" value="Dar alta" />
  23.     </form>
  24. </body>
  25. </html>

js/altaform.js:

Código Javascript:
Ver original
  1. function checkAltaForm()
  2. {
  3.     var isOK = true;
  4.     var arrayInput = [];
  5.     var frm = document.getElementById("altaform");
  6.     for (i=0;i<frm.elements.length;i++)
  7.     {
  8.         if(frm.elements[i].type === "text")
  9.         {
  10.             if(frm.elements[i].value == "")
  11.             {
  12.                 alert("Campo vacio");
  13.                 isOK = false;
  14.             }
  15.            
  16.             if(frm.elements[i].name === "emp_karma")
  17.             {
  18.                 // Solo hacemos pasar por esta funcion al campo emp_karma
  19.                 if(!isANumber(frm.elements[i].value))
  20.                 {
  21.                     alert("Número no válido")
  22.                     isOK = false;
  23.                 }
  24.             }
  25.         }
  26.     }
  27.    
  28.     return isOK;
  29. }
  30.  
  31.  
  32. // Esta funcion comprueba que el campo que sea un numero entero positivo
  33. function isANumber(value)
  34. {
  35.     return !isNaN(value) && value > 0;
  36. }

alta_exec.php:

Código PHP:
Ver original
  1. <?php
  2. require_once 'inc/db.inc';
  3. connectDB();
  4.  
  5. $emp_nombre = $_POST['emp_nombre'];
  6. $emp_web = $_POST['emp_web'];
  7. $emp_tlf = $_POST['emp_tlf'];
  8. $emp_sector = $_POST['emp_sector'];
  9. $emp_desc = $_POST['emp_desc'];
  10. $emp_karma = $_POST['emp_karma'];
  11.  
  12. $query1 = "INSERT INTO $dbtable (nombre, web, telefono, sector, descrip, karma)";
  13. $query2 = " VALUES (?,?,?,?,?,?)";
  14.  
  15. $insert = $connect->prepare($query1.$query2);
  16. $insert -> execute(array($emp_nombre, $emp_web, $emp_tlf, $emp_sector, $emp_desc, $emp_karma));
  17.  
  18. closeDB();
  19.  
  20. echo "<br>Alta correcta";
  21. echo "<br><br><a href='alta.html'>Otra alta</a>";
  22. echo "<br><br><a href='index.php'>Inicio</a>";
  23.  
  24. ?>

La tabla registro tiene un campo id tipo int autoincrementado.

He estado probando diversas soluciones, pero todas no realizan bien el if de index.php al contar filas de la tabla. No se donde estoy fallando.

Saludos.
  #2 (permalink)  
Antiguo 28/01/2016, 07:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Consultar si tabla esta vacía PDO

Pues por lo visto dicha consulta depende de $_GET['id'] ¿le estás pasando bien dicho valor?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/01/2016, 09:57
 
Fecha de Ingreso: mayo-2011
Ubicación: Palma de Mallorca
Mensajes: 108
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Consultar si tabla esta vacía PDO

Al final he hallado la solución. Dejo aquí el código:

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8" />
  5.         <title>Empresas asociadas</title>
  6.     </head>
  7.     <body>
  8.         <a href="alta.html">Alta</a><br/>
  9.         <?php
  10.             //llamada al archivo de los datos de conexion y conectar a la base de datos.
  11.             require_once 'inc/db.inc';
  12.             connectDB();
  13.             // preparar sentencia sql a ejecutar.
  14.             $sql = "SELECT COUNT(*) as count FROM $dbtable";
  15.             $stmt = $connect->prepare($sql);
  16.             // ejecutar sentencia
  17.             $stmt->execute();
  18.             // guardamos el resultado como un array
  19.             $row = $stmt->fetch(PDO::FETCH_ASSOC);
  20.             closeDB();
  21.             // si el indice count es 0, deshabilitamos la modificacion y dar baja
  22.             if($row['count'] == 0)
  23.             {
  24.                 echo '<input type="button" value="Modificar" disabled /><br/>';
  25.                 echo '<input type="button" value="Eliminar" disabled /><br/>';
  26.             }
  27.             else
  28.             {
  29.                 echo '<input type="button" value="Modificar" /><br/>';
  30.                 echo '<input type="button" value="Eliminar" /><br/>';
  31.             }
  32.             /*
  33.             $stmt = $connect->query($sql);
  34.             // ejecutamos la sentencia y comprobamos si cuenta filas de la tabla
  35.             $stmt->execute();
  36.             $row = $stmt->fetch(PDO::FETCH_ASSOC);
  37.             if($row)
  38.             {
  39.                 echo '<input type="button" value="Modificar" /><br/>';
  40.                 echo '<input type="button" value="Eliminar" /><br/>';
  41.             }
  42.             else
  43.             {
  44.                 echo '<input type="button" value="Modificar" disabled /><br/>';
  45.                 echo '<input type="button" value="Eliminar" disabled /><br/>';
  46.             }
  47.             */
  48.            
  49.         ?>
  50.     </body>
  51. </html>

Etiquetas: consultar, html, mysql, pdo, registro, select, sql, tabla
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 21:39.