Bases de Datos - Ingresar,eliminar, actualizar registros de una BBDD con PDO

 
Vista:
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 01/04/2017 20:14:25
Mi primero buenas tardes ya que sera mi primer POST en este foro.

Y lo segundo es, que tengo un problema con una aplicacion web que debe meidante php obtener los datos que luego pasara por Jquery para actualizar,eliminar o agregar registros en una BBDD.

En estos momentos me ingresa y elimina registros, pero la parte de actualizar registros soy incapaz y mi jefe quiere que se puedan actualizar y estoy negro sin saber de donde proviene el fallo.

Creo que el problema viene de las variables que deben de seleccionar el campo que quiero modificar con su nombre o algo parecido, y la verdad que es una tema peliagudo, porque soy estudiante de ASIR y me han mandado a las practicas de DAW por fallo de mi tutor y estoy un poco mosca, pero poco a poco voy sacando todo lo que necesito pero aqui me quede atascado.

Os dejo el enlace con la descarga de mi aplicaicon web y la BBDD por si alguien pudiera hecharme una mano.

https://mega.nz/#!3NZjzIYR!dFqK-HNp-EIj-zGLB4tAbZWIIYVv8aegu8pbJJwOBRE

Gracias a todos de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 61
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alejandro (17 intervenciones) el 01/04/2017 23:18:36
Hola Alberto, te dejo tu codigo modificado con la funcionalidad de actualizar.
Nos comentas si te sirvio. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 02/04/2017 01:15:03
Alejandro, muchisimas gracias funciona perfecto, voy a revisar el codigo para ver que has cambiado te lo agradezco mucho y no sabes cuanto, unicamente deja modificar la categoria y deberia dejar las dos pero voy a ver si revisando el codigo que has modificado encuentro como arreglar eso.

Esque mi jefe de las FCT es un poco especialito y en vez de ayudarme como sabe que no soy programador me complica las cosas y no me ayuda.
Pero de verdad muchas gracias esto puede salvarme el culo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 02/04/2017 05:36:49
Siento el doble post.

Estube mirando el codigo lo de "readonly" lo vi facilemnte xD!
Pero creo no puedo actualizar la primera fila la de acronimo por el nombre d elas variables creo, no se si estoy en lo correcto

Te comento los cambios que realice.


alumno.model.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ublic function Actualizar(Categoria $data)
{
	try
	{
		$sql = "UPDATE categoria SET acronimo =:acronimo,categoria =:categoria WHERE acronimo=:acronimo";
 
		return $this->pdo->prepare($sql)
		     ->execute(
				array(
					':acronimo' => $data->__GET('acronimo'),
					':categoria' => $data->__GET('categoria')
				)
			);
	} catch (Exception $e)
	{
		die($e->getMessage());
	}
}

Se que en Index.php deberia de modificar o incluso añadir una variable mas en el case de actualizar, pero ya es muy tarde y voy a dormir haber si mñana por la mñana lo consigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por alberto (18 intervenciones) el 02/04/2017 22:22:30
He sido incapaz de resolverlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 61
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alejandro (17 intervenciones) el 03/04/2017 03:47:32
Hola Alberto, el readonly en el campo acrónimo lo agregue a la hora de actualizar, ya que este es la clave primaria de la categoría, y por ende una clave primaria no debería de poder modificarse. En caso de que así sea, puedes cambiar la clave primaria agregando un id de tipo integer auto_increment a la tabla categoría lo cual seria mi recomendacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 03/04/2017 09:29:22
Pues mi jefe sigue diciendo que si el por phpmyadmin el hace un UPDATE de una primary KEY en cascade se actualizan todas, que porque no se puedne actualizar todas en cascade por PDO en la interfaz web dice
Yo ya no se que hacer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por alberto (18 intervenciones) el 03/04/2017 11:03:59
Pues me acaba de demostrar que si se puede pero no me lo dice como -.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 61
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alejandro (17 intervenciones) el 04/04/2017 00:23:39
Hola Alberto, si lo que quieres es que el campo acrónimo se pueda modificar, tenes que guardar tenes que pasarle al metodo actualizar el acronimo viejo y el nuevo. El acronimo viejo es aquel que guardas en el input hidden el nuevo es el del campo input text:
Intenta cambiar estas dos secciones del código:

alumno.model.php Cambia el metodo Actualizar por este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public function Actualizar(Categoria $data, $acronimo_viejo)
	{
		try
		{
			$sql = "UPDATE categoria SET categoria =:categoria, acronimo =:acronimo WHERE acronimo=:acronimo_viejo";
 
			return $this->pdo->prepare($sql)
			     ->execute(
					array(
						':acronimo_viejo' => $acronimo_viejo,
						':acronimo' 	  => $data->__GET('acronimo'),
						':categoria' 	  => $data->__GET('categoria')
					)
				);
		} catch (Exception $e)
		{
			die($e->getMessage());
		}
	}

index.php cambia el case 'actualizar' por este:

1
2
3
4
5
6
7
8
9
case 'actualizar':
 
            // Recupero el id del campo hidden
	   $alm->__SET('acronimo',   $_REQUEST['acronimo']);
	   $alm->__SET('categoria',  $_REQUEST['categoria']);
 
	   $update_results = $model->Actualizar($alm, $_POST['id']);
	   header('Location: index.php');
	   break;

Nos comentas como te fue. Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 04/04/2017 11:22:36
Eres un genio sin más, funciona a la perfección, asi que quien lo necesite ya tiene aqui la ayuda necesaria para adaptar un CRUD de PDO.

Por cierto una ultima cosa y ya dejo de dar por saquin.

