PHP - fallos al manejar un objeto

 
Vista:
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

fallos al manejar un objeto

Publicado por Charly (70 intervenciones) el 09/11/2018 17:02:24
Estoy creando una página para almacenar la información de varios discos, que está unida a una base de datos phpmyadmin.
Insertar me funciona, pero al consultar, editar, buscar y borrar no me encuentra bien el objeto creado.
Este es el archivo index_discos.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
<html>
	<head>
		<title>Gestor de discos</title>
		<style type="text/css">
			<!--input{
				font-family:Arial,Helvetica;
				font-size:14;
				color:#000033;
				font-weight:normal;
				border-color:#999999;
				border-width:1;
				background-color:#FFFFFF;
			}-->
		</style>
	</head>
	<body bgcolor="#C0C0C0" link="blue" vlink="blue" alink="blue">
		<font face="arial,helvetica">
			<table border="0" align="center" cellspacing="3" cellpadding="3" width="650">
				<tr><th colspan="2" width="100%" bgcolor="blue"><font size="6" color="white">Gestor de Discos</font></th>
				</tr></table><p>
<?php
	require("discos.php");
	$los_discos=new discos();
	echo "<center><p>
     	<table border='0' width='600'><tr>
			<td valign=top align=center colspan=2>
				<form name='form1' mrthod='post' action=\"index_discos.php?operacion=buscar\">
				<font size ='-1'>Buscar por el campo <select name='campo_busqueda'>
				<option ";
			if((isset($_REQUEST["campo_busqueda"]))&&($_REQUEST["campo_busqueda"]=='titulo')) echo "selected";
			echo "Value=titulo>Título</option><option ";
			if((isset($_REQUEST["campo_busqueda"]))&&($_REQUEST["campo_busqueda"]=='interprete')) echo "selected";
			echo " Value=interprete>Intérprete</option></select>";
			if(!isset($_REQUEST["lo_q_busco"])) $_REQUEST["lo_q_busco"]="";
			echo "<p><input type='text' name='lo_q_busco' value='".$_REQUEST["lo_q_busco"]."' size='20'>";
			echo "<input type='submit' name='boton_buscar' value='Buscar!'>
				</font>
				</form>
			</td><td align=center>
				<form name='form2' method='post' action='index_discos.php?operacion=introduce&ver=0&nume=0#ancla'>
				<input type='submit' name='alta' value=\"Nuevo disco\">
				</form>
				<form name='form3' method='post' action='index_discos.php?operacion=listado'>
				<input type='submit' name='alta' value='Listado completo'>
				</form>
			</td>
		</tr></table>";
	if(isset($_REQUEST["operacion"])){
		if($_REQUEST["operacion"]=="listado") $los_discos->buscar("","titulo");
		elseif($_REQUEST["operacion"]=="buscar") $los_discos->buscar($_REQUEST["lo_q_busco"],$_REQUEST["campo_busqueda"]);
		elseif($_REQUEST["operacion"]=="introduce"){//ventana de alta o edición
			if($_REQUEST["ver"]==1) $caption="Datos del disco";
			else if($_REQUEST["nume"]>0) $caption="Modificar disco";
			else $caption="Alta de nuevo disco";
			echo "<p><hr><a name='ancla'></a><font color='blue' size=+1>$caption</font>";
			$los_discos->introduce($_REQUEST["nume"],$_REQUEST["ver"]);
		}elseif($_REQUEST["operacion"]=="exec_alta"){
			if($_REQUEST["titulo"]=="")
				echo "<center>No se puede realizar la operación: el campo 'Título' es obligatorio.</center><p>";
			elseif($_REQUEST["interprete"]=="")
				echo "<center>No se puede realizar la operación: el campo 'Intérprete' es obligatorio.</center><p>";
			else{
				$los_discos->add_disco($_REQUEST["registro"],$_REQUEST["titulo"],$_REQUEST["interprete"],$_REQUEST["estilo"],$_REQUEST["casa_discografica"],$_REQUEST["formato"],$_REQUEST["duracion"],$_REQUEST["anio"],$_FILES['imagen']);
				if($_REQUEST["registro"]>0) $caption="modificado";
				else $caption="dado de alta";
				echo "<p><center><font color='blue'> Se ha $caption correctamente el disco:<b>".$_REQUEST["titulo"]."</b> del intérprete <b>".$_REQUEST["interprete"]."</b></font></center><p>";
			}
		}elseif($_REQUEST["operacion"]=="borrar") $los_discos->del_disco($_REQUEST["nume"]);
	}else
		$los_discos->buscar("","titulo");
