Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2016, 05:17
tonigomila1988
 
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.