Si en vez de una clave primaria tengo dos por ejemplo, como recojo esos valores, me salta error:

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

que imagino que el fallo seran en la recojida de datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<?php
require_once 'alumno.entidad2.php';
require_once 'alumno.model2.php';
 
// Logica
$alm = new Categoria();
$model = new CategoriaModel();
 
if (isset($_REQUEST['action'])) {
    switch ($_REQUEST['action']) {
        case 'actualizar':
 
 
 
            // Recupero el id del campo hidden
 
            $alm->__SET('acro_documento', $_REQUEST['acro_documento']);
            $alm->__SET('acro_subcategoria', $_REQUEST['acro_subcategoria']);
            $alm->__SET('tipo_documento', $_REQUEST['tipo_documento']);
            $alm->__SET('registro_calidad', $_REQUEST['registro_calidad']);
            $alm->__SET('calidad_code', $_REQUEST['calidad_code']);
            $alm->__SET('cod_tempo', $_REQUEST['cod_tempo']);
 
 
 
            $update_results = $model->Actualizar($alm, $_POST['id']);
 
            header('Location: index2.php');
 
            break;
 
        case 'registrar':
            $alm->__SET('acro_documento', $_REQUEST['acro_documento']);
            $alm->__SET('acro_subcategoria', $_REQUEST['acro_subcategoria']);
            $alm->__SET('tipo_documento', $_REQUEST['tipo_documento']);
            $alm->__SET('registro_calidad', $_REQUEST['registro_calidad']);
            $alm->__SET('calidad_code', $_REQUEST['calidad_code']);
            $alm->__SET('cod_tempo', $_REQUEST['cod_tempo']);
 
            $model->Registrar($alm);
            header('Location: index2.php');
            break;
 
        case 'eliminar':
            $model->Eliminar($_REQUEST['acro_documento']);
            $model->Eliminar($_REQUEST['acro_subcategoria']);
            header('Location: index2.php');
            break;
 
        case 'editar':
            // Recupero los datos por el id
            // $obj_categoria es un objeto del tipo Categoria
            $obj_categoria = $model->Obtener($_REQUEST['id']);
            $obj_categoria = $model->Obtener($_REQUEST['id1']);
            break;
        default:
            // MENSAJE 404 PARA CUANDO LA ACCION NO ES VALIDA
            header('HTTP/1.0: 404 Not Found');
            die('<h1>404 Page Not Found</h1>');
    }
}
?>
 
<!DOCTYPE html>
<html lang="es">
    <head>
        <title>Anexsoft</title>
        <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
    </head>
    <body style="padding:15px;">
 
        <div class="pure-g">
            <div class="pure-u-1-12">
 
                <form action="?action=<?php echo isset($obj_categoria) ? 'actualizar' : 'registrar'; ?>" method="POST" class="pure-form pure-form-stacked" style="margin-bottom:30px;">
                    <input type="hidden" name="id" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_documento'): ''; ?>" />
                    <input type="hidden" name="id1" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_subcategoria'): ''; ?>" />
 
                    <table style="width:500px;">
                        <tr>
                            <th style="text-align:left;">Acronimo Documento</th>
                            <td><input type="text" name="acro_documento"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_documento') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Acronimo Subcategoria</th>
                            <td><input type="text" name="acro_subcategoria"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_subcategoria') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Tipo de Documento</th>
                            <td><input type="text" name="tipo_documento"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('tipo_documento') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Registro de Calidad</th>
                            <td><input type="text" name="registro_calidad"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('registro_calidad') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Calidad Code</th>
                            <td><input type="text" name="calidad_code"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('calidad_code') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Codigo de Tiempo</th>
                            <td><input type="text" name="cod_tempo"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('cod_tempo') : ''; ?>" style="width:100%;" required/></td>
                            <td colspan="2">
                                <button type="submit" class="pure-button pure-button-primary">Guardar</button>
                            </td>
                        </tr>
                    </table>
                </form>
 
                <table class="pure-table pure-table-horizontal">
                    <thead>
                        <tr>
                            <th style="text-align:left;">Acronimo Documento</th>
                            <th style="text-align:left;">Acronimo Subcategoria</th>
                            <th style="text-align:left;">Tipo de Documento</th>
                            <th style="text-align:left;">Registro de Calidad</th>
                            <th style="text-align:left;">Calidad Code</th>
                            <th style="text-align:left;">Codigo de tiempo</th>
                            <th style="text-align:left;">Edicion</th>
                            <th style="text-align:left;">Eliminar</th>
 
 
                        </tr>
                    </thead>
                    <?php foreach ($model->Listar() as $r): ?>
                        <tr>
                            <td><?php echo $r->__GET('acro_documento'); ?></td>
                            <td><?php echo $r->__GET('acro_subcategoria'); ?></td>
                            <td><?php echo $r->__GET('tipo_documento'); ?></td>
                            <td><?php echo $r->__GET('registro_calidad'); ?></td>
                            <td><?php echo $r->__GET('calidad_code'); ?></td>
                            <td><?php echo $r->__GET('cod_tempo'); ?></td>
 
                            <td>
                                <a href="?action=editar&id&id1=<?php echo $r->acro_documento;$r->acro_subcategoria ?>">Editar</a>
                            </td>
                            <td>
                                <a href="?action=eliminar&acro_documento=acro_subcategoria=<?php echo $r->acro_documento;$r->acro_subcategoria; ?>">Eliminar</a>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </table>
 
            </div>
        </div>
 
    </body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 04/04/2017 13:40:06
Eso de no poder editar...xD!

Vale ya lo "tengo" me falta la tabal mas grande que contiene 5 PK.