?>
</body>
</html>
Y este es el archivo discos.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
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
<?php
	function boton_ficticio($caption,$url){
		return "<table border=1 cellspacing=0 cellpadding=3 bgcolor=black>
            <tr>
				<td bgcolor='white'>
					<font size='-1'>
						<a href='$url'>$caption</a>
					</font>
				</td>
			</tr>
		</table>";
	}
	define("SERVIDOR","localhost");
	define("USUARIO","root");
	define("CLAVE","");
	class discos{
		protected $db;
		function __construct($BD=""){
			try{
				if($BD!='')
					$this->db=new PDO("mysql:host=".SERVIDOR.";dbname=".$BD.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				else
					$this->db=new PDO("mysql:host=".SERVIDOR.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				$this->db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
				$this->db->setAttribute(PDO::NULL_TO_STRING,true);
				if($BD==''){
					$sql=file_get_contents('bases de datos.sql');
					$this->ejecuta_SQL($sql);
				}
			}catch(PDOException $e){
				die("<p><h3>No se ha podido establecer la conexión.
					<p>Compruebe si está activado el servidor de bases de
				  	datos MySQL.</h3></p>\n<p>Error: ".$e->getMessage()."</p>\n");
			}
		}
		function __destruct(){
			if(isset($db))
				$db=null;
		}
		function add_disco($registro,$titulo,$interprete,$estilo,$casa_discografica,$formato,$duracion,$anio,$imagen){
			if(isset($imagen)&&($imagen['size']>0)){
				if($imagen['size']>80000)
					die("<b>El fichero ocupa más de 80KB o no ha indicado su nombre en el formulario. No puede copiarse.</b>");
				if(is_uploaded_file($imagen['tmp_name'])&&!empty($imagen['tmp_name'])){
					$tipo_fichero=explode("/",$imagen['type']);
					if($tipo_fichero[0]=='image'){
						if($registro>0){
							$sql_script="SELECT imagen FROM discos WHERE id='$registro'";
							$resultado=$this->ejecuta_SQL($sql_script);
							$filas=$resultado->rowCount();
							if($filas==0){
								echo "<center>
									<table border=1 width=600 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
									<tr><td align=center valign=middle>
									<font size=+2>No se encuentra ningún registro</font>
									</td></tr></table></center>";
							}else{
								$myrow=$resultado->fetch_row();
								if($imagen['name']<>$myrow[0]){
									$sql_script="SELECT id FROM discos WHERE imagen='".$myrow[0]."'";
									$this->ejecuta_SQL($sql_script);
									if($filas==1){
										unlink("imagenes/".$myrow[0]);
									}
								}
							}
						}
						move_uploaded_file($imagen['tmp_name'],'imagenes/'.$imagen['name']);
					}else die("<b>Sólo se pueden subir ficheros de tipo imagen.</b>");
				}else die("<b>No se puede subir el fichero.</b>");
			}
			if($registro>0)
				$sql_script="UPDATE discos SET
				titulo='$titulo',interprete='$interprete',estilo='$estilo',
				casa_discografica='$casa_discografica',formato='$formato',
				duracion='$duracion',anio='$anio',imagen='".$imagen['name']."'
				WHERE id=$registro";
			else
				$sql_script="INSERT INTO discos
				(titulo,interprete,estilo,casa_discografica,formato,duracion,anio,imagen)
				VALUES('$titulo','$interprete','$estilo','$casa_discografica','$formato','$duracion','$anio','".$imagen['name']."')";
			$this->ejecuta_SQL($sql_script);
			$this->buscar("","titulo");
		}
		function nume_discos(){
			$sql_script="SELECT * FROM discos";
			$resultado=$this->ejecuta_SQL($sql_script);
			$filas=$resultado->rowCount();
			return $filas;
		}
		function del_disco($id_to_del){
			$sql_script="SELECT imagen FROM discos WHERE id='$id_to_del'";
			$resultado=$this->ejecuta_SQL($sql_script);
			$filas=$resultado->rowCount();
			if($filas==0){
				echo "<center>
					<table border=1 width=600 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
					<tr><td align=center valign=middle>
					<font size=+2>No se encuentra ningún registro</font>
					</td></tr></table></center>";
			}else{
				$myrow=$resultado->fetch_row();
				$sql_script="SELECT id FROM discos WHERE imagen='".$myrow[0]."'";
				$resultado=$this->ejecuta_SQL($sql_script);
				$filas=$resultado->rowCount();
				if($filas==1){
					unlink("imagenes/".$myrow[0]);
				}
			}
			$sql_script="delete FROM discos WHERE id=$id_to_del";
			$this->ejecuta_SQL($sql_script);
			$this->buscar("","titulo");
		}
		function introduce($id_to_edit,$ver){
			$campos=array(
					0=>array(0=>"titulo",1=>"Título",2=>40,3=>100,4=>""),
					1=>array(0=>"interprete",1=>"Intérprete",2=>30,3=>50,4=>""),
					2=>array(0=>"estilo",1=>"Estilo",2=>30,3=>50,4=>""),
					3=>array(0=>"casa_discografica",1=>"Casa Discográfica",2=>30,3=>50,4=>""),
					4=>array(0=>"formato",1=>"Formato (CD/MC)",2=>30,3=>50,4=>""),
					5=>array(0=>"duracion",1=>"Duración (min)",2=>3,3=>3,4=>""),
					6=>array(0=>"anio",1=>"Año prod.",2=>4,3=>4,4=>""),
					7=>array(0=>"imagen",1=>"Imagen",2=>15,3=>-1,4=>""));
			if($id_to_edit>0){
				$sql_script="SELECT
				titulo,interprete,estilo,casa_discografica,formato,duracion,anio,imagen
				FROM discos WHERE id='$id_to_edit'";
				$resultado=$this->ejecuta_SQL($sql_script);
				$filas=$resultado->rowCount();
				if($filas==0){
					echo "<center>
						<table border=1 width=600 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
						<tr><td align=center valign=middle>
						<font size=+2>No se encuentra ningún registro</font>
						</td></tr></table></center>";
				}else{
					$myrow=$resultado->fetch();
					for($i=0;$i<count($campos);$i++)
						$campos[$i][4]=$myrow[$i];
				}
			}
			if($ver==0)
				echo "<form name='form9' enctype=multipart/form-data method='post' action=\"index_discos.php?operacion=exec_alta\">";
				echo "<table border='0' cellspacing='10' cellpadding='0' align='center' width='600'>";
				for($i=0;$i<count($campos);$i++){
					echo "<tr><td bgcolor='blue' align=center width=140>
						<font size=-1 color='white'>".$campos[$i][1]."</font>
						</td><td>";
					if($ver==1){
						if($campos[$i][3]>-1) echo "<font size=-1><b>".$campos[$i][4]."</b></font>";
						else if($campos[$i][4]<>'') echo "<IMG src='imagenes/".$campos[$i][4].">";
						else echo "<font size=-1><b>Sin imagen</b></font>";
					}else
						if($campos[$i][3]>-1)
							echo "<input type='text' name='".$campos[$i][0]."' size='".$campos[$i][2]."' value=\"".$campos[$i][4]."\" maxlength='".$campos[$i][3]."'>";
						else
							echo "<input type='file' name='".$campos[$i][0]."' size='".$campos[$i][2]."'><input type='hidden' name='MAX_FILE_SIZE' value='80000'>";
					echo "</td></tr>";
				}//for
				echo "</table><center>";
				if($ver==0){
					echo "<input type='hidden' name='registro' value='$id_to_edit'>";
					if($id_to_edit>0)
						echo "<input type='submit' name='pulsa' value=\"Modificar disco\">";
					else
						echo "<input type='submit' name='pulsa' value=\"Alta disco\">";
				}
				echo "</center>";
				if($ver==0) echo "</form>";
		}
		function buscar($lo_q_busco,$campo_busqueda){
			$sql_script="SELECT * FROM discos
				WHERE ".$campo_busqueda." like '%".$lo_q_busco."%'
				ORDER BY ".$campo_busqueda;
			$resultado=$this->ejecuta_SQL($sql_script);
			$filas=$resultado->rowCount();
			if($filas==0){
				echo "<center>
					<table border=1 width=650 bordercolorlight='#FFFFFF' bordercolor='#FFFFFF' bgcolor='#C0C0C0'>
					<tr><td align=center valign=center>
					<h2>No se encuentra ningún registro</h2>
					</td></tr></table></center>";
			}else
				echo "<table border='0' cellspacing='1' cellpadding='1' align='center' width='650'>
					<tr>
						<th bgcolor='blue'><font color='white'>T&iacute;tulo</font></th>
						<th bgcolor='blue'><font color='white'>Int&eacute;rprete</font></th>
						<th bgcolor='blue'><font color='white'>Estilo</font></th>
						<th bgcolor='blue'><font color='white'>Casa Disco</font></th>
						<th bgcolor='blue' colspan='3'><fontT color='white'>Operaciones</font></th>
						</tr>";
					while($myrow=$resultado->fetch()){
						echo "<tr>
							<td><font size='-1'><b>".$myrow[1]."</b></font></td>
							<td><font size='-1'><b>".$myrow[2]."</b></font></td>
							<td><font size='-1'><b>".$myrow[3]."</b></font></td>
							<td><font size='-1'><b>".$myrow[4]."</b></font></td>
							<td>".boton_ficticio("Consulta","index_discos.php?operacion=introduce&ver=1&nume=".$myrow[0]."#ancla")."</td>
							<td>".boton_ficticio("Editar","index_discos.php?operacion=introduce&ver=0&nume=".$myrow[0]."#ancla")."</td>
							<td>".boton_ficticio("Borrar","index_discos.php?operacion=borrar&nume=".$myrow[0])."</td>
							</tr>";
					}
					echo "</table><p>
					<table><tr>
					<td><font color=blue size='-1'>El nº total de discos es: ".$this->nume_discos()."</font><p></td>
					</tr></table>";
		}
		function ejecuta_SQL($sql){
			$resultado=$this->db->query($sql);
			if(!$resultado){
				echo"<h3>No se ha podido ejecutar la consulta: <pre>$sql</pre><p><u> Errores</u>: </h3><pre>";
				print_r($this->db->errorInfo());
				die ("</pre>");
			}
			return $resultado;
		}
	}
?>
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