Diferencia entre revisiones de «Usuario:ManuelRomero/NewPHP/B2T8/BasesDatos/practica»
Línea 1: | Línea 1: | ||
{{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}} | {{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}} | ||
+ | __TOC__ | ||
+ | ===Actividad Gestor BD con CRUD básico=== | ||
+ | {{MRM_Actividad|Title=Realizar un gestor básido con acciones CRUD| | ||
+ | Vamos a realizar una pequeña aplicación que me permita gestionar a nivel básico la bd. | ||
+ | Concretamente me permitirá | ||
+ | #Visualizar las bases de datos | ||
+ | #Al seleccionar una de ellas, visualizar sus tablas | ||
+ | #Al seleccionar una de ellas, ver su contenido y realizar aciones de insertar, borrar o modificar cada fila | ||
+ | *A continuación las especificaciones concretas | ||
+ | }} | ||
+ | {{MRM_Actividad|Title=Requisitos no funcionales| | ||
+ | *Las accoines sobre la base de datos se realizarán en una clase llamada BD.php}} | ||
+ | |||
+ | |||
+ | ====Requisito 1 Visualizar la base de datos==== | ||
+ | *Se trata de realizar una práctica para administrar una base de datos cualquiera | ||
+ | *Se ha de implementar las acciones de la base de datos en una clase llamada '''''BD.php''''' (base de datos) | ||
+ | *Para incluir las diferentes clases usaremos la función '''''autoload''''' de php | ||
+ | *Observar que es una fución que se invoca de forma implícita cuando instancimos un objeto de una clase | ||
+ | *La función tiene un parámetro, el cual es una función anónima (sin nombre) con un parámetro que es el nombre de la clase | ||
+ | *Es en el cuerpo de esta función (parámetro de '''''spl_autoload_register'''''), donde realizamos el require del fichero con la clase correspondiente | ||
+ | {{Tip|Para poder usar el autoload y siguiendo las buenas prácticas de programación, debemos guardar las clases en ficheros con el mismo nombre}} | ||
+ | <source lang=php> | ||
+ | spl_autoload_register(function ($clase) { | ||
+ | require_once "$clase.php";} | ||
+ | ); | ||
+ | </source> | ||
+ | *Lo primero que debe de aparecer es un formulario con la lista de todas las tablas | ||
+ | *Cada tabla será mostrada con un botón de tipo submit | ||
+ | [[Archivo:appBD_CRUD_caso1.png|800px|center]]<br /> | ||
+ | *Un posible ejemplo de cómo quedaría | ||
+ | [[Archivo:appBD_CRUD_pantalla1.png|800px|center]]<br /> | ||
+ | *Para el css podemos usar simplemente este código o podéis cambiarlo un poco | ||
+ | |||
+ | {{Desplegable|hide| | ||
+ | <source lang=css> | ||
+ | fieldset{ | ||
+ | border: 0.25em solid; | ||
+ | align : center; | ||
+ | position: absolute; | ||
+ | left: 20%; | ||
+ | top: 30%; | ||
+ | margin-left: -115px; | ||
+ | margin-top: -80px; | ||
+ | padding:10px; | ||
+ | background-color: #eee; | ||
+ | } | ||
+ | |||
+ | legend{ | ||
+ | font-size: 2em; | ||
+ | color: green; | ||
+ | font-weight: bold; | ||
+ | } | ||
+ | input[type=submit] { | ||
+ | padding:5px 15px 10px 10px; | ||
+ | background:#ccc; | ||
+ | border:2; | ||
+ | cursor:pointer; | ||
+ | border-radius: 5px; | ||
+ | margin: 1em; | ||
+ | font-size: 1em; | ||
+ | } | ||
+ | </source> | ||
+ | }} | ||
+ | |||
+ | |||
+ | ====Requisito 2 Visualizar la base de datos==== | ||
+ | ====Requisito 3 Visualizar la base de datos==== | ||
+ | |||
+ | |||
+ | |||
===Borrar para crear un formulario por cada fila === | ===Borrar para crear un formulario por cada fila === | ||
Línea 55: | Línea 126: | ||
} | } | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
*A continuación lo que puedo hacer es seleccionar una tabla | *A continuación lo que puedo hacer es seleccionar una tabla |
Revisión de 09:48 11 ene 2017
Contenido
Actividad Gestor BD con CRUD básico
Vamos a realizar una pequeña aplicación que me permita gestionar a nivel básico la bd. Concretamente me permitirá
|
Requisito 1 Visualizar la base de datos
- Se trata de realizar una práctica para administrar una base de datos cualquiera
- Se ha de implementar las acciones de la base de datos en una clase llamada BD.php (base de datos)
- Para incluir las diferentes clases usaremos la función autoload de php
- Observar que es una fución que se invoca de forma implícita cuando instancimos un objeto de una clase
- La función tiene un parámetro, el cual es una función anónima (sin nombre) con un parámetro que es el nombre de la clase
- Es en el cuerpo de esta función (parámetro de spl_autoload_register), donde realizamos el require del fichero con la clase correspondiente
spl_autoload_register(function ($clase) { require_once "$clase.php";} );
- Lo primero que debe de aparecer es un formulario con la lista de todas las tablas
- Cada tabla será mostrada con un botón de tipo submit
- Un posible ejemplo de cómo quedaría
- Para el css podemos usar simplemente este código o podéis cambiarlo un poco
Requisito 2 Visualizar la base de datos
Requisito 3 Visualizar la base de datos
Borrar para crear un formulario por cada fila
- Necesito tener en cada formulario
- nombre de base de datos $basedatos
- nombre de tabla $t
- nombre de los campos de la fila $campos[]
- valores de la fila para cada campo $valores[]
echo "\n <form action='gestionarTablas.php' method='post'>\n"; $i = 0; echo "\n <input type =hidden value =$t name = 'tabla'> \n"; echo "\n <input type =hidden value = $basedatos name ='basedatos' > \n"; foreach ($fila as $valor) { echo "<td>$valor</td>/n"; echo "\n<input type =hidden value ='" . $campos[$i]->name . "' name = campos[]>\n"; echo "\n<input type =hidden value = $valor name = valores[]>\n"; $i++; } ?> <td><input id=tabla type="submit" value="Edit" name="gestionar"></td> <td><input id=tabla type="submit" value="Del" name="gestionar"></td> </form> </form> *Función de borrar <source lang=php> ** * función usada para borrar * Aquí puedo leer el input registros que contendrá todos los campos */ function borrar($tabla, $database) { //He de leer todos los campos de esa fila que quiero borrar (nombre de campo y valor) $nombreCampos = $_POST['campos']; $valores = $_POST['valores']; //Construimos la sentencia sql $registro = array_combine($nombreCampos, $valores); $sentencia = "delete from $tabla where "; $condicion=""; foreach ($registro as $campo => $valor) { $condicion .=" ($campo = '$valor') and "; } $condicion = substr($condicion, 0, strlen($condicion) - 4); $sentencia = "delete from $tabla where $condicion"; $db = new BD(); $db->usar_BD("database"); $db->borrar($sentencia); echo "<h1> condicion = $condicion , <br /> sentencia = $sentencia </h1> "; $db->cerrarDB(); ; }
- A continuación lo que puedo hacer es seleccionar una tabla
- Para ello presionamos sobre una tabla y obtendremos un listado organizado en forma de tabla con los datos de todos los registros
- No se podrá modificar sus contendios, por lo que no deberían de ser inputs
- La tabla usamos una típica de html
- En un caso real se usaría database https://datatables.net/ de jquery con ajax, pero aquí limitaremos a visualizar solo los datos
Idioma no válido.
Necesita especificar un idioma como esto: <source lang="html4strict">...</source>
lenguajes soportados para sintaxis remarcada:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
<table id="table_id" class="display"> <thead> <tr><!--Nombres de los campos --> <th>Column 1</th> <th>Column 2</th> </tr> </thead> <tbody> <tr><!-- contenidos para cada campo del primer registros--> <td>Row 1 Data 1</td> <td>Row 1 Data 2</td> </tr> <tr><!-- Otra fila, repetiremos tantas filas como haya--> <td>Row 2 Data 1</td> <td>Row 2 Data 2</td> </tr> </tbody> </table>
- Este sería el diagrama de caso de uso
- Un posible listado sería como sigue
- En esa ventana tendremos 4 opciones que son las operaciones básicas con una base de datos
- Add
- Esta opción añadirá un nuevo registro
- El caso de uso se puede representar en el siguiente diagrama
- Update
- Mostrará un listado solo del campo clave con los diferentes registros
- Podremos elegir uno (en caso de querer cambiar solo uno) o no elegir nada (cambiaremos todos)
- Escribiremos valores en los input de los campos que queramos cambiar, lo que no queramos cambiar quedará en blanco
- Delete
- Mostrará un listado solo del campo clave con los diferentes registros
- Podremos elegir uno (en caso de querer borrar ese registro) o no elegir nada (borraremos todos los que cumplan condición)
- Se rellenará los campos cuyo criterio será el que se tenga en cuenta para borrar.
- Mostrará un listado solo del campo clave con los diferentes registros
- Cerrar