Si la acabo y estais interesados puedo abrir un post dando el ejemplo del CRUD en PDO para que a nadie mas le vuelva a ocurrir estos fallos o pueda orientarse, y no sin decir que sin Alejandro no hubiera llegado hasta aqui.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 04/04/2017 16:01:52
Vale pensaba que si pero no, solo ingresa no edita, el problema debe de venir de la parte de como recojo los datos para los campos de editar y eliminar del final del documento. Por codigo fuente veo que me los esta recogiendo bien pero luego me salta este error.

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
require_once 'alumno.entidad2.php';
require_once 'alumno.model2.php';
 
// Logica
$alm = new Categoria();
$model = new CategoriaModel();
 
if (isset($_REQUEST['action'])) {
    switch ($_REQUEST['action']) {
        case 'actualizar':
 
 
 
            // Recupero el id del campo hidden
 
            $alm->__SET('acro_documento', $_REQUEST['acro_documento']);
            $alm->__SET('acro_subcategoria', $_REQUEST['acro_subcategoria']);
            $alm->__SET('tipo_documento', $_REQUEST['tipo_documento']);
            $alm->__SET('registro_calidad', $_REQUEST['registro_calidad']);
            $alm->__SET('calidad_code', $_REQUEST['calidad_code']);
            $alm->__SET('cod_tempo', $_REQUEST['cod_tempo']);
 
            $update_results = $model->Actualizar($alm, $_POST['id']);
 
            header('Location: index2.php');
 
            break;
 
        case 'registrar':
            $alm->__SET('acro_documento', $_REQUEST['acro_documento']);
            $alm->__SET('acro_subcategoria', $_REQUEST['acro_subcategoria']);
            $alm->__SET('tipo_documento', $_REQUEST['tipo_documento']);
            $alm->__SET('registro_calidad', $_REQUEST['registro_calidad']);
            $alm->__SET('calidad_code', $_REQUEST['calidad_code']);
            $alm->__SET('cod_tempo', $_REQUEST['cod_tempo']);
 
            $model->Registrar($alm);
            header('Location: index2.php');
            break;
 
        case 'eliminar':
            $model->Eliminar($_REQUEST['acro_documento']);
            $model->Eliminar($_REQUEST['acro_subcategoria']);
            header('Location: index2.php');
            break;
 
        case 'editar':
            // Recupero los datos por el id
            // $obj_categoria es un objeto del tipo Categoria
            $obj_categoria = $model->Obtener($_REQUEST['id']);
 
            break;
        default:
            // MENSAJE 404 PARA CUANDO LA ACCION NO ES VALIDA
            header('HTTP/1.0: 404 Not Found');
            die('<h1>404 Page Not Found</h1>');
    }
}
?>
 
<!DOCTYPE html>
<html lang="es">
    <head>
        <title>Anexsoft</title>
        <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
    </head>
    <body style="padding:15px;">
 
        <div class="pure-g">
            <div class="pure-u-1-12">
 
                <form action="?action=<?php echo isset($obj_categoria) ? 'actualizar' : 'registrar'; ?>" method="POST" class="pure-form pure-form-stacked" style="margin-bottom:30px;">
                    <input type="hidden" name="id" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_documento'): ''; ?>" />
                    <input type="hidden" name="id" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_subcategoria'): ''; ?>" />
 
                    <table style="width:500px;">
                        <tr>
                            <th style="text-align:left;">Acronimo Documento</th>
                            <td><input type="text" name="acro_documento"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_documento') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Acronimo Subcategoria</th>
                            <td><input type="text" name="acro_subcategoria"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_subcategoria') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Tipo de Documento</th>
                            <td><input type="text" name="tipo_documento"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('tipo_documento') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Registro de Calidad</th>
                            <td><input type="text" name="registro_calidad"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('registro_calidad') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Calidad Code</th>
                            <td><input type="text" name="calidad_code"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('calidad_code') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Codigo de Tiempo</th>
                            <td><input type="text" name="cod_tempo"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('cod_tempo') : ''; ?>" style="width:100%;" required/></td>
                            <td colspan="2">
                                <button type="submit" class="pure-button pure-button-primary">Guardar</button>
                            </td>
                        </tr>
                    </table>
                </form>
 
                <table class="pure-table pure-table-horizontal">
                    <thead>
                        <tr>
                            <th style="text-align:left;">Acronimo Documento</th>
                            <th style="text-align:left;">Acronimo Subcategoria</th>
                            <th style="text-align:left;">Tipo de Documento</th>
                            <th style="text-align:left;">Registro de Calidad</th>
                            <th style="text-align:left;">Calidad Code</th>
                            <th style="text-align:left;">Codigo de tiempo</th>
                            <th style="text-align:left;">Edicion</th>
                            <th style="text-align:left;">Eliminar</th>
 
 
                        </tr>
                    </thead>
                    <?php foreach ($model->Listar() as $r): ?>
                        <tr>
                            <td><?php echo $r->__GET('acro_documento'); ?></td>
                            <td><?php echo $r->__GET('acro_subcategoria'); ?></td>
                            <td><?php echo $r->__GET('tipo_documento'); ?></td>
                            <td><?php echo $r->__GET('registro_calidad'); ?></td>
                            <td><?php echo $r->__GET('calidad_code'); ?></td>
                            <td><?php echo $r->__GET('cod_tempo'); ?></td>
 
                            <td>
                                <a href="?action=editar&id=<?php echo $r->acro_documento;?>"
                                   href="?action=editar&id=<?php echo $r->acro_subcategoria; ?>"
                                >
                                <img src="icon_editthis.png" width="30px" height="30px"/></a>
                            </td>
                            <td>
                                <a href="?action=eliminar&acro_documento=<?php echo $r->acro_documento; ?>"
                                   href="?action=eliminar&acro_subcategoria=<?php echo $r->acro_subcategoria; ?>"
                                >
                                <img src="delete.png" width="30px" height=30px"/></a>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </table>

            </div>
        </div>

    </body>
</html>


alumno.model2.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
 
class CategoriaModel {
 
    private $pdo;
 
    public function __CONSTRUCT() {
        try {
            $this->pdo = new PDO('mysql:host=localhost;dbname=deimos1', 'root', '');
            $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    public function Listar() {
        try {
            $result = array();
 
            $stm = $this->pdo->prepare("SELECT * FROM tipodocumentos");
            $stm->execute();
 
            foreach ($stm->fetchAll(PDO::FETCH_OBJ) as $r) {
                $alm = new Categoria();
 
                $alm->__SET('acro_documento', $r->acro_documento);
                $alm->__SET('acro_subcategoria', $r->acro_subcategoria);
                $alm->__SET('tipo_documento', $r->tipo_documento);
                $alm->__SET('registro_calidad', $r->registro_calidad);
                $alm->__SET('calidad_code', $r->calidad_code);
                $alm->__SET('cod_tempo', $r->cod_tempo);
                $result[] = $alm;
            }
 
            return $result;
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    public function Obtener($acronimo) {
        try {
            $stm = $this->pdo->prepare("SELECT * FROM tipodocumentos WHERE acro_documento  = ? and acro_subcategoria = ?");
 
            $stm->execute(array($acronimo));
            $r = $stm->fetch(PDO::FETCH_OBJ);
 
            $alm = new Categoria();
 
            $alm->__SET('acro_documento', $r->acro_documento);
            $alm->__SET('acro_subcategoria', $r->acro_subcategoria);
            $alm->__SET('tipo_documento', $r->tipo_documento);
            $alm->__SET('registro_calidad', $r->registro_calidad);
            $alm->__SET('calidad_code', $r->calidad_code);
            $alm->__SET('cod_tempo', $r->cod_tempo);
 
            return $alm;
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    public function Eliminar($acronimo) {
        try {
            $stm = $this->pdo
                    ->prepare("DELETE FROM tipodocumentos WHERE acro_documento = ? and acro_subcategoria = ?");
 
            $stm->execute(array($acronimo));
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    // ##############################################################################################
    // CAMBIOS REALIZADOS
    // - USO DE PARAMETROS NOMBRADOS EN EN METODO .execute()
    // ##############################################################################################		
    public function Actualizar(Categoria $data, $acro_doc_viejo, $acro_sub_viejo) {
 
        try {
 
            $sql = "UPDATE tipodocumentos SET tipo_documento =:tipo_documento, registro_calidad =:registro_calidad, calidad_code =:calidad_code, "
                    . "cod_tempo =:cod_tempo, acro_documento =:acro_documento, acro_subcategoria =:acro_subcategoria WHERE acro_documento=:acro_doc_viejo and acro_subcategoria =:acro_sub_viejo";
 
 
 
            return $this->pdo->prepare($sql)
                            ->execute(
                                    array(
                                        ':acro_doc_viejo' => $acro_doc_viejo,
                                        ':acro_sub_viejo' => $acro_sub_viejo,
                                        ':acro_documento' => $data->__GET('acro_documento'),
                                        ':acro_subcategoria' => $data->__GET('acro_subcategoria'),
                                        ':tipo_documento' => $data->__GET('tipo_documento'),
                                        ':registro_calidad' => $data->__GET('registro_calidad'),
                                        ':calidad_code' => $data->__GET('calidad_code'),
                                        ':cod_tempo' => $data->__GET('cod_tempo')
                                    )
            );
        } catch (Exception $e) {
 
            die($e->getMessage());
        }
    }
 
    // ##############################################################################################
 
    public function Registrar(Categoria $data) {
        try {
            $sql = "INSERT INTO tipodocumentos (acro_documento,acro_subcategoria,tipo_documento,registro_calidad,calidad_code,cod_tempo)
		        VALUES (?, ?, ?, ?, ?, ?)";
 
            $this->pdo->prepare($sql)
                    ->execute(
                            array(
                                $data->__GET('acro_documento'),
                                $data->__GET('acro_subcategoria'),
                                $data->__GET('tipo_documento'),
                                $data->__GET('registro_calidad'),
                                $data->__GET('calidad_code'),
                                $data->__GET('cod_tempo')
                            )
            );
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
}

alumno.entiedad2.php

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Categoria
{
	private $acro_documento;
	private $acro_subcategoria;
        private $tipo_documento;
        private $registro_calidad;
        private $calidad_code;
        private $cod_tempo;
 
	public function __GET($k){ return $this->$k; }
	public function __SET($k, $v){ return $this->$k = $v; }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 05/04/2017 00:22:35
Vale ya esta me lie y no hizo falta añadir nada, salia al igual que las otras fallo mio.

Ahora viene la ultima tabla.

GvmXgzf

Si nos fijamos en la tabla documento contiene 4 PK para que un documento pueda tener un unico nombre en una unica version, revision y numero de este

Debo de recoger las 4 PK para hacer un UPDATE o un DELETE?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 61
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alejandro (17 intervenciones) el 05/04/2017 04:39:53
Hola Alberto, respecto a tu ultima pregunta, Si debes recuperar los 4 o 5 campos que conforman tu clave primaria ya que está PK es compuesta.

Ejemplo:
TITULO_DOCUMENTO: Prueba1 Prueba2
PROYECTO: ABC ABC
NUM_DOC 1 1
VERSION 1 1
REVISION 1 1

Imaginate que tenes los dos documentos anteriores los cuales son diferentes entre sí ya que el titulo_documento es distinto no importando si los demás campos de la PK son iguales. Por lo tanto si al menos el valor de un atributo de la PK es distinto ya es un documento diferente. Por lo tanto es necesario contar con todos los campos de la PK para aplicar un UPDATE o DELETE. Supón que quieres eliminar el documento del proyecto ABC y la consulta que ejecutas es DELETE FROM documento WHERE proyecto = 'ABC' pero en este caso hay dos documentos que tienen ABC como valor de PROYECTO por lo tanto necesitas el valor de otro campo determinante como es el titulo_documento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 05/04/2017 10:59:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
<?php
require_once 'alumno.entidad7.php';
require_once 'alumno.model7.php';
 
// Logica
$alm = new Categoria();
$model = new CategoriaModel();
 
if (isset($_REQUEST['action'])) {
    switch ($_REQUEST['action']) {
        case 'actualizar':
 
 
 
            // Recupero el id del campo hidden
 
            $alm->__SET('titulo_documento', $_REQUEST['titulo_documento']);
            $alm->__SET('proyecto', $_REQUEST['proyecto']);
            $alm->__SET('estado', $_REQUEST['estado']);
            $alm->__SET('idioma', $_REQUEST['idioma']);
            $alm->__SET('num_documento', $_REQUEST['num_documento']);
            $alm->__SET('version', $_REQUEST['version']);
            $alm->__SET('revision', $_REQUEST['revision']);
            $alm->__SET('descripcion', $_REQUEST['descripcion']);
            $alm->__SET('fecha', $_REQUEST['fecha']);
            $alm->__SET('subcategoria', $_REQUEST['subcategoria']);
            $alm->__SET('confidencialidad', $_REQUEST['confidencialidad']);
            $alm->__SET('tipo_documento', $_REQUEST['tipo_documento']);
            $alm->__SET('acro_usuario', $_REQUEST['acro_usuario']);
            $alm->__SET('aprobado_por', $_REQUEST['aprobado_por']);
            $alm->__SET('autorizado_por', $_REQUEST['autorizado_por']);
            $alm->__SET('revisor', $_REQUEST['revisor']);
            $alm->__SET('compania', $_REQUEST['compania']);
            $alm->__SET('codigo_proyecto', $_REQUEST['codigo_proyecto']);
 
            $update_results = $model->Actualizar($alm, $_POST['id'],$alm, $_POST['id'],$alm, $_POST['id'],$alm, $_POST['id']);
 
            header('Location: index7.php');
 
            break;
 
        case 'registrar':
            $alm->__SET('titulo_documento', $_REQUEST['titulo_documento']);
            $alm->__SET('proyecto', $_REQUEST['proyecto']);
            $alm->__SET('estado', $_REQUEST['estado']);
            $alm->__SET('idioma', $_REQUEST['idioma']);
            $alm->__SET('num_documento', $_REQUEST['num_documento']);
            $alm->__SET('version', $_REQUEST['version']);
            $alm->__SET('revision', $_REQUEST['revision']);
            $alm->__SET('descripcion', $_REQUEST['descripcion']);
            $alm->__SET('fecha', $_REQUEST['fecha']);
            $alm->__SET('subcategoria', $_REQUEST['subcategoria']);
            $alm->__SET('confidencialidad', $_REQUEST['confidencialidad']);
            $alm->__SET('tipo_documento', $_REQUEST['tipo_documento']);
            $alm->__SET('acro_usuario', $_REQUEST['acro_usuario']);
            $alm->__SET('aprobado_por', $_REQUEST['aprobado_por']);
            $alm->__SET('autorizado_por', $_REQUEST['autorizado_por']);
            $alm->__SET('revisor', $_REQUEST['revisor']);
            $alm->__SET('compania', $_REQUEST['compania']);
            $alm->__SET('codigo_proyecto', $_REQUEST['codigo_proyecto']);
 
            $model->Registrar($alm);
            header('Location: index7.php');
            break;
 
        case 'eliminar':
            $model->Eliminar($_REQUEST['titulo_documento']);
            $model->Eliminar($_REQUEST['num_documento']);
            $model->Eliminar($_REQUEST['version']);
            $model->Eliminar($_REQUEST['revision']);
            header('Location: index7.php');
            break;
 
        case 'editar':
            // Recupero los datos por el id
            // $obj_categoria es un objeto del tipo Categoria
            $obj_categoria = $model->Obtener($_REQUEST['id']);
 
            break;
        default:
            // MENSAJE 404 PARA CUANDO LA ACCION NO ES VALIDA
            header('HTTP/1.0: 404 Not Found');
            die('<h1>404 Page Not Found</h1>');
    }
}
?>
 
<!DOCTYPE html>
<html lang="es">
    <head>
        <title>Anexsoft</title>
        <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
    </head>
    <body style="padding:15px;">
 
        <div class="pure-g">
            <div class="pure-u-1-12">
 
                <form action="?action=<?php echo isset($obj_categoria) ? 'actualizar' : 'registrar'; ?>" method="POST" class="pure-form pure-form-stacked" style="margin-bottom:30px;">
                    <input type="" name="id" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('titulo_documento') : ''; ?>" />
                    <input type="" name="id" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('num_documento') : ''; ?>" />
                    <input type="" name="id" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('version') : ''; ?>" />
                    <input type="" name="id" value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('revision') : ''; ?>" />
 
                    <table style="width:500px;">
                        <tr>
                            <th style="text-align:left;">Titulo del Documento</th>
                            <td><input type="text" name="titulo_documento"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('titulo_documento') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Acronimo Proyecto</th>
                            <td><input type="text" name="proyecto"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('proyecto') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Estado</th>
                            <td><input type="text" name="estado"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('estado') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Numero de documento</th>
                            <td><input type="text" name="num_documento"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('num_documento') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Idioma</th>
                            <td><input type="text" name="idioma"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('idioma') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Version</th>
                            <td><input type="text" name="version"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('version') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Revision</th>
                            <td><input type="text" name="revision"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('revision') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                        <tr>
                            <th style="text-align:left;">Descripcion</th>
                            <td><input type="text" name="descripcion"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('descripcion') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Fecha</th>
                            <td><input type="text" name="fecha"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('fecha') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Acronimo Subcategoria</th>
                            <td><input type="text" name="subcategoria"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('subcategoria') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Confidencialidad</th>
                            <td><input type="text" name="confidencialidad"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('confidencialidad') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Tipo de documento</th>
                            <td><input type="text" name="tipo_documento"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('tipo_documento') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Usuario</th>
                            <td><input type="text" name="acro_usuario"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('acro_usuario') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Aprobado por</th>
                            <td><input type="text" name="aprobado_por"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('aprobado_por') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Autorizado por</th>
                            <td><input type="text" name="autorizado_por"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('autoriado_por') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Revisor</th>
                            <td><input type="text" name="revisor"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('revisor') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Compañia</th>
                            <td><input type="text" name="compania"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('compania') : ''; ?>" style="width:100%;" required /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">Codigo del proyecto</th>
                            <td><input type="text" name="codigo_proyecto"  value="<?php echo isset($obj_categoria) ? $obj_categoria->__GET('codigo_proyecto') : ''; ?>" style="width:100%;" required/></td>
                            <td colspan="2">
                                <button type="submit" class="pure-button pure-button-primary">Guardar</button>
                            </td>
                        </tr>
                    </table>
                </form>
 
                <table class="pure-table pure-table-horizontal">
                    <thead>
                        <tr>
                            <th style="text-align:left;">Titulo del documento</th>
                            <th style="text-align:left;">Acronimo Proyecto</th>
                            <th style="text-align:left;">Estadp</th>
                            <th style="text-align:left;">Idioma</th>
                            <th style="text-align:left;">Nº del documento</th>
                            <th style="text-align:left;">Version</th>
                            <th style="text-align:left;">Revision</th>
                            <th style="text-align:left;">Descripcion</th>
                            <th style="text-align:left;">Fecha</th>
                            <th style="text-align:left;">Acronimo Subcategoria</th>
                            <th style="text-align:left;">Confidencialidad</th>
                            <th style="text-align:left;">Tipo de documento</th>
                            <th style="text-align:left;">Usuario</th>
                            <th style="text-align:left;">Aprobado por</th>
                            <th style="text-align:left;">Autorizado por</th>
                            <th style="text-align:left;">Revisor</th>
                            <th style="text-align:left;">Compañia</th>
                            <th style="text-align:left;">Codigo proyecto</th>
                            <th style="text-align:left;">Edicion</th>
                            <th style="text-align:left;">Eliminar</th>
 
                        </tr>
                    </thead>
                        <?php foreach ($model->Listar() as $r): ?>
                        <tr>
                            <td><?php echo $r->__GET('titulo_documento'); ?></td>
                            <td><?php echo $r->__GET('proyecto'); ?></td>
                            <td><?php echo $r->__GET('estado'); ?></td>
                            <td><?php echo $r->__GET('idioma'); ?></td>
                            <td><?php echo $r->__GET('num_documento'); ?></td>
                            <td><?php echo $r->__GET('version'); ?></td>
                            <td><?php echo $r->__GET('revision'); ?></td>
                            <td><?php echo $r->__GET('descripcion'); ?></td>
                            <td><?php echo $r->__GET('fecha'); ?></td>
                            <td><?php echo $r->__GET('subcategoria'); ?></td>
                            <td><?php echo $r->__GET('confidencialidad'); ?></td>
                            <td><?php echo $r->__GET('tipo_documento'); ?></td>
                            <td><?php echo $r->__GET('acro_usuario'); ?></td>
                            <td><?php echo $r->__GET('aprobado_por'); ?></td>
                            <td><?php echo $r->__GET('autorizado_por'); ?></td>
                            <td><?php echo $r->__GET('revisor'); ?></td>
                            <td><?php echo $r->__GET('compania'); ?></td>
                            <td><?php echo $r->__GET('codigo_proyecto'); ?></td>
 
                            <td>
                                <a href="?action=editar&id=<?php echo $r->titulo_documento;echo $r->num_documento; echo $r->version;echo $r->revision; ?>"><img src="icon_editthis.png" width="30px" height="30px"/></a>
                            </td>
                            <td>
                                <a href="?action=eliminar&titulo_documento=<?php echo $r->titulo_documento;echo $r->num_documento;echo $r->version;echo $r->revision; ?>"><img src="delete.png" width="30px" height="30px"/></a>
                            </td>
                        </tr>
<?php endforeach; ?>
                </table>
 
            </div>
        </div>
 
    </body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 05/04/2017 11:23:09
Pongo la otra parte del codigo que no cabia en un post
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
<?php
 
class CategoriaModel {
 
    private $pdo;
 
    public function __CONSTRUCT() {
        try {
            $this->pdo = new PDO('mysql:host=localhost;dbname=deimos1', 'root', '');
            $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    public function Listar() {
        try {
            $result = array();
 
            $stm = $this->pdo->prepare("SELECT * FROM documento");
            $stm->execute();
 
            foreach ($stm->fetchAll(PDO::FETCH_OBJ) as $r) {
                $alm = new Categoria();
 
                $alm->__SET('titulo_documento', $r->titulo_documento);
                $alm->__SET('proyecto', $r->proyecto);
                $alm->__SET('estado', $r->estado);
                $alm->__SET('idioma', $r->idioma);
                $alm->__SET('num_documento', $r->num_documento);
                $alm->__SET('version', $r->version);
                $alm->__SET('revision', $r->revision);
                $alm->__SET('descripcion', $r->descripcion);
                $alm->__SET('fecha', $r->fecha);
                $alm->__SET('subcategoria', $r->subcategoria);
                $alm->__SET('confidencialidad', $r->confidencialidad);
                $alm->__SET('tipo_documento', $r->tipo_documento);
                $alm->__SET('acro_usuario', $r->acro_usuario);
                $alm->__SET('aprobado_por', $r->aprobado_por);
                $alm->__SET('autorizado_por', $r->autorizado_por);
                $alm->__SET('revisor', $r->revisor);
                $alm->__SET('compania', $r->compania);
                $alm->__SET('codigo_proyecto', $r->codigo_proyecto);
                $result[] = $alm;
            }
 
            return $result;
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    public function Obtener($acronimo) {
        try {
            $stm = $this->pdo->prepare("SELECT * FROM documento WHERE titulo_documento = ?");
 
            $stm->execute(array($acronimo));
            $r = $stm->fetch(PDO::FETCH_OBJ);
 
            $alm = new Categoria();
 
            $alm->__SET('titulo_documento', $r->titulo_documento);
            $alm->__SET('proyecto', $r->proyecto);
            $alm->__SET('estado', $r->estado);
            $alm->__SET('idioma', $r->idioma);
            $alm->__SET('num_documento', $r->num_documento);
            $alm->__SET('version', $r->version);
            $alm->__SET('revision', $r->revision);
            $alm->__SET('descripcion', $r->descripcion);
            $alm->__SET('fecha', $r->fecha);
            $alm->__SET('subcategoria', $r->subcategoria);
            $alm->__SET('confidencialidad', $r->confidencialidad);
            $alm->__SET('tipo_documento', $r->tipo_documento);
            $alm->__SET('acro_usuario', $r->acro_usuario);
            $alm->__SET('aprobado_por', $r->aprobado_por);
            $alm->__SET('autorizado_por', $r->autorizado_por);
            $alm->__SET('revisor', $r->revisor);
            $alm->__SET('compania', $r->compania);
            $alm->__SET('codigo_proyecto', $r->codigo_proyecto);
 
            return $alm;
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    public function Eliminar($acronimo,$acronimo1,$aronimo2,$acronimo3) {
        try {
            $stm = $this->pdo
                    ->prepare("DELETE FROM documento WHERE titulo_documento = ? , num_documento = ?, version = ?, revision = ?");
 
            $stm->execute(array($acronimo,$acronimo1,$aronimo2,$acronimo3));
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
    // ##############################################################################################
    // CAMBIOS REALIZADOS
    // - USO DE PARAMETROS NOMBRADOS EN EN METODO .execute()
    // ##############################################################################################		
    public function Actualizar(Categoria $data, $titulo_documento_viejo, $num_documento_viejo, $version_viejo, $revision_viejo) {
 
        try {
 
            $sql = "UPDATE documento SET proyecto =:proyecto, estado =:estado, idioma =:idioma, num_documento =:num_documento,"
                    . "version =:version, revision =:revision, descripcion =:descripcion, fecha =:fecha, subcategoria =:subcategoria,"
                    . "confidencialidad =:confidencialidad, tipo_documento =:tipo_documento, acro_usuario =:acro_usuario, aprobado_por =:aprobado_por"
                    . "autorizado_por =:autorizado_por, revisor =:revisor, compania =: compania, codigo_proyecto =:codigo_proyecto,"
                    . "titulo_documento =:titulo_documento WHERE titulo_documento =:titulo_documento_viejo and num_documento = =:num_documento_viejo and"
                    . "version =: version_viejo and revision =: revision_viejo";
 
 
 
            return $this->pdo->prepare($sql)
                            ->execute(
                                    array(
                                        ':titulo_documento_viejo' => $titulo_documento_viejo,
                                        ':num_documento_viejo' => $num_documento_viejo,
                                        ':version_viejo' => $version_viejo,
                                        ':revision_viejo' => $revision_viejo,
                                        ':titulo_documento' => $data->__GET('titulo_documento'),
                                        ':proyecto' => $data->__GET('proyecto'),
                                        ':estado' => $data->__GET('estado'),
                                        ':idioma' => $data->__GET('idioma'),
                                        ':num_documento' => $data->__GET('num_documento'),
                                        ':version' => $data->__GET('version'),
                                        ':revision' => $data->__GET('revision'),
                                        ':descripcion' => $data->__GET('descripcion'),
                                        ':fecha' => $data->__GET('fecha'),
                                        ':subcategoria' => $data->__GET('subcategoria'),
                                        ':confidencialidad' => $data->__GET('confidencialidad'),
                                        ':tipo_documento' => $data->__GET('tipo_documento'),
                                        ':acro_usuario' => $data->__GET('acro_usuario'),
                                        ':aprobado_por' => $data->__GET('aprobado_por'),
                                        ':autorizado_por' => $data->__GET('autorizado_por'),
                                        ':revisor' => $data->__GET('revisor'),
                                        ':compania' => $data->__GET('compania'),
                                        ':codigo_proyecto' => $data->__GET('codigo_proyecto')
                                    )
            );
        } catch (Exception $e) {
 
            die($e->getMessage());
        }
    }
 
    // ##############################################################################################
 
    public function Registrar(Categoria $data) {
        try {
            $sql = "INSERT INTO documento (titulo_documento,proyecto,estado,idioma,num_documento,version,revision,descripcion,fecha,subcategoria,confidencialidad,
                tipo_documento,acro_usuario,aprobado_por,autorizado_por,revisor,compania,codigo_proyecto)
		        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
 
            $this->pdo->prepare($sql)
                    ->execute(
                            array(
                                $data->__GET('titulo_documento'),
                                $data->__GET('proyecto'),
                                $data->__GET('estado'),
                                $data->__GET('idioma'),
                                $data->__GET('num_documento'),
                                $data->__GET('version'),
                                $data->__GET('revision'),
                                $data->__GET('descripcion'),
                                $data->__GET('fecha'),
                                $data->__GET('subcategoria'),
                                $data->__GET('confidencialidad'),
                                $data->__GET('tipo_documento'),
                                $data->__GET('acro_usuario'),
                                $data->__GET('aprobado_por'),
                                $data->__GET('autorizado_por'),
                                $data->__GET('revisor'),
                                $data->__GET('compania'),
                                $data->__GET('codigo_proyecto')
                            )
            );
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 05/04/2017 20:25:08
Pongo de nuevo el codigo hice bastantes cambios, como que ya me recoge los datos correctamente para los HREF de abajo del todo al menos eso dinca el codigo fuente lo unico que al actualizar el DELETE no hace nada y el UPDATE indica que los parametros van vacios.
Y de nuevo muchisimas gracias por tu ayuda eres muy grande.

Index7.php
alumno.model7.php
alumno.entidad7.php

Estozs son los 3 archivos de la ultima tabla la de documento la que contiene 4 PK (titulo_documento,num_documento,version,revision)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 06/04/2017 00:10:22
La parte de eliminar registros ya me lo hace a la perfeccion y insertar tambien solo queda arreglar el UPDATE, poco a poco esta cais hecho ya.

Index7.php
alumno.model7.php
alumno.entidad7.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 61
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alejandro (17 intervenciones) el 06/04/2017 00:59:42
Hola Alberto, estuve revisando nuevamente el código (en la versión 7) y note que existe varios problemas. Uno de ellos es que para dar de alta a un documento primero debes recuperar aquellos campos que son FK del documento como la compañía, proyecto, revisión, etc. Para luego en el form de alta de documento desplegar cada uno en un select por ejemplo. Osea que estas tablas deben estar previamente cargadas. Después a la hora de actualizar como las tablas que tienen FK en documento están configuradas como ON DELETE CASCADE y ON UPDATE CASCADE deben ser actualizadas en dichas tablas para de esta manera aplicar dichos cambios en las tablas hijas, aplicar la cascada. Mi recomendación es solucionar este problema antes de continuar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 06/04/2017 01:07:03
Si estoy al tanto de que va a ser un problema, se lo e comunicado esta mañana y me a dicho que lo reconfiguraremos mas adelante, que intentara configurar la tabla numero 7, y como te he comentado ya tengo que inserte( que eso era facil) y que elimine recogiendo los valores de las 4 claves primarias, solo me queda que pueda modificar para enseñarselo mañana, estoy en ello a ver si lo consigo pero por ahora me sigue dando error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 06/04/2017 02:47:00
UPDATE que tambien modifique las claves primarias (a la tabla 7(documento) Index7.php)

Estado realizando un par de cambios con la ayuda que me distes y creo que algo avance aunque sigue sin funcionar sigue dandome un error.

Lamento tanto molestarte muchisimo, y que te haga perder el timepo, pero era para comentarte si pudieras ayudarme a terminar de hacer el UPDATE te estaria tremendamente agradecido, de verdad.
Y de nuevo siento mucho ser tan molesto.

Y esque me tengo que ir ya a dormir aqui en España son las 3 de la mañana y tengo que entrar a entregarlo mañana a las 8.

Muchas gracias y perdona de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 61
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alejandro (17 intervenciones) el 07/04/2017 00:52:44
Hola Alberto, adjunto el CRUD-PDO, con los cambios en el método actualizar. Fijate en el archivo alumno.model7.php que se encuentra comentado los cambios realizados.Espero sirva.

Nos Comentas . Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 08/04/2017 20:56:24
Madre mia...muchisimas gracias, siento mucho la tardanza en contestar,
Voy a probarlo ahora despues que e tenido unos problemillas.

Si te parece podria rehacer todo y hacer un codigo comentado para mostrarlo a todos que necesiten ayuda de este tema.

Muchisimas gracias por tu ayuda!!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ingresar,eliminar, actualizar registros de una BBDD con PDO

Publicado por Alberto (18 intervenciones) el 09/04/2017 18:02:36
Una cosilla, estoy ya realizando el CRUD final, y estaba pensando una cosa.

Cuando en una tabal exista un campo es clave foranea, significa que debes de coger un valor dado de otra tabla que es primaria, bien pues mi pregunta es,

Suponemos en tabla 1 tenemos como clave primaria 1 2 y 3
En tabla 2 tenemos como clave primaria Alberto y su foranea 1, Andrés y su foranea 2 y Carla y su foranea 3.
Puedo hacer que en la segunda tabla de este CRUD visualmente recoga el 1 2 y 3 en un desplegable sin dar otra opcion a poner que no sea las dadas en la clave primaria de la tabla 1 o es ya muy dificil de realizar eso?

Es por dejarlo curioso.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar